5

スラッグ コンパイル中にアセットが問題なくコンパイルされるという問題に対処しています。しかし、ステージング アプリケーションと本番アプリケーションの両方にプッシュした後、昨日から、何らかの理由でアセットを読み込めないことをブラウザが示しているという問題が発生しています。

ブラウザー開発ツールを使用すると、次のエラーが表示されます: リソースの読み込みに失敗しました: サーバーは 404 (見つかりません) のステータスで応答しました: /assets/application-a3b17e738ce8996d058795310e3cd9b4.js

最初に決定したことは、コードベースを最後のコミット (以前の heroku プッシュで完全に機能していたコミット) にロールバックすることでした。ブラウザーがアセットを読み込めない場合にも、同じ問題が存在します。

bash を使用して、heroku インスタンスに接続し、public/assets ディレクトリをチェックアウトして、アセットが実際にそこにあることを確認しました。それらはすべて、ファイル名の前に正しいハッシュ コードが付いています。ファイルは空ではなく、マニフェスト ファイルは正常に動作しているようです。この時点で他に何を試すべきかわかりません。アセットの読み込みに関して、これまで問題が発生したことはありません。heroku プッシュ ログには、任意の時点で何かがエラーをスローしていることを示すものは何もありません。

4

1 に答える 1

4

同じ問題がありました。rails_12factorプロダクションgem(私のGemfile)にgemを含めた後、修正されたようです。この Heroku サポートページの最初の部分を読んだ後、これを見つけました: https://devcenter.heroku.com/articles/rails4

ロギングとアセット

Heroku はログをストリームとして扱い、ログを STDOUT に送信する必要があります。Rails 4 で STDOUT ロギングを有効にするには、 rails_12factor gem を追加します。この gem は、本番環境でアセットを提供するようにアプリを構成することもできます。この gem を追加するには、これを Gemfile に追加します。

gem 'rails_12factor', group: :production

この gem を使用すると、アプリケーションを 12factor アプリケーションに近づけることができます。gem がロギングを構成する方法とアセットについての詳細は、rails_12factor README を参照してください。この gem がアプリケーションに存在しない場合、デプロイ中に警告が表示され、アセットとログが機能しなくなります。

「rails_12factor」gem には、rails_serve_static_assetsgem およびrails_stdout_logging. 基本的に、アセットを提供するためだけにRailsアプリがリクエストの処理に貴重なサイクルを使用したくない場合は、CDNなどの別のソリューションを見つける必要があります: https://devcenter.heroku.com/articles/ using-amazon-cloudfront-cdn-with-rails

于 2013-12-06T21:27:14.067 に答える