

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が読み込まれて干渉していないか確認した
  * <http://qiita.com/metheglin/items/c5c756246b7afbd34ae2> に指摘されていることはすべて確認した

なお、環境は以下のとおりです。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（リポジトリマシン）


CC BY-SA 3.0
2015-05-27T15:31:47.987
10699
2017-03-25T15:41:14.910
2015-05-27T15:38:20.750
9900
9900
question
ruby-on-rails ruby nginx aws unicorn
Railsアプリケーションが本番環境にてcssが効かずに困っています。


当たり前すぎて確認済みかと思いますが、

[code]

    config.assets.css_compressor = :sass
    config.assets.enabled = true
    config.assets.compile = true
    
[/code]

このあたりの設定が <アプリケーションのルートディテクトリ>/config/enironments/production.rb  
にて設定された上で

[code]

    $touch <アプリケーションのルートディテクトリ>/tmp/restart.txt
    
[/code]

と実行した後、tmp/cache の中身を削除してから webサーバーを再起動してみたらどうでしょうか。これでも動かないときに

[code]

    rake assets:precompile
    
[/code]

なども試していると大体うまく動いている気がします。  
既にやってると思いますが、紛らわしいことにならないように、ブラウザのキャッシュは消去して、更新が反映されるまで何回かブラウザからアクセスかけてると表示が更新される、ということもあった記憶があります。  
この辺、仕組みをきちんと把握してないので経験からだけでの回答になりすみませんが、お役にたてば。  
プリコンパイルできたかどうかは、大抵のブラウザには表示されたページはそのソースが読める機能があるので、ソースを表示して、headタグのCSSファイルを読み込んでいる部分(linkタグ)のファイル内容を確認するのが手っ取り早いかと思います。


CC BY-SA 3.0
2015-05-28T00:45:09.367
10701
2015-05-28T00:45:09.367
9403
10699
answer


[AssetSync](https://github.com/rumblelabs/asset_sync)を使ってリソースをS3に持っていくのはどうでしょう？

バケットポリシーを適切に設定すれば、問題の切り分けに役立つと思います。


CC BY-SA 3.0
2015-06-11T08:03:16.257
11252
2015-06-11T08:03:16.257
10102
10699
answer


私はpublic/assetsごと一旦rmして、もう一度precompileしたらcssが当たりました。  
色々試したのですが、public/assets配下に.sprockets-
manifestというjsonファイルがあってそれでprecompileしているファイルのバージョン管理を行っていると思うのですが、それが古くなっていたからだったのだと思います。  
なので、一旦全部削除して再度やってみたらできました。もしご参考になれば幸いです。


CC BY-SA 3.0
2016-10-07T01:41:42.000
29399
2016-10-07T01:41:42.000
19050
10699
answer