Itamaeのmruby実装「mitamae」が大体いい感じになった話

Roppongi.rb #2 で「mitamae」について話してきた

Roppongi.rb #2が "Infrastructure x Ruby" をテーマに開催され、そこで RubyなしでItamaeレシピを実行できる「itamae-go」を作った - k0kubun's blog 話と pure mrubyで実装されたItamae「itamae-mruby」を作った - k0kubun's blog 話をしてきた。

いいたかったことはスライドの通りだけど、枠が15分でいろいろ漏れた話を書いておく。

mitamaeの現状について

なんでitamae-mrubyからMItamaeに変えたの

というか一昨日までmitamaeはitamae-mrubyという名前だった。エエー。変えた理由は真面目な奴がいくつかあるんだけど、あえて不真面目な奴だけ書くと、名前が微妙なソフトウェアは流行らない気がしていて、itamae-goよりitamae-mrubyの方が筋が良いのにitamae-goの方がウケが良かったので、名前を変えてみることにした。

ちなみに僕はリネームの常習犯で、Hamlitは元々違う名前だったし、activerecord-precountは最初にrubygemsにプッシュしてから3回リネームしているし、他にもいろいろやらかしているので、mitamaeもあと2回くらい変身の可能性を残している。

原案はmrubyで何かとお世話になっているksssさんの発言なんだけど、mitamaeだと「見給え感」が強すぎるのでMItamaeということにしている。 v1.6.3 からmrubyと合わせてログやドキュメント上の表記をMItamaeからmitamaeに変更にした。*1

プラグイン機構について

github.com

resourceプラグインをサポートした。社内でItamaeになってる奴をスッとmitamaeにしようとした時に、portageとかはプラグイン化したいみたいなことを言われたのでサポートした。

で、まあmrubyを使う以上rubygemsは利用できないので考える必要があって、普通にmrbgemを使うとプラグインを組み込む度にmitamaeをコンパイルし直すという話になるのだけど、シングルバイナリで配布してる意味が薄れるので、pluginsディレクトリにmrbgemと同じディレクトリ構造 *2Rubyスクリプトを置いておくと動的にロードされるようにした。

なので、リポジトリにgit submoduleでプラグインをいれるか、最悪vendoringするというのが想定された使い方になっている。これに関してはいろんな人の意見を聞いてみたい。

来週の話

今日はItamaeを軸に話をしたけど、来週の金曜にitamae-go, mitamaeを題材にしつつmrubyを使う側を軸にRubyConfで登壇するので、興味がある人はシンシナティで僕と握手。

*1:内部クラスに使われているMItamae表記で呼んでいただいても問題ないです

*2:具体的には ./plugins/*/mrblib/**/*.rb がファイル名順に読まれます