必要に迫られて Ruby のスクリプトを作ったら、汎用化できたので
Gem にしてみました。
何ができるか?
このような 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
をご覧ください。
なぜ作ったか?
私はいわゆる 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):
全クラスのテストを追加しました。
意識して普段と違うテストにしたけど、
これで良いのだろうか…。