1

私のアプリには、次のconfig/environments/production.rbように定義されたいくつかの追加のマニフェスト ファイルがあります。

config.assets.precompile += %w( www.js sessions.js embed.js www.css sessions.css embed.css )

これらは開発モードではローカルで正常に動作しますが、私のカスタム Heroku ステージング環境では、ヘルパーstyle_sheet_link_tagjavascript_include_tagヘルパーが結合されたファイルにフィンガープリントを追加しないため、これらのアセットが 404 エラーを返します。

style_sheet_link_tagforによって生成されるものの例を次に示し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 にアップグレードした後では動作しません。では、それを機能させるにはどうすればよいのでしょうか?

4

1 に答える 1

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 )

stagingHeroku 上のステージング アプリが環境の設定を読み込むため、この問題が表面化したようです。

# By running `heroku config`
RACK_ENV:  staging
RAILS_ENV: staging

どうやら、Heroku 上の Rails 4rake assets:precompileはこのstaging環境で実行されます (一方、Rails 3.2.14 はproduction何からでもロードされます)。そのため、config.assets.precompile設定も取得する必要がありstagingます。

于 2013-08-24T19:38:47.063 に答える