【问题标题】:Capistrano: use Bundle Gems from standard Gem-HomeCapistrano:使用来自标准 Gem-Home 的捆绑宝石
【发布时间】:2011-01-26 18:30:15
【问题描述】:

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

【问题讨论】:

    标签: ruby capistrano bundler


    【解决方案1】:

    如果你在做

    require 'bundler/capistrano'
    

    把这个放在 deploy.rb 中设置 bundle install 的 --path arg:

    set :bundle_dir, "/path/to/gems"
    

    【讨论】:

      【解决方案2】:

      这是我在config/deploy.rb 中告诉捆绑程序将 gem 安装到“系统”gem 中的内容:

      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/

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          【解决方案4】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2015-07-17
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-12-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多