0

我正在部署到在 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,省略了testgem:

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

我对 webmock 的使用仅在测试中

您可以看到 webmock 仅在我的 spec_helper 文件中是必需的:

$ 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
4

1 回答 1

0

您应该在暂存部署配置文件中显式设置:bundle_without配置选项(您使用它吗?如果不看一下capistrano-ext提供多阶段功能的 gem):

set :bundle_without, []

那是因为:bundle_without在生产部署中是这样定义的:

set :bundle_without, [ :development, :test ]

还有一件事。

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

于 2013-04-29T18:36:47.227 回答