0

Vagrantボックスを使用しています:

https://dl.dropbox.com/u/14292474/vagrantboxes/precise64-ruby-1.9.3-p194.box

rbenvの下にruby1.9.3がインストールされています。私はRailsアプリをテストしようとしていますが、私が持っているシェフソロプロビジョナーで(とりわけ)、このブロックは次のとおりです。

execute 'install' do
  action :run
  command "bundle install --path #{node.app_name.lib_path}/vendor/bundle --binstubs"
  cwd node.app_name.path 
end

rbenvはvagrantユーザーの下にインストールされ、1.9.3をグローバルに使用するように指示されます。何らかの理由で、 vandurがvagrant up中に実行されても、/ opt/vagrant_rubyにのみある1.8.7を使用します。

rbenvrubyを使用してすべてのタスクを実行することをvagrantに伝えるにはどうすればよいですか。実行ブロックのenvオプションで何かを渡す必要がありますか?

4

1 に答える 1

0

まず、サーバーでバンドルのパスを取得します。

$ which bundle
/opt/rbenv/shims/bundle

次に、rbenv クックブックを含めたときに Chef に定数RBENV_ROOTが /opt/rbenv と等しいことを知っているので、コマンドを次のように変更します。

command "#{RBENV_ROOT}/shims/bundle install --path #{node.app_name.lib_path}/vendor/bundle --binstubs"

そのため、インストール時に正しいバージョンのバンドルを使用するようにしてください。

2 番目にできることは、chef- で使用するユーザーの ~/.bashrc の上に rbenv のパス (/etc/profile.d/rbenv に配置できますが、インストールによって異なります) を追加することです。ソロ

たとえば、「デプロイヤー」を使用している場合は、/home/deployer/.bashrc を編集してファイルの先頭に配置します。

#Rbenv path for remote shells
source /etc/profile.d/rbenv.sh    # <--- adapt this to your installation

# If not running interactively, don't do anything
[ -z "$PS1" ] && return    # <--- remote shell (ssh connection) will stop at this line
于 2013-03-31T22:22:09.480 に答える