使用Capistrano进行部署时,我想使用已安装的gem,而不是将它们安装到vendor
中。
Capistrano似乎忽略了.gemrc
& .bashrc
,所以我在deploy.rb
中尝试了这个:
require 'bundler/capistrano'
set :default_environment, {
'GEM_HOME' => '/some_path/.gem',
'GEM_PATH' => '/some_path/.gem',
'BUNDLE_PATH' => '/some_path/.gem'
}
我的宝石位于/some_path/.gem/gems
,bin:/some_path/.gem/bin
。
答案 0 :(得分:3)
如果你正在做
require 'bundler/capistrano'
将它放在deploy.rb中以设置bundle install's --path arg:
set :bundle_dir, "/path/to/gems"
答案 1 :(得分:3)
以下是我在config/deploy.rb
中告诉捆绑商将宝石安装到“系统”宝石中的内容:
require "bundler/capistrano"
set :bundle_dir, "" # install into "system" gems
set :bundle_flags, "--quiet" # no verbose output
set :bundle_without, [] # bundle all gems (even dev & test)
答案 2 :(得分:2)
你可以告诉bundler gem应该去哪里(或者我相信)并传递--local来安装本地gem缓存而不是从http://rubygems.org
获取bundle install --local --path='/some_path/.gem
答案 3 :(得分:1)
这是从Syck到Psych的YAML引擎切换的表现以及它带来的所有不兼容性。问题是现在你必须重新安装所有的宝石,因为所有已安装的宝石都有错误的gemspec规范。