35851


itamaeを使って環境構築を行っております。  
普通には動かせるようになってはいるのですが、一点だけinclude_recipeにもnot_ifを付けて、すでにインストールされていたら、include_recipeを実行しないという方法がわからずに、質問させて頂きました。

[code]

    include_recipe 'rtn_rbenv::user' do
        not_if "rails -v"
    end
    
[/code]

やりたい事のイメージは、こんな感じの事です。  
エラーにはならないのですが、include_recipe が実行されてしまいます。

自作のレシピであれば、インクルードされる側で対応すれば良いのですが、プラグインなどで配布されているものをスキップ出来ればと思いましたので。

お忙しい中大変恐縮ではございますが、ご存知の方がいらっしゃいましたら、ご教授頂けますと幸いでございます。  
よろしくお願い致します。


CC BY-SA 3.0
2016-07-20T04:40:10.150
27744
2017-06-24T07:30:47.137
8755
question
itamae
itamaeでinclude_recipeにもnot_ifを指定する方法


ちょうど同じ悩んでいます。  
調べてみたら、[`run_command`](https://github.com/itamae-
kitchen/itamae/wiki/run_command)
で対象サーバー上でコマンド実行し、結果を取得できるので、それを活用すれば、なんとかできると思います。

[code]

    # error: falseオプションが必須です。
    # オプションがない場合、railsがなかったらそこでエラーになり、itamaeが止まってしまいます
    
    result = run_command('rails -v', error: false)
    
    # railsコマンドを見つからなかった場合は、exit_statusが127になる
    include_recipe 'rtn_rbenv::user' if result.exit_status != 0
    
[/code]


CC BY-SA 3.0
2017-06-24T07:30:47.137
35851
2017-06-24T07:30:47.137
4163
27744
answer