ID:2MOnKa さんの質問

Railsアプリケーションが本番環境にてcssが効かずに困っています。
テスト環境では正常にcssやimage,javascriptが随時コンパイルされて反映されますが本番環境ではcssだけが反映されません。
(assets:precompileは完了していて正しく読み込まれていますが、全く効かない状況です。)

試したことは、

* キャッシュを削除し念のためシークレット・ウィンドウからも試した
* precompile実行後、app/public/assets配下に正常にファイルが生成されることを確認した
* app/public/assets配下を一旦creanした(なぜかコマンドからcleanが効かなかったので手動でrmした)
* Unicorn, Nginxを再起動した(エラーログは出ていない)
* テスト環境で反映されるか確認した(app/assets配下が呼ばれています)
* app/public/assets配下のパーミッションエラーを疑いurlから直接pathを指定して見れるか確認した
* Chromeの要素を検証から余計なstylesheetが読み込まれていないか確認した
* http://qiita.com/metheglin/items/c5c756246b7afbd34ae2 に指摘されていることはすべて確認した

なお、環境は以下のとおりです。
どうかよろしくお願いいたします。

* 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(リポジトリマシン)

みんなの回答 3 件

ID:d3cR3A さんの回答

production.rbのconfig.serve_static_filesがfalseになっていて、かつnginxがassetsファイルを供給していないのかもしれません。

ID:2MOnKa

回答ありがとうございます。環境はRails4.2ですので、ご指摘いただいているconfig.serve_static_filesはデフォルト値の
ENV[’RAILS_SERVE_STATIC_FILES’].present?になっております。また、nginxからのassetsファイルも供給されていおり(precompileされた画像は正常に表示される)エラーログも吐いていない状態です。。

ID:74rg2g さんの回答

読み込まれてて効かないのであれば、Rails じゃなくてブラウザの問題では? というかそんな事あるかな…。読み込んでるCSSのURLをブラウザに直打ちして表示されるかどうか試した? @import してるならそれらも全部試すこと。

ID:2MOnKa

回答ありがとうございます。cssのurlも直打ちで正しくリンクが貼られておりパーミッションエラーでないことも確認済みです。その他に打ち消しているstyleheetもございません。Chromeの要素を検証より、NetworkやResourcesで正しく呼ばれており(ステータスコードは200mたは403)Consoleにもエラーは吐いていない状態です。。

ID:2MOnKa

@importはしておらず、ただ1つのcompileされたcssを呼び出しているだけです。

ID:2MOnKa

シークレット・ウィンドウからでも状況は変わらず、ブラウザを変えてSafariからでもダメでした。。

ID:74rg2g

であれば読み込んでるHTML側での <link> タグかURLの記述ミス…ぐらいしか思いつかないけど。なんぢゃこりゃ。どうなってんだ? デベロッパーツールでタグやクラスを選択するとCSSはどうなってる?

ID:2MOnKa

views/application.html.slimに以下を記述、
= stylesheet_link_tag ’pc/application’, media: ’all’, ’data-turbolinks-track’ => true

ブラウザ側には以下のように出力されcssが渡っておりリンクパスも正しい状態です。
<link rel="stylesheet" media="all" href="/assets/pc/application-41243a5ae887416d343ebdff8d4b90bd89fd5146903642ef33995c761606e2f5.css" />

ID:2MOnKa

タグやクラスを選択しますと、ブラウザのデフォルト値が反映されいる状態です(cssでresetする前の状態です)。よろしくお願いいたします。。

ID:74rg2g

ならCSSの記述ミスか…まぁでもバリデーションチェックはしてるよなぁ。中身を一部取り出してHTMLに直書きして効くようなら、ファイルの読み込みに何らかのトラブルがある。MIME-Types?

ID:2MOnKa

誤りがあったので訂正します。

誤)views/application.html.slim
正)views/layouts/application.html.slim

ID:74rg2g

うーんわからん。ギブアップ。すまん。

ID:wDL5Jk さんの回答

あー、同じようなことあった。
何だけっけな…2つ要因があったんだけど…
一つはIEのセレクタ数の限界を超えてたんだけどそっちではなさそうですよね。
もう一つが思い出せない。
でもすごい単純な感じだったんだよな、@importの位置変えたとか。
でもデザイナーレベルで解決できる単純な話だったはず。

ID:wDL5Jk

それか単純にRailsのキャッシュかも

ID:2MOnKa

回答ありがとうございます。@importは使用していないのであまり関連がないかもしれないです。

public/assets配下、tmp/cache/assets配下を一旦削除しクリーンな状態、ブラウザのキャッシュを削除、シークレット・ウィンドウで起動していますが反映されないじょうたいです。。

ID:wDL5Jk

Railsのキャッシュは削除しました?

ID:2MOnKa

Railsのキャッシュももちろん削除しております。

ID:2MOnKa

test環境で呼ばれているapp/assets/配下は正常に呼び出され反映されているものが、production環境にした途端、public/assets/配下が呼び出されるものの反映されない状態です。

ID:wDL5Jk

chromeのデベロッパーツールのResourcesからcss見るとどうなってます?

ID:wDL5Jk

もし↑から見ても正常であれば、ブラウザの問題とか、本番環境ではログインしちゃってるみたいな特殊な状態で確認してるとか私もrails自体の問題ではない気がします。

ID:2MOnKa

デベロッパーツールのResourcesからみてもcssは正常に読み込まれているのでRails側の問題でないはずですし、ブラウザを変更しても変化がない上に特殊な記述はしていないはずなのでブラウザ側の問題でもない気がするんですよね。。

ID:wDL5Jk

どちらもUNIXですよね?

ID:2MOnKa

どちらもUNIXになります。

最終更新日:2015-05-28 (4,377 views)

関連するトピックス

ページ上部に戻る