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

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

ただいまの
回答率

90.34%

  • Ruby on Rails

    7663questions

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

  • Ruby on Rails 4

    2464questions

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

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

受付中

回答 0

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 553
退会済みユーザー

退会済みユーザー

 前提・実現したいこと

世界一丁寧な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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

まだ回答がついていません

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

  • ただいまの回答率 90.34%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • Ruby on Rails

    7663questions

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

  • Ruby on Rails 4

    2464questions

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