質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

1回答

3835閲覧

Ruby on Railsの本番環境でpublic/assetsが参照できない

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

0クリップ

投稿2018/06/03 06:26

編集2018/06/06 14:28

前提・実現したいこと

世界一丁寧なAWS解説を参考にしながら、
ローカルで開発したRuby on Railsで作ったサイトを、
AWS上のPRODUCTION環境で動かしたい
(UnicornとNginxを使用)

発生している問題・エラーメッセージ

ローカル上では問題なく読み込まれていた/app/assets/配下の画像、CSS、jsが、
本番環境のプリコンパイルで、/public/配下に移ったら、うまく読み込まれなくなりました。
ブラウザで静的IPを叩けば、HTML構造は閲覧でき、
別途publicディレクトリの画像のURLを直で叩くとブラウザで閲覧できるので、
参照先の指定がうまくいっていない模様。

ChromeでHTMLのソースを確認したところ、下記のように記述されていました。

(前略) <link rel="stylesheet" media="all" href="/stylesheets/application.css" data-turbolinks-track="true"> (中略) <script src="/javascripts/application.js" data-turbolinks-track="true"></script> (中略) <img src="/images/logo.png" alt="Logo"> (後略)

chromeの検証ツールでエラーを確認したところ、下記のようなエラーが出ていました

GET http://**.**.**.***/stylesheets/application.css 404 (Not Found) GET http://**.**.**.***/javascripts/application.js 404 (Not Found) GET http://**.**.**.***/images/logo.png 404 (Not Found)

public/assets/配下はこれらのようにファイル種別ごとにディレクトリは切られておらず、
画像もcssもjsもすべて同階層にプリコンパイルされています。
また、ファイル名には全てfingerprintが付与されているため、
このようなソースではディレクトリ指定があっていたとしても、
読み込まれないのではと思っています。

該当のソースコード

application.html.erb

(前略) <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track' => true %> (中略) <%= javascript_include_tag 'application', 'data-turbolinks-track' => true %> (中略) <%= image_tag 'logo.png' %> (後略)

試したこと

Rails Asset Pipelineがうまくいかないときの問題の切り分けかた
を参考に、
「4−■URL例」までは確認しました
・publicディレクトリに画像がプリコンパイルされている
・publicディレクトリの画像のURLを直で叩くとブラウザで閲覧可能
「4-■Webサーバ設定例」については、
/usr/local/nginx-1.6.0/conf/conf.d/test_app.metheglin.jp.conf
が、自分の環境でいうとどこのファイルに当たるのかがわからず、確認できていません。

また、別途、
teratailの「image_tagで画像が表示されません」という質問を参考に、
パスを「../画像名」としてみましたが、画像は表示されないままでした。

さらに、
(原理をきちんと理解できていないので関係ないかもしれませんが)
何かしらの理由で、環境の初期設定がうまくいっておらず、
production環境認定されていないのかもしれないと考え、
rails 初期設定メモを参考に、

export RAILS_SERVE_STATIC_FILES=true

を実行したり、
railsの3つの環境 & 環境の切り替えを参考に、

export RAILS_ENV=production

を実行したりしてみましたが、変化ありませんでした。

原因や対策について、心当たりのある方がいらっしゃいましたら、
教えていただけないでしょうか。

よろしくお願いいたします。

補足情報(FW/ツールのバージョンなど)

AWS EC2
ruby 2.3.1
Rails 4.2.6
unicorn v5.4.0
nginx/1.12.1

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

プリコンパイルされたファイル消してnginxとunicornを再起動しても直らないですかー?
直らないんであれば、各種エラーログみてくださいなー

投稿2019/03/15 23:51

退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問