【问题标题】:Capistrano 2 Delayed_Job Tasks Fail To Use RBEnv Configured RubyCapistrano 2 Delayed_Job 任务无法使用 RBEnv 配置的 Ruby
【发布时间】:2014-04-19 03:37:13
【问题描述】:

使用Capistrano 2.15rbenvconfig/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


    【解决方案1】:

    好吧,事实证明,因为 :default_environment 是一个哈希,Capistrano 不一定会按顺序生成环境设置。

    使用RBENV_ROOT之前生成的PATH设置,PATH中使用的环境变量为空。

    解决方案是不依赖 PATH 中的 RBENV_ROOT:

    set :bundle_flags, "--deployment --quiet --binstubs"
    set :rbenv_root, '$HOME/.rbenv'
    # be careful, these might not play back in order written
    set :default_environment, {
        'RAILS_ENV' => 'production',
        'RBENV_ROOT' => fetch(:rbenv_root),
        'PATH' => "#{fetch(:rbenv_root)}/shims:#{fetch(:rbenv_root)}/bin:$PATH"
    }
    

    现在输出有:

     ** [out :: ex.org] RBENV_ROOT=/home/app/.rbenv
     ** [out :: ex.org] PATH=/home/app/.rbenv/shims:/home/app/.rbenv/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
    

    delayed_job 任务使用 rbenv 配置的 ruby​​ 运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-05-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-09-26
      相关资源
      最近更新 更多