【问题标题】:How do I configure Capistrano to use a different gemset for staging and production environments?如何配置 Capistrano 以将不同的 gemset 用于暂存和生产环境?
【发布时间】:2012-12-22 17:00:15
【问题描述】:

我在服务器上有两个文件,一个在每个环境的共享目录中,名为 rvmrc。这包含用于生产的rvm use ree-1.8.7-2012.02@appname-production --create 和用于暂存的rvm use ree-1.8.7-2012.02@appname-staging --create。这应该允许应用程序在其自己的 gemset 下运行,因为我已经在部署脚本中构建了一个任务,以将相应的shared/rvmrc 文件链接到应用程序中作为.rvmrc。该任务显示在下面,在我的 deploy.rb 示例中。

不过,我仍然需要让 bundler 在部署期间使用正确的 gemset。我想我可以通过使用set :rvm_ruby_string, "ree-1.8.7-2012.02@appname-#{rails_env}"rvm_ruby_string 动态设置为环境的gemset 来做到这一点。但是,我发现我的部署只使用了生产 gemset - 即使在使用 cap staging deploy 时也是如此。

请参阅this question 了解更多关于我尝试此方法的思考过程(如果您认为这只是一个坏主意,请加入)。

我需要进行哪些更改才能让我的部署使用基于环境的正确 gemset?

在我的部署文件中,我拥有的相关行(我已经删除了很多)是:

require 'rvm/capistrano'
require 'capistrano/ext/multistage'
require 'bundler/capistrano'

set :stages, %w(staging production)
set :default_stage, "staging"
set :rvm_ruby_string, "ree-1.8.7-2012.02@appname-#{rails_env}"
set :rvm_type, :system
set :bundle_without,  [:development]

namespace :deploy do
  task :rvmrc do
    run "rm #{latest_release}/.rvmrc; ln -s #{shared_path}/rvmrc #{latest_release}/.rvmrc"
  end
end

before "bundle:install", "deploy:rvmrc"

在我的 production.rb 文件中,我拥有的相关行(我已经删除了很多)是:

set :branch, "master"
set :rails_env, "production"

在我的 staging.rb 文件中,我拥有的相关行(我已经删除了很多)是:

set :branch, "staging"
set :rails_env, "staging"

【问题讨论】:

    标签: ruby-on-rails rvm capistrano bundler


    【解决方案1】:

    您可以在启动应用程序时设置 ruby​​ 版本和 gemset。 IE。使用rvm wrappers,因为它在链接中描述为与上帝一起使用。这种方式不需要 .rvmrc 符号链接杂耍。

    即,如果您使用的是 Unicorn,请创建一个包装器:

    rvm use ree-1.8.7-2012.02@appname-production
    rvm wrapper ree-1.8.7-2012.02@appname-production ree187prod unicorn
    

    这给了你 ~.rvm/bin/ree187prod_unicorn。在您的启动脚本中使用它而不是独角兽。 Unicorn 然后将使用正确的 ruby​​ 版本和 gemset。

    【讨论】:

      猜你喜欢
      • 2017-01-30
      • 2011-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-17
      • 1970-01-01
      • 1970-01-01
      • 2015-08-03
      相关资源
      最近更新 更多