私は Rails 3.1 に慣れてきたばかりで、古いプロジェクトを更新し、新しいアセット パイプラインが開発モードと本番モードでどのように動作するかを解明しようとして時間を費やしました。
デフォルトconfig.assets.precompile
設定はapplication.cssとapplication.jsのみをブレスし、すべてを単一のスタイルシートと単一の JavaScript ファイルとして提供することを意図しています。
明らかに、それが望ましくない状況があるため、その構成変数のリストに項目を追加できます...
本番環境に移行するときにサンドボックス プロジェクトで遭遇した状況は次のとおりです。
- 開発中のサイトを閲覧したところ、すべてが機能していることがわかりました。アセットは個別のファイルとしてリンクされ、サイトは正しく表示されました。
- サイトをサーバーにアップロードし、本番環境で動作させようとしました。最初のエラーは、「ie.css」 (条件付きスタイルシート) がプリコンパイルされていないというものでした。(私は Safari を使用していましたが、このスタイルシートはダウンロードされませんでした
stylesheet_link_tag
。ページをレンダリングする前にヘルパーからエラーが発生しました。) - 実行
rake assets:precompile
して再試行しました。 - 問題のあるアイテムを追加して、
config.assets.precompile
再試行しました。 - 別のアセット エラーに到達するまで、エラーを縁石に蹴り落としました。
- 後藤 3.
これに対処する方法がわからなかったので、すべてのアセットを取得し、サイトが本番環境でレンダリングされていると思うまで、何度かぐるぐる回りました。次に、MSIE で試してみたところ、別のエラー 500: "belated_png_fix.js"が条件付きで読み込まれていましたが、それまでは発生しませんでした。
だから私の質問は、試行錯誤や統合テストへの過度の依存以外に、資産パイプラインがスタイルシートまたは JavaScript がプリコンパイル リストに追加されていないことを発見したときに、自分のサイトが爆発しないことをどのように予測できるかということです。 ?
また、スタイルシート アセットが不足している場合に、オンデマンドでコンパイルしたり、アセットが要求されたときに 404 を提供したりするのではなく、ページ全体でエラー 500 が発生する理由にも興味があります。これは「早期に失敗する」ための意図的な設計ですか?