k0kubun's blog

railsへの執着はもはや煩悩の域であり、開発者一同は瞑想したほうがいいと思います。

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ということにしている。

プラグイン機構について

github.com

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

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

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

来週の話

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

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

広告を非表示にする