【发布时间】:2014-04-19 03:37:13
【问题描述】:
使用Capistrano 2.15 和rbenv,config/deploy/production.rb 有:
set :bundle_flags, "--deployment --quiet --binstubs"
set :default_environment, {
'RAILS_ENV' => 'production',
'RBENV_ROOT' => "$HOME/.rbenv",
'PATH' => "$RBENV_ROOT/shims:$RBENV_ROOT/bin:$PATH"
}
在 config/deploy.rb 中有一个任务来测试 ruby 环境和版本:
# Test Ruby Environment
desc "Test Ruby Environment"
task :test_ruby_environment, :roles => :app do
run "env; ruby -v"
end
cap test_ruby_environment 的输出省略了 PATH 中的 $RBENV_ROOT 目录:
** [out :: ex.org] RBENV_ROOT=/home/app/.rbenv
** [out :: ex.org] PATH=/shims:/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
当我需要 ruby 时,delayed_job (3.0.5) 守护程序正在运行系统 ruby 由 rbenv 配置。这方面的证据在延迟作业的错误跟踪中:
/home/app/shared/bundle/ruby/1.8/gems/delayed_job-3.0.5/lib/delayed/backend/base.rb:95:in `invoke_job'
其中显示了系统安装的 1.8 gem 源代码。
为什么这不会提取 rbenv 配置的 ruby?
【问题讨论】:
标签: ruby capistrano rbenv