【问题标题】:Rails bundler doesn't install gems inside a groupRails bundler 不会在组内安装 gem
【发布时间】:2011-05-06 07:21:28
【问题描述】:

我在一个名为 :development 的捆绑程序组中有几个 gem,包括 ruby​​-debug。当我运行 bundle 命令时,这些 gem 将被忽略,它只安装不在任何组中的 gem。如何确保捆绑器不会忽略 :development 组中的宝石?

编辑:这就是我的 Gemfile 的样子。

source 'http://rubygems.org'
gem 'rails', '3.0.1'

# Auth gems
gem "devise", "1.1.3"
gem "omniauth"

# Bundle Mongoid gems
gem "mongoid", "2.0.0.beta.19"
gem "bson_ext"

# Asset gems
gem 'jquery-rails'
gem "jammit"

# Controller gems
gem 'inherited_resources', '1.1.2'

# View gems
gem 'haml'
gem 'formtastic', '~> 1.1.0'

# Nokogiri
gem "mechanize"
gem "json"


group :development do
  gem "ruby-debug"
  gem 'compass'
  gem 'compass-colors'
  gem 'pickler'
  gem 'haml-rails'
  gem 'rails3-generators'
  gem "hpricot"
  gem "ruby_parser"
  gem 'fog'
end

【问题讨论】:

  • 是的,检查过。 Rails.env 表示开发。
  • 还有一件事。我之前使用过这个命令,因为 Heroku 没有排除那些 gem: heroku config:add BUNDLE_WITHOUT="development test" 不过这对 Heroku 没有任何影响。 mail-archive.com/heroku@googlegroups.com/msg06114.html

标签: ruby-on-rails ruby rubygems bundler


【解决方案1】:

如果您使用的是 rails,则会有一个文件 config 写入到您的 rails 根目录中名为 .bundle 的隐藏目录中:

.bundle/config

在我的例子中,这个文件恰好包含 without 设置。

所以我刚刚删除了.bundle目录:

rm .bundle -r

之后:

bundle install 再次按预期工作。

Using: bundler (1.5.2)

【讨论】:

    【解决方案2】:

    当我检查我的.bundle/config 时,我遇到了与bundler 2.1.4 相同的问题

    ---
    BUNDLE_PATH: "vendor/bundle"
    BUNDLE_WITHOUT: "development:test:build"
    

    从那里删除组并将BUNDLE_WITH 添加到您的组。

    BUNDLE_WITH: "development"
    

    我删除了~/.bundle/config。但是我的项目目录中有一个文件。 .bundle/config。本地目录文件优先于主配置文件。

    如果你不能找出原因,那么你可以在你的项目目录中创建一个文件.bundle/config。并在此处添加此内容

    BUNDLE_WITH: "development:test:anyGroupYouWant"
    

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题,--with 标志对我有用。您需要传递要包含的组名。像这样:

      bundle install --with development
      

      【讨论】:

      • 请在您的帖子中添加更多描述。究竟如何帮助解决问题中提到的问题
      【解决方案4】:

      在学期会话中,它会记住without 选项。如果你第一次跑

      bundle install --without development 
      

      它会记住你这样做了,并会在下一次自动重复这个

      bundle install #remembers and includes --without development
      

      运行其他东西,比如bundle install --without nothing 应该清除缓存。我说的对吗?

      更新 20150214: 根据@Stan Bondi (https://github.com/bundler/bundler/issues/2862) 评论中引用的问题,此问题已在 bundler 2.0 中得到修复。谢谢斯坦。

      【讨论】:

      • 这个保存结束了我的挫败感!!!做rm .bundle/config是最好的清除缓存的方法。
      • 刚刚被这个咬了。命令行标志应该是无状态的。
      • 谢谢你...我生命中的两个小时我再也回不来了。
      • 谢谢!提出了一个问题(哇 3 年后!)github.com/bundler/bundler/issues/2862
      • 一个重要的救生员!!
      【解决方案5】:

      我有一个类似的问题 - 分期被忽略 - 如果分期进入“全局”空间,解决方案是把它拿出来:

      gem 'thin'
      
      group :production do
        gem 'puma'
      end
      

      【讨论】:

        【解决方案6】:
            gem 'aws-s3'
            gem 'paperclip'
              group :test do
                gem 'rspec'
                gem 'waitr'
                gem 'faker'
              end
        
        gem 'rest-client', :group => :development
        gem 'cucuber-rails', :groups => [:development,:test]  (cucuber-rails gems comes under both group)
        
        bundle install --without development #(ignore development group gems)
        bundle install #(still bundle remembers --without development so result is still ignore development groups it will not install all gems)
        
        bundle install --without nothing #(just clearing cache, now all the gems to be loaded into the ruby loadpath)
        

        More

        【讨论】:

          【解决方案7】:

          事实上,Rails 在开发环境中会自动加载:development 组。检查你App中的Rails.env是否真的返回"development"

          有关 Bundler 中组的更多信息: http://gembundler.com/groups.html

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2019-01-07
            • 2014-03-02
            • 2021-08-27
            • 1970-01-01
            • 2014-10-09
            • 2013-02-15
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多