前提・実現したいこと
Railsチュートリアル13章(第4版)をしています。
画像アップロード機能を開発環境で実装後、S3へ新規登録・バケットを作成後、herokuへデプロイしようとしましたが、
ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
となり、デプロイができません。
どうしたらよいのか、また、まだ確認できていない所があればご教授いただきたいです。
発生している問題・エラーメッセージ
$ git push heroku Counting objects: 94, done. Compressing objects: 100% (89/89), done. Writing objects: 100% (94/94), 16.33 KiB | 1.02 MiB/s, done. Total 94 (delta 51), reused 0 (delta 0) remote: Compressing source files... done. remote: Building source: remote: remote: -----> Ruby app detected remote: -----> Installing bundler 1.17.3 remote: -----> Removing BUNDLED WITH version in the Gemfile.lock remote: -----> Compiling Ruby/Rails remote: -----> Using Ruby version: ruby-2.6.6 remote: -----> Installing dependencies using bundler 1.17.3 remote: Running: bundle install --without development:test --path vendor/bundle --binstubs vendor/bundle/bin -j4 --deployment remote: The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. remote: Fetching gem metadata from https://rubygems.org/........ (割愛) remote: Installing fog-ovirt 1.2.5 remote: Fetching fog-aliyun 0.3.17 remote: Installing fog-aliyun 0.3.17 remote: Fetching fog 1.42.0 remote: Installing fog 1.42.0 remote: Bundle complete! 29 Gemfile dependencies, 121 gems now installed. remote: Gems in the groups development and test were not installed. remote: Bundled gems are installed into `./vendor/bundle` remote: Post-install message from fog: remote: ------------------------------ remote: Thank you for installing fog! remote: remote: IMPORTANT NOTICE: remote: If there's a metagem available for your cloud provider, e.g. `fog-aws`, remote: you should be using it instead of requiring the full fog collection to avoid remote: unnecessary dependencies. remote: remote: 'fog' should be required explicitly only if: remote: - The provider you use doesn't yet have a metagem available. remote: - You require Ruby 1.9.3 support. remote: ------------------------------ remote: Bundle completed (18.89s) remote: Cleaning up the bundler cache. remote: The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. remote: -----> Installing node-v12.16.2-linux-x64 remote: -----> Detecting rake tasks remote: -----> Preparing app for Rails asset pipeline remote: Running: rake assets:precompile remote: rake aborted! remote: ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/fog-core-1.45.0/lib/fog/core/service.rb:244:in `validate_options' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/fog-core-1.45.0/lib/fog/core/service.rb:268:in `handle_settings' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/fog-core- (割愛) remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/initializable.rb:59:in `block in run_initializers' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/initializable.rb:48:in `each remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/initializable.rb:48:in `tsort_each_child' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/initializable.rb:58:in `run_initializers' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/application.rb:353:in `initialize!' remote: /tmp/build_d61f6f6b/config/environment.rb:5:in `<top (required)>' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/application.rb:329:in `require' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/application.rb:329:in `require_environment!' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/railties-5.1.6/lib/rails/application.rb:445:in `block in run_tasks_blocks' remote: /tmp/build_d61f6f6b/vendor/bundle/ruby/2.6.0/gems/sprockets-rails-3.2.1/lib/sprockets/rails/task.rb:62:in `block (2 levels) in define' remote: Tasks: TOP => environment remote: (See full trace by running task with --trace) remote: 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 secure-earth-21052. remote: To https://git.heroku.com/(割愛).git ! [remote rejected] master -> master (pre-receive hook declined) error: failed to push some refs to 'https://git.heroku.com/(割愛).git'
該当のソースコード
Gemlile
1group :production do 2 gem 'pg', '0.20.0' 3 gem 'fog', '1.42' 4end 5 6# Windows環境ではtzinfo-dataというgemを含める必要があります 7gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
carrierwave
1if Rails.env.production? 2 CarrierWave.configure do |config| 3 config.fog_provider = 'fog/aws' #←ここを追記 4 config.fog_credentials = { 5 # Amazon S3用の設定 6 :provider => 'AWS', 7 :region => ENV['ap-northeast-1'], # 例: 'ap-northeast-1' 8 :aws_access_key_id => ENV['aws_access_key_id'], 9 :aws_secret_access_key => ENV['aws_secret_access_key'] 10 } 11 config.fog_directory = ENV['S3で設定したバケット名'] 12 end 13end
pictureuploader
1class PictureUploader < CarrierWave::Uploader::Base 2 include CarrierWave::MiniMagick 3 process resize_to_limit: [400, 400] 4 5 if Rails.env.production? 6 storage :fog 7 else 8 storage :file 9 end 10 11 # アップロードファイルの保存先ディレクトリは上書き可能 12 # 下記はデフォルトの保存先 13 def store_dir 14 "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 15 end 16 17 # アップロード可能な拡張子のリスト 18 def extension_white_list 19 %w(jpg jpeg gif png) 20 end 21end
試したこと
①Rails+CarrierWave+heroku環境でAWS S3へ画像をアップロードする
こちらを参考にしましたが、上手くいきませんでした。
②Rails, Laravel(画像アップロード)向けAWS(IAM:ユーザ, S3:バケット)の設定
こちらを参考にバケットポリシーを後で追加・パブリックアクセスの制限を外しましたが、エラー内容は変わりませんでした。
③Ruby on Rails チュートリアル13章 herokuデプロイ時に環境変数が無いと起きるエラー
こちらのコードを参考にgem fog-aws
をインストールしてみましたが、エラー内容は変わりませんでした。
④Rails Tutorial13章のherokuへのデプロイ時に詰まった
Railsチュートリアルのコードをコピーしてこの追加分だけが増えているのが、
現在の状態です。
herokuのダッシュボードとheroku config:set
で確認した環境変数は一致しています。
補足情報(FW/ツールのバージョンなど)
・Windows 10
・AWS Cloud9
・Amazon S3
・Rails 5.1.6
回答1件
あなたの回答
tips
プレビュー