10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

itamae-plugin-recipeをつくるとき、lib/itamae/plugin/recipe直下に置くと困る

Last updated at Posted at 2015-02-21

前提

Itamaeのレシピプラグインをつくるときにこういう構成にしていたんです。

├ lib/
│  └ itamae/
│    └ plugin/
│      └ recipe/
│        └ rtn_XXXX.rb
├ Gemfile
├ Rakefile
└ itamae-plugin-recipe-rtn_XXXX.gemspec

vagrant-itamaeで困る

VagrantのプロビジョニングにItamaeが使えるvagrant-itamaeがあります。
で、vagrant-itamaeでRubygemsに登録されているレシピを使うときはvagrant pluginとしてレシピをインストールするのですが……

$ vagrant install itamae-plugin-recipe-rtn_rbenv
$ vagrant
Vagrant failed to initialize at a very early stage:

The plugins failed to load properly. The error message given is
shown below.

undefined local variable or method `node' for main:Object

:cry: あなたのVagrantは死んでしまった!!!!

vagrant-pluginとして読み込まれる→死!!

vagrant plugin install で入れたGemは全部requireされてるっぽい。
(プラグインだし当然の挙動)

そのため、先ほどの構成でレシピを作っていると、vagrantコマンド実行時にレシピファイルが読み込まれてしまうようだ。

itamae内以外でrequireされると困るものは require 'gem名' で読み込まれる場所に置いてはいけない:droplet:

なのでこうした

Vagrantはまだまだわからないことがいっぱいである。

参考

ありがとうございました!

追記:2015-03-24

ふと、ItamaeのIssueを見ていたらdefaultが実装されそうな予感があるので、ますます直下には置かないほうが良さそう。

追記:2015-08-30

1.4.5でdefault.rbが実装されました :tada:
プラグインgem化するときは特に関係ないかな?
https://github.com/itamae-kitchen/itamae/pull/156

また、WikiにBest Practiceが載っているので参考にするのがよさそうです。
https://github.com/itamae-kitchen/itamae/wiki/Best-Practice

追記:2015-09-26

1.5.2からはプラグインgemもdefault.rbを読み込むようになったよ。

10
9
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?