我在config/environments/production.rb
中定义的应用中有一些额外的清单文件,如下所示:
config.assets.precompile += %w( www.js sessions.js embed.js www.css sessions.css embed.css )
这些在开发模式下本地工作正常,但在我的自定义Heroku登台环境中,style_sheet_link_tag
和javascript_include_tag
帮助程序不会向组合文件添加指纹,导致这些资产返回404错误。
以下是style_sheet_link_tag
为www.css
生成的内容示例:
<%# Look ma, no fingerprint! %>
<link href="//s3.amazonaws.com/my-bucket-name/stylesheets/www.css" media="all" rel="stylesheet" />
以下是app/assets/stylesheets/www/index.css
的文件:
/*
*= require_self
*= require www/foundation_and_overrides
*= require mediaelement_rails
*= require mediaelement_rails/mejs-skins
*= require www/base
*= require www/icons
*= require www/header
*= require www/footer
*= require www/home
*= require www/help
*/
这在Rails 3.2.14中正常运行,但在升级到Rails 4.0.0之后没有。那么我必须做些什么才能使其发挥作用呢?
答案 0 :(得分:0)
解决方案是将config.assets.precompile
设置复制到config/environments/staging.rb
或将其移至config/application.rb
。
# Now in `config/application/rb` so it's loaded in both `production` AND `staging` environments
config.assets.precompile += %w( www.js sessions.js embed.js www.css sessions.css embed.css )
看来这个问题浮出水面是因为我在Heroku上的暂存应用程序加载了staging
环境的设置:
# By running `heroku config`
RACK_ENV: staging
RAILS_ENV: staging
显然,Heroku上的Rails 4为rake assets:precompile
环境运行staging
(而Rails 3.2.14从production
加载,无论如何)。因此,config.assets.precompile
设置也需要在staging
中获取。