Rails / Bundler预编译与延迟编译
在Rails应用config/application.rb
的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
我可能不清楚Bundler.require
正在做什么。 我的印象是它需要Gemfile中的指定部分,但我不清楚为什么Bundler.require *Rails.groups(...)
导致它预编译和Bundler.require(...)
导致懒惰的资产。
这些行实际上并未改变资产的使用方式。
第一行,
Bundler.require *Rails.groups(:assets => %w(development test))
仅在开发和测试环境中从assets
组加载gem。 这意味着sass-rails
和uglifier
类的东西将无法在生产中使用,这意味着如果您正在使用那些,那么您将无法正常编译/缩小/生产中的任何资产。gem。
另一方面,
Bundler.require(:default, :assets, Rails.env)
将在任何环境中加载assets
组,使生产中的这些gem可以进行资产编译/缩小/随时随地。
因此,如上所述,这些行实际上并不会改变资产管道的行为 – 它只是意味着如果您要将资产预编译用于生产,则应使用第一行,或者如果您要进行生产,则使用第二行在生产中懒洋洋地编译。
- 如何使用Video.js播放Youtubevideo?
- gem和插件有什么区别?
- 使用虚假数据生成Paperclip图像上传 – Ruby on Rails Populator / Faker Gems
- 连接到gmail时,rails 3.1.0.rc5中的Net :: SMTPAuthenticationError
- rake gem问题:安装
- Rails STI:如何更改“类型”列的类名和值之间的映射
- Rails 4 + Devise:无效的路由名称,已在使用中
- 在dreamhost问题上部署Rails应用程序
- Rails教程(M.Hartl)第3版,第8章,如何通过关闭流氓`rails console`来解锁数据库?