2012-02-06 12 views
3

アセットパイプラインを使用して、アセットをプリコンパイルした後、実動モードで簡単なRails 3.1アプリをテストしようとしています。 JRubyとWEBrick 1.3.1を使っています。計画はJBossで次に展開することです。プロダクション環境でプリコンパイルされたアセットを使用するとRoutingErrorが発生する

すべては開発環境で正常に動作しますが、クライアントがプリコンパイルされたアセットを要求すると、本番ではRoutingErrorが発生します。

は2012-02-06午前18時19分04秒-0500

でGET "/assets/application-a04f15ca8cb6078896dbdc22266757d9.css" 127.0.0.1のためのスタート:よう

Railsのサーバログに見えます

ActionController :: RoutingError(ルートが一致しない[GET] 「/assets/application-a04f15ca8cb6078896dbdc22266757d9.cssん)

プリコンパイルされた資産は、アプリケーションの公開/ assetsディレクトリにあります。

私はWEBrickが/ public/assetsを処理することができると思いますか?またはApacheなどにデプロイしたときにのみテストできますか?

ご協力いただければ幸いです。

+0

実稼働環境にはどのような資産設定がありますか? http://guides.rubyonrails.org/asset_pipeline.html#in-production – phoet

+0

production.rbには:config.assets.compress = true; config.assets.compile = false; config.assets .digest = true; –

答えて

5

答えは、それは理にかなってNo route matches [GET] /assets

です。本番モードのRailsでは、デフォルトで静的アセットが提供されず、そのままデプロイメントサーバーに残されます。 config.serve_static_assetsをtrueに設定することで、静的アセットを提供するようにレールを設定することができます(ただし、パフォーマンスは向上しますが、falseにするとよいでしょう)

+0

これは本当にパフォーマンスではありません。アプリをウォーミングアップする必要があります。そうしないと、最初のユーザーがアプリを起動するとコンパイルのステップがトリガーされます。これは、所有するアセットの量によって数秒/分かかる場合があります。 – phoet

+0

どちらの場合も、私はプロダクション用の資産をプリコンパイルします。パフォーマンスに関する私の推測では、パブリックから静的資産をデプロイするときにRailsのミドルウェアスタックをスキップするほうが速いということでした。 –

関連する問題