何度もやり方を忘れてやってしまうので、こちら記事にしました。
GitHubからフォークしてきたプロジェクトをダウンロードした時に発生。
carrierwaveのgemが入っていると起こりやすいエラーかもしれません。
以下エラー文
$ rails db:migrate
rails aborted!
ArgumentError: Missing required arguments: aws_access_key_id, aws_secret_access_key
LoadError: cannot load such file -- carrierwave/storage/abstract
/Users/name/appname/config/initializers/carrierwave.rb:1:in `<top (required)>'
/Users/name/appname/config/environment.rb:5:in `<top (required)>'
/Users/name/appname/bin/rails:9:in `require'
/Users/name/appname/bin/rails:9:in `<top (required)>'
/Users/name/appname/bin/spring:15:in `<top (required)>'
bin/rails:3:in `load'
bin/rails:3:in `<main>'
Tasks: TOP => db:migrate => environment
(See full trace by running task with --trace)
dotenv-railsのgemを入れていたので、
.envファイルにaws_access_key_idとaws_secret_access_keyを暫定的に設置しました。
しかしながら解決しない…
エラー元となったcarrierwave.rbを確認すると以下のような記述が。
config/initializers/carrierwave.rb
aws_access_key_id: ENV["AWS_ACCESS_KEY_ID_MER60"],
aws_secret_access_key: ENV["AWS_SECRET_ACCESS_KEY_MER60"],
ここで気づきましたが、今回のケースだと設定すべきなのは、
- aws_access_key_idではなくて__AWS_ACCESS_KEY_ID_MER60__(ENVの中の文字列)
- aws_secret_access_keyではなくて__AWS_SECRET_ACCESS_KEY_MER60__(ENVの中の文字列)
(エラー文をパッと見で判断してしまったので惑わされました…)
つまり今回のケースであれば下記の通りに記述します。
..env
AWS_ACCESS_KEY_ID_MER60 = 'aaaaaaaaaaaaaaaaaaa'
AWS_SECRET_ACCESS_KEY_MER60 = 'aaaaaaaaaaaaaaaaaaaaaaa'
もう一度rails db:migrateをリトライ!
$ rails db:migrate
rails aborted!
Devise.secret_key was not set. Please add the following to your Devise initializer:
config.secret_key = '37ed159461157b57cf3f27380d7ad6172084c3b34639cd9af7cf68d537a2c0f101be45222bc4a607452caa1b5883f63c6492d3c5b98d4eb90692350000000000'
Please ensure you restarted your application after installing Devise or setting the key.
最初のエラーは消えたけれども、今度はdeviseのシークレットキーを設定せよとのコメントが。
一応devise.rbを確認します。
config/initializers/devise.rb
config.secret_key = ENV['DEVISE_SECRET_KEY']
同じような形なので、同様にDEVISE_SECRET_KEYも.envに記載。
..env
AWS_ACCESS_KEY_ID_MER60 = 'aaaaaaaaaaaaaaaaaaa'
AWS_SECRET_ACCESS_KEY_MER60 = 'aaaaaaaaaaaaaaaaaaaaaaa'
DEVISE_SECRET_KEY = '37ed159461157b57cf3f27380d7ad6172084c3b34639cd9af7cf68d537a2c0f101be45222bc4a607452caa1b5883f63c6492d3c5b98d4eb90692350000000000'
以上のフローで取り敢えずdb:migrateまではうまくいきました。