Capistrano:使用标准Gem-Home的Bundle Gems

时间:2011-01-26 18:30:16

标签: ruby capistrano bundler

使用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

4 个答案:

答案 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)

http://paulgoscicki.com/archives/2011/10/tell-bundler-to-install-gems-globally-when-using-capistrano/

答案 2 :(得分:2)

你可以告诉bundler gem应该去哪里(或者我相信)并传递--local来安装本地gem缓存而不是从http://rubygems.org

获取
bundle install --local --path='/some_path/.gem

答案 3 :(得分:1)

这是从Syck到Psych的YAML引擎切换的表现以及它带来的所有不兼容性。问题是现在你必须重新安装所有的宝石,因为所有已安装的宝石都有错误的gemspec规范。