为了账号安全,请及时绑定邮箱和手机立即绑定

为什么Rails4在Gemfile中放弃对“资产”组的支持

为什么Rails4在Gemfile中放弃对“资产”组的支持

函数式编程 2019-12-21 10:57:04
在Rails 3中,专门用于在资产管道中生成资产的gem被正确放置在assetsGemfile组中:...# Gems used only for assets and not required# in production environments by default.group :assets do  gem 'sass-rails'  gem 'coffee-rails'  gem 'uglifier'  # See https://github.com/sstephenson/execjs#readme for more supported runtimes  # gem 'therubyracer', :platforms => :rubyend现在,根据(仍在进行中的)升级文档:Rails 4.0从Gemfile中删除了资产组。升级时,您需要从Gemfile中删除该行。当然,使用RC1进行新项目会产生一个Gemfile,其中默认包含任何组之外的资产相关的gem:source 'https://rubygems.org'# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'gem 'rails', '4.0.0.rc1'# Use sqlite3 as the database for Active Recordgem 'sqlite3'# Use SCSS for stylesheetsgem 'sass-rails', '~> 4.0.0.rc1'# Use Uglifier as compressor for JavaScript assetsgem 'uglifier', '>= 1.3.0'# Use CoffeeScript for .js.coffee assets and viewsgem 'coffee-rails', '~> 4.0.0'# See https://github.com/sstephenson/execjs#readme for more supported runtimes# gem 'therubyracer', platforms: :ruby...这是否意味着这些宝石现在将默认捆绑在生产版本中?如果是这样,为什么会改变主意?Rails 4是否正在朝着生产中动态生成资产的方向迈进?
查看完整描述

3 回答

?
拉莫斯之舞

TA贡献1820条经验 获得超10个赞

以前,资产组的存在是为了避免生产中意外进行按需编译。由于Rails 4不再具有这种行为,因此删除资产组是有意义的。


在更改了该内容的提交中对此进行了更详细的说明。我用实际答案提取了一些引号。


如果您使用的是咖啡模板,则可能需要(生产中的)一些宝石,例如咖啡轨,并且现在不再按需在生产中预编译资产这一事实。


(不是在生产中按需进行预编译)意味着,如果您在3.2.x的生产环境中拥有该gems而忘记进行预编译,则Rails将完全按照其在开发中的工作进行操作,并预编译所请求的资产。在Rails 4中,情况不再如此,因此,如果您不使用任务对资产进行预编译,则在请求资产时将获得404。


查看完整回答
反对 回复 2019-12-21
  • 3 回答
  • 0 关注
  • 615 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信