24006


Chefでrubyの環境を構築するレシピを作成しておりrbenvとrubyのインストールまではできましたがgemのインストールがうまくいきません。  
まだ`bundler`をインストールしていないのにも関わらず`* bash[install bundler] action run (skipped due
to not_if)`と表示されてしまいます。

下記にレシピの当該箇所を抜粋します。

[code]

    bash 'install bundler' do
      user 'test_user'
      group 'test_user'
      cwd '/home/test_user'
      environment 'HOME' => '/home/test_user'
      code <<-EOC
        source ~/.bash_profile
        gem install bundler
      EOC
      not_if 'gem list | grep bundler', :environment => { 'HOME' => '/home/test_user'}
    end
    
[/code]


CC BY-SA 3.0
2016-04-11T06:05:07.857
23908
2016-04-14T07:41:07.307
12232
question
chef
Chefでnot_if条件が実行されない


`code`では `.bash_profile` を読み込んでますが `not_if` のところでは読み込んでいないので
それが影響している可能性があります。

次のように明示的に `.bash_profile` を読み込んでください。

[code]

    bash 'install bundler' do
      user 'test_user'
      group 'test_user'
      cwd '/home/test_user'
      environment 'HOME' => '/home/test_user'
      code <<-EOC
        source ~/.bash_profile
        gem install bundler
      EOC
      not_if 'source ~/.bash_profile; gem list | grep bundler', :environment => { 'HOME' => '/home/test_user'}
    end
    
[/code]


CC BY-SA 3.0
2016-04-14T07:41:07.307
24006
2016-04-14T07:41:07.307
5008
23908
answer