4

Rails 3.2.8 で開発しています。面倒なことの 1 つは、イメージが誤って欠落している場合、プロダクション モードでエラーが発生することです。

次のコードを入れたとしましょう。

そして、実際には my.jpg ファイルを app/assets/images に配置するのを忘れています。開発では問題ありません (ブラウザーは不足している画像を無視します) が、本番モードでは Rails エラーが発生します。

展開前に不足しているファイルを見つけるにはどうすればよいですか?

ありがとう。

サム

4

2 に答える 2

1

デプロイ用の新しいリリースをビルドするときに私が行うことは、私のconfig/environments/test.rb

config.assets.compile = false
config.assets.digest  = true

これは、アセット パイプラインの環境構成を模倣しproduction、アセットがコンパイルされないようにし、manifest.ymlファイル/アセット パイプラインを介してルックアップを強制します。テストを実行し (テストはありますよね? :-) )、失敗を監視します。

テストがない場合log/development.logは、500 エラーをgrep してください

tail -f log/development.log | grep 500

いくつかのページを手動で移動し、末尾に表示される新しいログ エントリを監視します。ただし、これを自動化するためのテストを作成することを検討する必要があります。


本番環境でエラーが表示される理由は、アセット パイプラインがリクエストしているアセットを見つけることができず、これが原因で例外が発生するためです。開発中は、500 エラーに優先してデバッグ情報を提示できるように、より寛大です。環境で上記の構成を変更することにより、アセット パイプラインを介して欠落しているアセットへの応答に関して厳密に動作するように Rails に指示し、本番環境に移行する前に問題をキャッチできるようにします。

于 2012-12-09T00:37:02.137 に答える
-1

開発モードで実行されている Rails コンソールを見ることができます...イメージが見つからない場合は警告が表示されます。

また、ブラウザのエラー コンソールを使用します。どちらも不足しているものを教えてくれるので、画像を配置した (または配置しなかった) 場所を確認するために grep または視覚的な検索を開始します。

オブジェクトや参照が欠落しているコードを実際にロールアウトしたい場合を除き、実稼働サーバーが開発時よりも壊れたコードに優しくないことがなぜ迷惑なのかわかりません。

于 2012-12-09T00:31:03.277 に答える