capistrano脚本失败,因为找不到测试组gem

时间:2013-04-29 17:20:05

标签: ruby-on-rails gem capistrano

我正在部署到在environment = development中运行的登台服务器。我的部署脚本失败并显示消息Could not find gem 'webmock (>= 0) ruby' in the gems available on this machine.,但我无法理解为什么脚本应该需要该gem,因为我的Gemfile只在test组中列出它。

您是否知道为什么我的登台服务器在部署期间尝试要求webmock?

我的部署脚本

以下是我的部署脚本中的命令失败:

executing ["cd /var/www/clu2/staging/releases/20130429170940 && bundle exec whenever --update-crontab staging --set environment=development --roles db"]

之前的一个命令,脚本运行bundle install,省略了test宝石:

executing ["cd /var/www/clu2/staging/current && bundle install --without=test --no-update-sources"]

我对webmock的使用仅限于测试

您可以看到我的spec_helper文件中只需要webmock:

$ grep -r webmock .
./Gemfile:  gem "webmock"
./Gemfile.lock:    webmock (1.11.0)
./Gemfile.lock:  webmock
./spec/spec_helper.rb:  require "webmock/rspec"

您可以在我的Gemfile中看到webmock被指定为测试gem:

group :test do
  gem 'spork-rails' # pre-load rails environment for faster test launches
  gem "webmock"
end

1 个答案:

答案 0 :(得分:0)

您应该在登台部署配置文件中明确设置:bundle_without配置选项(您是否使用它?如果不查看提供多级功能的capistrano-ext gem):

set :bundle_without, []

这是因为:bundle_without在生产部署中的定义如下:

set :bundle_without, [ :development, :test ]

还有一件事。

我认为您应该使用生产环境运行您的舞台机器。临时计算机通常用于模拟代码在生产中的工作方式。