2016-09 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

2016-09-29 (木)

ローカルとGistを同期する gist_updater gem を作った [Ruby][Gem][GitHub]

必要に迫られて Ruby のスクリプトを作ったら、汎用化できたので
Gem にしてみました。

gist_updater | RubyGems.org | your community gem host

RubyGems.org is the Ruby community's gem hosting service. Instantly publish your gems and install them. Use the API to interact and find out more information about available gems. Become a contributor and enhance the site with your own changes.




何ができるか?


このような YAML ファイルを用意し、gist_updater コマンドを実行する
と、ローカルの .emacs.d/init.el によって
https://gist.github.com/masutaka/8177244 がアップデートされます。

-
  - 8177244
  - .emacs.d/init.el



Gist は差分がなくても、更新するとリビジョンが増えてしまいますが、
gist_updater は差分がなければアップデートしません。

複数の Gist をアップデート対象にすることも出来ますし、1つの Gist
の複数ファイルにも対応しています。YAML なのでコメントも書けますね。

-
  # https://gist.github.com/masutaka/8177244
  - 8177244
  - .emacs.d/init.el
-
  # https://gist.github.com/masutaka/f7ce8b3c71e995c20e48
  - f7ce8b3c71e995c20e48
  - circle.yml
  - tasks/pushover.rake



ライブラリとして使うことも出来ます。詳しくは GitHub の README.md
をご覧ください。

masutaka/gist_updater

Updates your Gist files defined in YAML



なぜ作ったか?


私はいわゆる dotfiles を GitHub に置いていますが、諸般の事情により
それは private repository です。ただ、たまに人に見せたいことがある
ので、一部のファイルを Gist に置いています。

~/.emacs.d/init.el
~/.zshenv
~/.zshrc
~/bin/my-brew-bundle

https://masutaka.net からリンクを張っています。

今まではまめに手動で Gist を更新していましたが、さすがに時間のムダ
だと思ったので、gist_updater を作りました。

現在は GitHub に push すると CircleCI が走り、必要に応じて Gist が
自動アップデートされます。

雑感とか


タイミングよく『オブジェクト指向設計実践ガイド』を読んだ
[2016-09-22-1] 直後で良かったです。単一責任のクラスや DI などを意
識して設計しました。ただしテストはありません(キリッ

rubocop 先生にはだいぶ助けられました。長いメソッドは設計が間違って
いる啓示だと思い、メソッドやクラスを分けて短くしました。でもまだ全
然だと思う...。

学びがあった gem でした。

追記(2016-10-08):
全クラスのテストを追加しました。意識して普段と違うテストにしたけど、
これで良いのだろうか...。

2016-09 / 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30

最終更新時間: 2017-01-14 05:25

検索


最近の話題
- 2017-01-10
  完全に闇に落ちていた StartSSL に ¥3,603 課金してしまったお話
- 2017-01-03
  Software Design を 13 ヶ月分まとめ読みした
- 2016-12-19
  任意の Ruby オブジェクトを YAML として書く
  Ruby の $ERROR_INFO などの特殊変数は require 'English' が必要だったのか
- 2016-12-14
  不惑の年に風呂の良さを知った
- 2016-12-10
  bundle install で Your Gemfile.lock is corrupt. と怒られる件
- 2016-11-05
  yaml_vault が AWS での Rails 環境変数つらい問題を解決したと思う
- 2016-11-01
  ZenPad 3S 10 (Z500M) から始まる廃人生活
最近追記された記事
- 2015-06-07-1 (17日前)
- 2016-12-10-1 (35日前)
- 2016-11-05-1 (43日前)
- 2015-01-04-1 (51日前)
- 2016-11-01-1 (72日前)
- 2015-07-28-1 (96日前)
- 2016-09-29-1 (98日前)
- 2014-09-23-1 (179日前)
- 2016-06-07-1 (220日前)
- 2015-12-27-1 (380日前)
カテゴリ
- Anthy (3)
- Apache (11)
- Apple (1)
- ATOK (4)
- au (2)
- AWS (15)
- Bazaar (1)
- Berkshelf (2)
- BigQuery (1)
- BitBar (3)
- Book (85)
- Boxen (2)
- Bugsnag (1)
- C (26)
- capistrano (3)
- chalow (56)
- ChatWork (1)
- Chef (17)
- Chrome (3)
- Chromecast (1)
- CircleCI (7)
- Comics (2)
- Cooking (10)
- cvs (15)
- cygwin (12)
- D3.js (1)
- Debian (55)
- Docker (1)
- E-mail (8)
- elasticsearch (3)
- Emacs (219)
- Emacs講座 (10)
- English (4)
- feedforce (7)
- fetchmail (3)
- Firefox (20)
- Fluentd (4)
- ftp (1)
- Game (19)
- Gem (5)
- Git (8)
- GitHub (15)
- Go (5)
- Google (1)
- gpg (4)
- GrowthForecast (7)
- Health (2)
- Heroku (9)
- Homebrew (10)
- HTML (6)
- iBook (1)
- iPhone (14)
- IRC (1)
- Jenkins (8)
- Karabiner (1)
- KeySnail (3)
- Kibana (1)
- Kindle (1)
- Langrich (7)
- LDAP (6)
- Life (18)
- Linux (5)
- Mackerel (1)
- Mew (18)
- MongoDB (1)
- Mozilla (19)
- Music (1)
- MySQL (1)
- NAS (4)
- nginx (6)
- NHK (1)
- Node (1)
- ntp (4)
- OOP (1)
- OpenID (2)
- openssl (1)
- Opera (2)
- OSX (41)
- Perl (14)
- PHP (19)
- PostgreSQL (1)
- procmail (4)
- Programing (3)
- Puppet (1)
- Python (2)
- Rails (10)
- Rake (2)
- RaspberryPi (1)
- RedHat (29)
- Redmine (3)
- Rspec (1)
- Ruby (48)
- samba (3)
- screen (7)
- sed (5)
- serverspec (6)
- sh (8)
- Slack (2)
- Solaris9 (22)
- Spring (2)
- ssh (4)
- StatusNet (21)
- svn (12)
- Swift (1)
- Tablet (1)
- tdiary (3)
- Twitter (14)
- Twmode (6)
- Ubuntu (5)
- UNIX (102)
- vagrant (8)
- Video (21)
- vim (1)
- Wercker (9)
- Windows (29)
- Wine (3)
- XML (11)
- XP (1)
- zsh (25)
- インストールメモ (33)
- クイックシェイプ (12)
- ネタ (15)
- 勉強会 (13)
- 携帯 (6)
- 正規表現 (4)
過去ログ
2017 : 01 02 03 04 05 06 07 08 09 10 11 12
2016 : 01 02 03 04 05 06 07 08 09 10 11 12
2015 : 01 02 03 04 05 06 07 08 09 10 11 12
2014 : 01 02 03 04 05 06 07 08 09 10 11 12
2013 : 01 02 03 04 05 06 07 08 09 10 11 12
2012 : 01 02 03 04 05 06 07 08 09 10 11 12
2011 : 01 02 03 04 05 06 07 08 09 10 11 12
2010 : 01 02 03 04 05 06 07 08 09 10 11 12
2009 : 01 02 03 04 05 06 07 08 09 10 11 12
2008 : 01 02 03 04 05 06 07 08 09 10 11 12
2007 : 01 02 03 04 05 06 07 08 09 10 11 12
2006 : 01 02 03 04 05 06 07 08 09 10 11 12
2005 : 01 02 03 04 05 06 07 08 09 10 11 12
2004 : 01 02 03 04 05 06 07 08 09 10 11 12
2003 : 01 02 03 04 05 06 07 08 09 10 11 12
2002 : 01 02 03 04 05 06 07 08 09 10 11 12
2001 : 01 02 03 04 05 06 07 08 09 10 11 12
Google+