2

機関車のCMSを使用したRailsアプリがあります。CMSを介して特定のcss/jsファイルを参照できるようにしたいのですが、assets / subfolder/file.cssのようなURLを使用して開発を進めています。nginxとunicornを使用してアプリをサーバーにデプロイすると、これらのURLは機能しなくなり、すべての画像の読み込みが停止しました。以下をnginxconfファイルに追加した後、画像の読み込みが開始されましたが、CSS/JSファイルはまだ機能しません。

root /var/www/myproject/public/;
location ~ ^/assets/ {
  expires 1y;
  add_header Cache-Control public;

  add_header ETag "";
  break;
}    

nginixとunicornがapp/asset/cssまたはapp/asserts / javascriptディレクトリからアセットを提供できるようにするには、何を構成する必要がありますか?

4

1 に答える 1

0

うまくいけば、アセットをプリコンパイルしたくないという正当な理由がありますが、これは役立つはずです。

#{Rails.root}/config/environments/production.rb
config.serve_static_assets = true

デフォルトでは、Railsアプリはアセットを提供しませんRails.env == "production"。開発/テスト環境では、Railsはassets / subfolder / file.cssへのリクエストを処理し、からアセットを正しくレンダリングします#{Rails.root}/app/assets/subfolder/file.css

rake assets:precompile結果のcss/jsファイルを配置します。このファイルは、nginx構成内#{Rails.root}/public/assetsの場所に関連して正しく解決されます。root

nginx構成でexpires 1y;は、参照されているcss / jsファイルへの変更は、キャッシュされたコピーを持つブラウザーによって要求されない場合があります。

于 2012-10-11T07:00:59.407 に答える