4

私は Vagrant で puppet を使用していますが、rbenv を使用して Ruby インストールをセットアップする際にいくつか問題があります。

Ruby は正常にインストールされています (私はプラグインを使用しています: https://forge.puppetlabs.com/jdowning/rbenvを使用してruby​​ + gems をインストールします:

rbenv::plugin { 'sstephenson/ruby-build': } ->
rbenv::build { '1.9.3-p392': global => true } ->
rbenv::gem { 'bundler': ruby_version => '1.9.3-p392' } ->

ただし、これを実行した後、Puppet は rbenvs shim フォルダーの下に bundler コマンドを見つけることができません。rbenv rehash イベントを確認できます。プラグインのマニフェストを調べると、実行後や gem のインストール後にバイナリを再ハッシュする必要があることがわかります。

マシンに ssh すると、「どのバンドラー」がバイナリへのパスを見つけます。同様に、パペット スクリプトを再実行すると正しく機能し、すべて正常にインストールされます。

現時点では、次のコマンドを使用しています。

exec { "bundle install":
    user => $app_user,
    group => $app_group,
    command => "bundle install",
    path => [ '/bin/', '/sbin/', '/usr/bin/', '/usr/sbin/', "/home/${app_user}/.rbenv/bin/", "/home/${app_user}/.rbenv/shims/" ],
    cwd => $app_root,
} ->

私が知っている道はやり過ぎです。

次に試すことができるアイデアはありますか?私はアイデアがありません。

4

1 に答える 1

0

bundler を実行する前に、すべての gem セットアップが完了していることを確認することが重要です。

exec { "bundle install": require => Rbenv::Gem["..."], ... }

そうしないと、実行後に再ハッシュ リソースが評価される可能性があります。

于 2014-04-04T09:16:53.437 に答える