1

以下を使用して、ステージング サーバーをローカルで実行しています。

RAILS_ENV=staging rails console -p 1337

アセットをプリコンパイルしました。これらのアセットを提供する方法が見つからないことを除けば、すべて正常に動作しています。私はstaging.rbにこれを持っています:

config.serve_static_assets = false

私の apache vhost では、80 でリッスンすると、自分のアセットにアクセスできます。

http://domain.local/assets/application.css

しかし、Rails サーバーと同じポートである 1337 でリッスンすると、Rails は 404 を吐き出します。

http://domain.local:1337/assets/application.css

私は何かが欠けているに違いない。サイトは正常に表示され、すべてのアセットで 404 が返されるだけです。

ActionController::RoutingError (No route matches [GET] "/assets/application-791b26264f9bbe462a28d08cf9a79582.css"):
4

1 に答える 1

5

アプリケーションにアクセスするとき

http://domain.local:1337/

あなたはApacheを経由していません。

WEBrick (RAILS_ENV=staging rails s -p 1337) のみを使用して実行する場合は、次のように設定する必要があります。

config.serve_static_assets = true

あなたの staging.rb で。これにより、アプリケーションにアクセスしたときに、WEBrick がプリコンパイルされたアセットを提供するようになります。

http://domain.local:1337

Apache によって提供されるプリコンパイル済みアセットを使用するには、Phusion Passenger などの Ruby モジュールと組み合わせて Apache (または Nginx) を使用することを検討する必要があります。その後、次の方法でアプリにアクセスできます

http://domain.local

これにより、Apache がアセットを提供し、他のすべてのリクエストをモジュールに転送します。詳細については、こちらをご覧ください。

于 2012-09-11T02:36:16.607 に答える