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

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

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

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

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

Q&A

解決済

5回答

1800閲覧

Route53を利用した本番環境への変更の反映について

garta

総合スコア15

Ruby on Rails

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

Amazon Route 53

Amazon Route 53 はAmazonが提供する、 可用性と拡張性に優れた ドメインネームシステム(DNS)サービスです。

AWS(Amazon Web Services)

Amazon Web Services (AWS)は、仮想空間を機軸とした、クラスター状のコンピュータ・ネットワーク・データベース・ストーレッジ・サポートツールをAWSというインフラから提供する商用サービスです。

0グッド

0クリップ

投稿2019/12/08 15:56

編集2019/12/09 09:21

railsアプリをAWSでデプロイし、route53にて独自ドメインを取得しました。
ブラウザからドメインで接続を行うことには成功したのですが、
bootstrapやcssの反映がされていない状態です。
ドメインではなくIPアドレスからアクセスすると反映されているのですが、
ドメインへの変更には時間がかかるのでしょうか?
それとも何か設定をしていない、もしくは間違えているのでしょうか。
情報が少なく判断しずらい質問になってしまい申し訳ないのですがアドバイスいただければと思います。

環境は、rails6、webpacker,EC2内に、unicorn,nginx,DBはRDSです。
フロント関連をアセットパイプラインからwebpacker管理に移行しています。
その他記述して欲しい情報があれば記述いたします。

以下追記です。

当該ページにキャッシュやクッキーが作用しないようにブラウザ設定を行っており、
アドバイスいただいた検証ツールを使用してみると

GET https://myapp.com/packs/css/applicationハッシュ略.js net::err_ABORTED 404

と表示されていました。
私の環境は

myapp/fronts/packs/application.js ```をwebpackerのエントリーポイントとして設定しており、 そこから

myapp/fronts/src/javascripts/反映させたいjs
myapp/fronts/src/stylesheets/反映させたいcss

を読み込んでいます。 head内は以下のように記述しています。

<%= stylesheet_pack_tag 'application' ,media:'all' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>

本番環境はフロント関連ファイルの読み込み場所が異なる為にファイルを見つけられず反映されないのでしょうか? 以下はプリコンパイル時のログです ```ここに言語を入力 [user]$ rake assets:precompile RAILS_ENV=production yarn install v1.19.2 [1/4] Resolving packages... [2/4] Fetching packages... info fsevents@1.2.9: The platform "linux" is incompatible with this module. info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation. [3/4] Linking dependencies... warning " > webpack-dev-server@3.9.0" has unmet peer dependency "webpack@^4.0.0". warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0". [4/4] Building fresh packages... Done in 4.55s. yarn install v1.19.2 [1/4] Resolving packages... [2/4] Fetching packages... info fsevents@1.2.9: The platform "linux" is incompatible with this module. info "fsevents@1.2.9" is an optional dependency and failed compatibility check. Excluding it from installation. [3/4] Linking dependencies... warning " > webpack-dev-server@3.9.0" has unmet peer dependency "webpack@^4.0.0". warning "webpack-dev-server > webpack-dev-middleware@3.7.2" has unmet peer dependency "webpack@^4.0.0". [4/4] Building fresh packages... Done in 4.06s. Everything's up-to-date. Nothing to do

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

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

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

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

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

guest

回答5

0

自己解決

logでcss読み込み部分を見直して調べたところ、
こちらが見つかり、
結果的には
config.public_file_server.enabled=ENV['RAILS_SERVE_STATIC_FILES'].present?
の変数が定義されていなかったため、public配下のファイルを読み込まなかったようです。
=trueとしたところ適切に表示されました。
何故同様に定義していないはずの直IPでは表示されて、
ドメインでは表示されなかったのかは、わからなかったので調べてみます。
みなさん多くの回答ありがとうございました。
これを教訓にもう少しrails自体の理解を深めようと思います。

投稿2019/12/10 09:47

garta

総合スコア15

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

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

0

1)ブラウザーでhtmlを見た時
<%= stylesheet_pack_tag 'application' ,media:'all' %>
<%= javascript_pack_tag 'application', 'data-turbolinks-track': 'reload' %>
の部分はどうなってますか?
それは
2)GET https://myapp.com/packs/css/applicationハッシュ略.js
と同じですか?
3)Rails.root/public/pacs/css にそれはありますか

投稿2019/12/09 09:40

winterboum

総合スコア23401

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

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

garta

2019/12/09 17:04

ただいま帰宅した為返信遅くなってしまい申し訳ありません。 1) IP、ドメイン共にブラウザから見たら <link rel="stylesheet" media="all" href="/packs/css/applicationハッシュ.css"> <script src="/packs/js/applicationハッシュ.js" data-turbolinks-track="reload"></script> でした。 2) 同じです 3) 確認したところ、packs/css/applicationハッシュ.jsは存在していました。 vimで中身を確認すると、bootstrap4のprimaryなど各クラス設定データや、 自分で作成したcssも全て記述されていました。
winterboum

2019/12/09 22:09

そのハッシュが違ってました、なんて落ちはないですよね、、、 *.JSに、「自分で作成したcssも全て記述されていました。」というのは??なのですが、それは*cssに、の間違いですね? 今もエラーは404、IPでアクセスすると200なのですね?
garta

2019/12/10 07:26

ハッシュはcss,js共に完全に一致していました。 *jsは、*cssの間違いです、失礼いたしました。 現在も同じくエラーです。IPは正常であり、css,js共に反映されています。 又、 3)Rails.root/public/pacs/css にそれはありますか と質問いただいた際、EC2の/public/packs/css配下にはファイル中身共に正常に存在する。 という意味で答えましたが、 ブラウザ検証ツールにおいて、IPでアクセスすると packs/css/application*.css、 packs/js/application.*jsは中身共に存在しており、 ドメインには packs/css/application*cssは存在するものの中身は空で, packs/js/application*.jsはファイルが存在しませんでした。 プリコンパイルが上手くいってないのでしょうか?
winterboum

2019/12/10 07:45

それって、IPのときとドメインのときで違うところを見に行っているのでは?という疑いも。。 で、わからなくなった 「ブラウザ検証ツールにおいて、IPでアクセスすると packs/css/application*.css、 packs/js/application.*jsは中身共に存在しており、」 とは、サーバのdirを覗きに行ったわけではなく、ブラウザに届いたという意味ですか? 「ドメインには。。。」の場合はサーバのdirを覗きに行ったのですか?
garta

2019/12/10 08:07

読み込みは確認したところ両者同じく/packs/css/application*css を見ているようで、ハッシュも一致していました。 混乱させてしまい申し訳ありません。 EC2内→public/packs/css/application*.css public/packs/js/application*js 共に存在 以下検証ツールのソースを閲覧 IPでアクセス→public/packs/css/application*.css    public/packs/js/application*js 共に存在 ドメインでアクセス→public/packs/css/application*.css→ファイルは存在するが中身が空       public/packs/js/application*js→ファイルそのものが存在しない
winterboum

2019/12/10 09:14

Webserverに何をお使いかわかりませんが、virtual domain の定義どうなってますでしょう。 意図は、IPでアクセスだとdefault domainに行くが、domain指定アクセスだとその場所に行く。そこは同じrootか?
garta

2019/12/10 10:04

server { listen 80; server_name IP; # nginx so increasing this is generally safe... keepalive_timeout 5; # path for static files root /var/www/pro/myapp/public; となっていました。 これが、ドメインからだとpublic配下が読み込まれなかった原因でしょうか? server { listen 80; server_name ドメイン; # nginx so increasing this is generally safe... keepalive_timeout 5; # path for static files root /var/www/pro/myapp/public; としたところ、正常に読み込まれました 結果的には別の解決方で無理やり解決してしまったのですが、 winterboumさんにご指摘いただいた箇所の問題だったと思います。 回答に必要な情報が曖昧だったにも関わらず、問題を起こしているであろう箇所を的確に指摘してくださって、素直に尊敬します。 又、 質問への返答時間もバラバラになってしまったのに、 最後まで親身にアドバイスいただけて本当に感謝しています。
winterboum

2019/12/10 11:44

解決に書かれている変数は知りませんでした。そんな話を聞いたことがあったかなぁというのがかすかに思い出せる程度。 server_name ドメイン; になっていないのは複数ドメインをサービスするようになった時のことを考えるとまずいですね。 ただ、ここがその原因であったかどうかは自信ありません。
garta

2019/12/10 14:12

初めてのアプリ開発のため、憶測になってしまいますが、 server_name IP;となっている以下に # path for static files root /var/www/pro/myapp/public; と記述していたのでこれが作用して IPアクセスの時のみpublic配下を読み込める。 しかしドメインアクセスは上記が作用しない上、 config.public_file_server.enabledがfalseであるので読み込めなかったのだと解釈しました。 server_name ドメイン;にした後、 config.public_file_server.enabled=環境変数.present?に再度戻したらどうなるか、 帰宅したらやってみようと思います。
winterboum

2019/12/10 20:25

結果、楽しみにしています
garta

2019/12/11 21:15

遅くなりました、やはりconfig.public_file_server.enabled=環境変数.present?に再度戻しても、 正常に動作しました!
guest

0

Windows+Chromeで

  1. F12を押して開発者ツールを開く
  2. リロードボタンを右クリック→キャッシュの消去とハードの再読み込み

で解消する様であれば、CSSに関するキャッシュ制御の問題なので、
「キャッシュの削除お願いします」をなくせ!強制的にCSSのキャッシュを無効化する2つの方法の様な形でブラウザキャッシュを制御できるようなHTMLコードを生成するようにする必要があります。


解消しない様であれば他に問題があるので、

  1. ブラウザの開発者ツールで該当するリクエストを確認する
  2. サーバ側でのアクセス/エラーログからどういうアクセスが発生しているか確認する

あたりから順に問題を切り分けていく必要があります。

投稿2019/12/09 02:45

tanat

総合スコア18716

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

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

garta

2019/12/09 08:39

回答ありがとうございます。 アドバイスを元にいくつか追記をいたしましたので、目を通していただければ幸いです
guest

0

単に(ブラウザ側で)キャッシュされてしまっているだけなのでは……
IP アドレスでアクセスすると反映されているというのは、IP アドレス側でのキャッシュがなされていなかったからでしょう。

投稿2019/12/09 00:32

tacsheaven

総合スコア13703

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

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

garta

2019/12/09 08:39

回答ありがとうございます。 いくつか追記をいたしましたので目を通していただければ幸いです
guest

0

AWSに限らず、ドメインの浸透には時間がかかります。
【ドメイン】DNS設定の変更手続きをしてから有効になるまでの期間は?

投稿2019/12/08 16:52

mike2mike4

総合スコア901

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

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

winterboum

2019/12/08 23:43

「ブラウザからドメインで接続を行うことには成功したのですが、」 とあるので、質問者の使ってるDNSサーバには既に反映されているのでは?とおもうのですどうでしょう
garta

2019/12/09 08:29

回答ありがとうございます。 htmlは表示されているのでおそらく浸透は完了していると思います
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問