9

Bundler 文档说,为了在通过 Capistrano 部署时安装所有必要的包,只需插入

require 'bundler/capistrano' # siehe http://gembundler.com/deploying.html

在他的 deploy.rb 中。然后,在部署时,Capistrano 调用

  * executing "bundle install --gemfile .../releases/20110403085518/Gemfile \
    --path .../shared/bundle --deployment --quiet --without development test"

这工作正常。

但是,我们在生产服务器上进行了暂存设置,与真实的现场站点隔离,我们在其中使用(克隆和防火墙的)现场生产数据测试新的应用程序版本。在那里,我们需要安装测试和开发 gem。

如何在此处指定 capistrano 命令行?是否有我可以使用的参数,或者我是否需要设置自己的 capistrano 任务来覆盖 Bundler 的?

谢谢!

4

3 回答 3

19

编写不同的任务肯定会保持简单:

task :production do
  # These are default settings
  set :bundle_without, [:development, :test]
end

task :staging do
  set :bundle_without, [:test]
  # set :rails_env, 'staging'
end

但是,如果您想使用命令行选项,您可以打开提供的值:

cap deploy target=staging

在您的 deploy.rb 文件中,您可以将选项值用作:

if target == "staging"
  set :bundle_without, [:test]
  # do other stuff here
end

您还可以使用更“正确”的配置对象。我在这里找到了对它的引用:http ://ryandaigle.com/articles/2007/6/22/using-command-line-parameters-w-rake-and-capistrano

于 2011-04-03T16:46:01.243 回答
3

我认为最干净的方法是使用以下命令在部署环境文件中添加 set :bundle_without:

https://github.com/capistrano/capistrano/wiki/2.x-Multistage-Extension

于 2013-07-27T08:34:22.987 回答
0

我没有独立确认的设置,但 RAILS_ENV='development' 明白了吗?

于 2011-04-03T17:58:18.363 回答