質問: Railsアプリケーションが本番環境にてcssが効かずに困っています。 テスト環境では正常にcssやimage,javascriptがその都度compileされて反映されますが本番環境ではなぜかcssだけが反映されません。 (assets:precompileは完了していて正しく読み込まれていますが、全く効かない状況です。) 試したこととして、 * assets:precompile実行後、app/public/assets配下に正常にファイルが生成されることを確認した * app/public/assets配下を一旦creanした(なぜかコマンドからのcleanが効かなかったので手 動でrmした) * キャッシュを削除し念のためシークレット・ウィンドウからも試した * Unicorn, Nginxを再起動した(エラーログは出ていない) * テスト環境で反映されるか確認した(app/assets配下がその都度compileされ呼ばれています) * app/public配下のパーミッションエラーを疑いurlから直接pathを指定して正しく見れることを確認した * 生成されたソースを読み、余計なstylesheetが読み込まれて干渉していないか確認した * に指摘されていることはすべて確認した なお、環境は以下のとおりです。cssだけが読み込まれず困っています。 どうかよろしくお願いいたします。 * Rails 4.2.0 * Ruby 2.2.0 * rbenv 0.4.0 * Unicorn 4.8.3 * Nginx 1.6.2 * MySQL 5.5.40 * EC2 Amazon Linux AMI 2014.09.1 (HVM)(プロダクションマシン) * Git(リポジトリマシン)
回答: 当たり前すぎて確認済みかと思いますが、 ``` config.assets.css_compressor = :sass config.assets.enabled = true config.assets.compile = true ``` このあたりの設定が <アプリケーションのルートディテクトリ>/config/enironments/production.rb にて設定された上で ``` $touch <アプリケーションのルートディテクトリ>/tmp/restart.txt ``` と実行した後、tmp/cache の中身を削除してから webサーバーを再起動してみたらどうでしょうか。これでも動かないときに ``` rake assets:precompile ``` なども試していると大体うまく動いている気がします。 既にやってると思いますが、紛らわしいことにならないように、ブラウザのキャッシュは消去して、更新が反映されるまで何回かブラウザからアクセスかけてると表示が更新される、ということもあった記憶があります。 この辺、仕組みをきちんと把握してないので経験からだけでの回答になりすみませんが、お役にたてば。 プリコンパイルできたかどうかは、大抵のブラウザには表示されたページはそのソースが読める機能があるので、ソースを表示して、headタグのCSSファイルを読み込んでいる部分(linkタグ)のファイル内容を確認するのが手っ取り早いかと思います。