dev.toihrk.me

ItamaeでNodebrewが入るレシピを書いた

itamae-plugin-recipe-nodebrew | RubyGems.org | your community gem host

toihrk/itamae-plugin-recipe-nodebrew

スターお願いします。

Special Thanks

rutan/itamae-plugin-recipe-rtn_rbenv

というか、モロパクリでVagrantのボックスのイメージも利用の許可を頂きました。

Itamaeのレシピを書く

DSLを定義していくイメージで、いろいろなものをItamaeが提供してくれてるので簡単に書ける。

HubotでChatopsをしようっていう思惑でNode.jsが動く環境をAWS上に立てたくて、開発環境でも使ってるNodebrewが使えたら楽だな〜という感じで作った。

Nodebrew悩みどころ

hokaccha/nodebrew

そもそもシングルユーザーで使われることを想定しているようでREADMEには$HOME以下に本体である.nodebrew が作られるようなインストールの方法が目に入る。

できれば今回のレシピではシングルユーザー用のレシピとは別に本番で使うためにシステムにrbenvみたいなイメージで/usr/local以下にインストールするレシピも書きたかった。一応環境変数でインストール先のディレクトリを変更できるようになってるみたいで、それでもどういう挙動をするのかわからなかったのでそこを検証するところから始めた。

ひとまず動いてるようには確認できたけれど、バージョンの切り替えにはパーミッションが必要なようで、そこにはsudoを使うようにserverspecで書いた。

rbenvみたいに細かな設定ができないようだけれど、そこはいいかなって印象で、ひとまず自分の使いたいように書けたので何か困ったらプルリクくれって感じ。

VagrantとBundlerでハマる

テストにはVagrantを使っていて、Vagrantの1.7.4ではBundlerの1.10.6は使えない。

Bundler 1.10.6 · Issue #6072 · mitchellh/vagrant

次のアップデートいつだよみたいな感じで、ひとまず動くようにと思ってBundlerの1.10.5をインストールしてテストは以下のように実行した。

$ bundle _1.10.5_ exec rake spec

そこでとりあえずgemspecのdependencyのバージョンも下げた。

modify gemspec bundler version · toihrk/itamae-plugin-recipe-nodebrew@a22ce3c

所感

VagrantのVMを4つも立ち上げたり殺したりしながらテストをしてたから思ったより時間がかかってしまったけれど、ちゃんとrubygemsに出せて良かった。