我正在部署到在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
答案 0 :(得分:0)
您应该在登台部署配置文件中明确设置:bundle_without
配置选项(您是否使用它?如果不查看提供多级功能的capistrano-ext
gem):
set :bundle_without, []
这是因为:bundle_without
在生产部署中的定义如下:
set :bundle_without, [ :development, :test ]
还有一件事。
我认为您应该使用生产环境运行您的舞台机器。临时计算机通常用于模拟代码在生产中的工作方式。