2012-03-30 7 views

答えて

18

RailsはRack::Staticを使用せず、独自のバージョンActionDispatch::Staticを持っています。 rake middlewareを実行した場合は表示されます。

これは、Railsミドルウェアスタックif config.serve_static_assets is trueにのみ追加されています。この設定はdefaults to trueですが、デフォルトではconfig/environments/production.rb turns if offが生成されます。

アイデアは、開発中に実行してすべてが動作していること、パフォーマンスが問題ではないことを確認できる簡単な単一プロセスがあることです。しかし、実稼働環境にデプロイするときは、Webサーバー(通常はApacheまたはNginx)静的ファイルをRubyよりもはるかに優れているので、静的ファイルとして扱うことができます。

Herokuを使用する場合、最新のCedarスタックは静的ファイル用に別のWebサーバーを使用しないので、deploy processの一部としてRails plugin to serve static assetsが挿入されます。このプラグインはすべてserve_static_assetsをtrueに設定します。

6

です。アプリケーションを実行するのにphusion passengerのようなものを使用しているのであれば、デフォルトの動作はApacheを直接使用し、静的コンテンツの場合はスキップします。 webrick(レールサーバ)を使用している場合、静的なサービスを行うために、より多くのレール/ラックコードを使用します。

パッセンジャーモードでapache/nginxを使用している場合、デフォルトではすべての静的コンテンツがApacheに送信されるため、アプリケーションでrake assets:precompileを実行してからapacheで起動する必要があります、または静的コンテンツは、Apacheがすぐに入手できるようにする必要がある場所には置かれません。

関連する問題