アセットパイプラインで次の問題が発生しました。
- 画像が入ったHTMLメールがあります。
- メールが正常に送信された場合をカバーするテストがあります。
- すべてのテストに合格します。
- HTMLレイアウトが存在しない画像を参照しているため、本番環境に移行すると、メールの送信が必要な機能が機能しなくなります。
これは明らかにすべてのプリコンパイル済みアセットに適用されます。
突然、テストの信頼性が低下したように思われます。この状況が再び発生するのを回避する方法はありますか?
アセットパイプラインで次の問題が発生しました。
これは明らかにすべてのプリコンパイル済みアセットに適用されます。
突然、テストの信頼性が低下したように思われます。この状況が再び発生するのを回避する方法はありますか?
私は自分のケースから完璧な解決策を見つけました。設定した場合
config.assets.compile = false
config.assets.digest = true
テスト環境では、テストはプリコンパイルされたアセットに依存します。
迅速な開発およびテスト段階で毎回アセットをプリコンパイルするのは面倒なので、私の場合は、CIでのみこの構成を使用するだけで十分です。
次のようにして、ci_config.rbという初期化子をセットアップできます。
if ENV['CI']
class YourApp::Application
config.assets.compile = false
config.assets.digest = true
end
end
そして、開始時にrake Assets:precompileを実行し、終了時にrake Assets:cleanを実行するようにCIを構成します。
application.rb、production.rb、development.rbのデフォルトの構成オプションを比較し、RubyonRailsガイドでのRailsアプリケーションの構成を読んでオプションを確認してください。
重要なオプションは次のとおりです。
config.serve_static_assets
:これをfalse(本番デフォルト)に設定すると、railsは静的コンテンツを提供しません。
config.assets.compile
:必要に応じて、アセットパイプラインを使用してアセットをコンパイルしてコンパイルするかどうか。
上記の2つのオプションをfalse
(本番環境のデフォルト)に設定する場合は、1)静的コンテンツをプリコンパイルして適切な場所に配置する2)必要に応じて静的コンテンツを提供するようにWebサーバー(apacheまたはnginxなど)を構成する必要があります。
したがって、本番環境では、ファイルを配置するだけでなく、ファイルを提供するようにWebサーバーを構成するかserve_static_assets
、オンザフライでアセットを作成するように構成する必要があります。テスト構成を調整する必要があるかもしれませんが、serve_static_assets
変更しない限り、テストはtrueです。