【发布时间】:2014-01-31 10:47:22
【问题描述】:
我刚刚将 Rails 3.2.x 应用程序更新到 4.0.2。 当我部署到生产环境(ubuntu、MRI 2.0)时,我遇到了关于缺少 javascript 运行时的老错误。
我通过安装 node 快速修复了它,但这让我感到奇怪。
我更喜欢在本地预编译资产,将它们检入 git,然后将它们与应用程序的其余部分一起推送到生产服务器。
有了 Rails 3.2,这个系统一直让我不必关心生产环境中的 js 运行时,因为应用程序不需要编译 coffeescript 或运行丑陋的程序。
所以,问题是:Rails 4 发生了什么变化?是否有配置选项来控制此行为? 我检查了我的(rails 4)配置文件,我认为生产环境已经配置为不回退到实时编译。
资产相关的配置选项:
config/application.rb
config.assets.precompile += ['html5shim.js']
config.assets.initialize_on_precompile = false
config/environments/production.rb
# Disable Rails's static asset server (Apache or nginx will already do this)
config.serve_static_assets = false
# Compress JavaScripts and CSS
config.assets.js_compressor = :uglifier
# config.assets.css_compressor = :sass
# Don't fallback to assets pipeline if a precompiled asset is missed
config.assets.compile = false
# Generate digests for assets URLs
config.assets.digest = true
# Version of your assets, change this if you want to expire all your assets
config.assets.version = '1.0'
【问题讨论】:
-
您能否发布您的 production.rb 以便我们查看配置。您是否在 environment.rb 中指定了任何覆盖定义?
-
完成。难道是因为
config.assets.js_compressor = :uglifier? -
另外:不,在 environment.rb 中没什么特别的
-
指南建议在生产中设置
config.assets.compress = true,但这对您的问题没有帮助。您可以尝试在生产中评论js_compressor-line 吗?抱歉,我无法轻易复制。 -
不确定“配置资产”指南,但您链接的第二个网址与从 Rails 3.0 升级到 3.1 相关:-)
标签: ruby-on-rails ruby asset-pipeline