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

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

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

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

Q&A

1回答

428閲覧

herokuデプロイ後のApplication errorの解決が出来ないです。

minoruharikae

総合スコア4

Ruby on Rails 5

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

0グッド

0クリップ

投稿2020/01/16 03:08

前提・実現したいこと

ruby on railsでアクセサリーの出品、購入が出来るアプリケーションを作成しています。
基本的な機能とビューを作成し、一度デプロイを行った時にはきちんとブラウザ上にアプリが表示されていました。
しかしS3を導入後にデプロイ作業を行ったら正常にデプロイは出来ているのですが、Application errorとなってしまい、アプリが表示されなくなってしまいました。(正常にデプロイ、の定義はherokuでデプロイの履歴を確認してエラーになっていなかったことです。)

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

アプリのURLに接続すると
Application error
An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details. You can do this from the Heroku CLI with the command
となります。

・heroku logsやheroku run rails consoleコマンドで調べたところ、
awsのkey設定でエラーが出ている事がわかりました。

/app/vendor/bundle/ruby/2.5.0/gems/fog-core-2.2.0/lib/fog/core/service.rb:244:in `validate_options': Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError) ```ここに言語名を入力 Ruby ソースコード ※アスタリスク部分は入力して作業してます。こちらは念のため書き換えました。 ・carrierwave.rb require 'carrierwave/storage/abstract' require 'carrierwave/storage/file' require 'carrierwave/storage/fog' CarrierWave.configure do |config| config.storage = :fog config.fog_provider = 'fog/aws' config.fog_credentials = { provider: 'AWS', aws_access_key_id: Rails.application.secrets.aws_access_key_id, aws_secret_access_key: Rails.application.secrets.aws_secret_access_key, region: 'ap-northeast-1' } config.fog_directory = '*******' config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/*******' end

・secrets.yml
development:
secret_key_base: *********************
aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>
test:
secret_key_base: *********************

Do not keep production secrets in the repository,

instead read values from the environment.

production:
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
aws_access_key_id: <%= ENV["AWS_ACCESS_KEY_ID"] %>
aws_secret_access_key: <%= ENV["AWS_SECRET_ACCESS_KEY"] %>

試したこと

: Missing required arguments: aws_access_key_id, aws_secret_access_key (ArgumentError)
を調べたところ、heroku側の環境変数の設定が出来ていないという事がわかり
heroku config:set AWS_ACCESS_KEY_ID=
heroku config:set AWS_SECRET_ACCESS_KEY=
コマンドで設定。(ローカルの環境変数は設定してあります)
しかし、エラーが解決されず。
awsのアクセスキー自体が悪い可能性も考え、新しくアクセスキーを作成し、再度
heroku config:set AWS_ACCESS_KEY_ID=
heroku config:set AWS_SECRET_ACCESS_KEY=
コマンドで再設定し、heroku restartで再起動しましたがこれでも解決されず詰まっています。
(ローカルの環境変数も変更してあります)

ここにより詳細な情報を記載してください。
herokuでの環境変数が設定されているかは、heroku configコマンドで調べ、

AWS_ACCESS_KEY_ID:
AWS_SECRET_ACCESS_KEY:
DATABASE_URL:
LANG:
RACK_ENV:
RAILS_ENV:
RAILS_LOG_TO_STDOUT:
RAILS_SERVE_STATIC_FILES:
S3_ACCESS_KEY:
S3_BUCKET:
S3_REGION:
S3_SECRET_KEY:
SECRET_KEY_BASE:

以上の項目が設定されいることを確認しています。
説明不足の場合は申し訳ありません。
わかる方いらっしゃいましたらアドバイスを是非頂きたいです。
何卒宜しくお願い致します。

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

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

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

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

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

guest

回答1

0

S3 関連の実装を一度コメントアウト等で取り除き、環境変数を出力してみるとどうでしょうか。

正常に環境変数が取得できていれば、それ以外の箇所の設定が、取得できていなければ、設定が間違っているか、どこかで上書きされたりしているのかもしれないです。

投稿2020/03/07 19:59

tktcorporation

総合スコア108

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問