前提・実現したいこと
この度は宜しくお願いします。
heroku+carrierwave+S3にてデプロイを行おうとし、以下のコマンドを実行しました。
git push heroku master
発生している問題・エラーメッセージ
エラーは、途中で発生したものはこちら
remote: -----> Preparing app for Rails asset pipeline remote: Running: rake assets:precompile remote: rake aborted! remote: NoMethodError: undefined method `[]' for nil:NilClass remote: /tmp/build_5a651971b2df337d5a7aadd064b90937/config/initializers/carrierwave.rb:11:in `block in <top (required)>'
最終的に赤字で書かれていたのはこちら
remote: ! remote: ! Precompiling assets failed. remote: ! remote: ! Push rejected, failed to compile Ruby app. remote: remote: ! Push failed remote: Verifying deploy... remote: remote: ! Push rejected to appname. remote: To https://git.heroku.com/appname.git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/appname.git'
となります。
該当のソースコード
carrierwave.rb
1require 'carrierwave/storage/abstract' 2require 'carrierwave/storage/file' 3require 'carrierwave/storage/fog' 4 5CarrierWave.configure do |config| 6 if Rails.env.production? 7 config.storage = :fog 8 config.fog_provider = 'fog/aws' 9 config.fog_credentials = { 10 provider: 'AWS', 11 aws_access_key_id: Rails.application.credentials.aws[:access_key_id], 12 aws_secret_access_key: Rails.application.credentials.aws[:secret_access_key], 13 region: 'ap-northeast-1' 14 } 15 16 config.fog_directory = 'S3のバケット名' 17 config.asset_host = 'https://s3-ap-northeast-1.amazonaws.com/S3のバケット名' 18 19 else 20 config.storage :file 21 config.enable_processing = false if Rails.env.test? 22 end 23 24 CarrierWave::SanitizedFile.sanitize_regexp = /[^[:word:].\-+]/ 25 26end
試したこと
エラー文から、環境変数が上手く読み込めていないのではと考えました。
・(念のため)ローカル環境にaws_access_key_id, aws_secret_access_keyをexport 環境変数=値で記述
・credentials.ymlにも環境変数=値で記述
(コンソールでRails.application.credentials.aws[:access_key_id]と入れたところ、期待通りの値が出ました。シークレットキーも同様です)
・ターミナルからheroku configでRAILS_MASTER_KEY, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, AWS_S3_REGION, AWS_S3_BUCKET, 以上の環境変数を定義、herokuダッシュボードのConfig Varsでも確認
環境変数定義は行えていると思うのですが、それでも同様のエラーが続き、お邪魔しました。
ご助力いただけますと幸いです。
補足情報(FW/ツールのバージョンなど)
Rubyは5.2系、bundlerは2.0.2、データベースは
Gemfile
1group :development, :test do 2 gem 'mysql2', '>= 0.4.4', '< 0.6.0' 3end 4 5group :production do 6 gem 'pg' 7end
という設定になっています。検索の際cssをscssにリネームするのいうのも見かけたのですが、今回、cssファイルは使用しておりません(application.scss以下全てscssファイル)
回答1件
あなたの回答
tips
プレビュー