Rails 捆绑安装仅生产

Posted

技术标签:

【中文标题】Rails 捆绑安装仅生产【英文标题】:Rails bundle install production only 【发布时间】:2012-06-10 08:58:59 【问题描述】:

我对 rails/ruby/bundler 还是新手,有点困惑。

在我们的config/application.rb 文件中有这个捆绑程序段:

if defined?(Bundler)         
  # If you precompile assets before deploying to production, use this line
  Bundler.require(*Rails.groups(:assets => %w(development test)))
  # If you want your assets lazily compiled in production, use this line
  # Bundler.require(:default, :assets, Rails.env)
end

在我们的Gemfile 中,我们使用不同的组,例如

group :development, :test do
  gem "rspec-rails", ">= 2.7.0", :group => [:development, :test]
  gem 'shoulda-matchers'
  gem 'watchr'
  gem 'spork', '~> 1.0rc'
  gem 'spectator'                          
  gem 'debugger'
  gem 'wirble'
end

但是当我运行RAILS_ENV=production bundle install(或bundle install --deployment)时,它仍然会从开发/测试组安装gem...

为什么会发生这种情况,或者我怎样才能使它正常工作?

【问题讨论】:

【参考方案1】:

另一种解决方案是使用bundle-only ruby gem。可以这样使用:

> gem install bundle-only
> bundle-only production

这个库不会污染你的捆绑器配置或增加Gemfile.lock;它是bundler 提供的内置bundle --without every other group 选项的简单替代方案。

【讨论】:

【参考方案2】:

看看--without选项:

bundle install --without development test

默认情况下,Bundler 会安装所有 gem,您的应用程序会使用它需要的 gem。 Bundler 本身对 Rails 和当前环境一无所知。

【讨论】:

我知道--without,但它看起来很不优雅,特别是考虑到config/application.rb 中的那些配置指令(应该正好解决这个问题)并且还考虑到这句话:Rails 3 comes with baked in support with bundler. Bundle install 命令完全独立于 Rails。它只是查看您的 Gemfile,它并不关心您的应用程序在上述配置中实际需要哪些库。实际上,您可以跳过 Bundler.require 并手动从任何组中要求库。我同意,Rails 在这种情况下可以与 Bundler 更好地集成,但事实并非如此。 我明白了。所以我想可以公平地说,rails 知道 bundler(即在config/application.rbconfig/boot.rb),但是 bundler 对 rails 一无所知......它只读取 Gemfile 并且不使用其中任何一个轨道文件。我想硬币终于掉了。感谢您的帮助! 实际上这看起来很优雅,因为它排除了 Gemfile 中的“组”,而不是 Rails 应用程序中的环境。我知道有人这么说,但当我这样想时,它对我来说更有意义。 不确定这是否在过去四年中发生了变化,但--without 的参数应该用:s 分隔,而不是空格。所以我认为应该是bundle install --without development:test

以上是关于Rails 捆绑安装仅生产的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 webpack 捆绑 puppeteer 进行生产部署?

Rails 生产环境中的 config.assets.compile=true,为啥不呢?

Karaf - Kafka OSGI 捆绑包 - 生产者问题

生产模式下 webpack 捆绑的 Swagger UI Express 插件问题

i18n rails 4 生产错误。不是发展

生产中的资产管道问题:CDN中未显示图像