0
0

More than 1 year has passed since last update.

【Rails×AWS】capistranoでデプロイ時のNoMethodError: Cannot load database configuration

Posted at

初めてcapistranoでEC2にデプロイするときにハマったエラーがあったので解決方法ともに共有しようと思います。
EC2環境構築についてはこちらの記事を参考に行いました↓
https://qiita.com/gyu_outputs/items/b123ef229842d857ff39

エラー内容

$ bundle exec cap production deploy
.
.
.
.
deploy:migrating
01 $HOME/.rbenv/bin/rbenv exec bundle exec rake db:migrate
01 rake aborted!
      01 NoMethodError: Cannot load database configuration:
      01 undefined method `[]' for nil:NilClass

原因/解決方法

最初はデータベース関連のエラーかと思いましたが色々調べてみるとdatabase.ymlの環境変数が読み込めないときに表示されるエラーということがわかりました。

database.yml
production:
  <<: *default
  database: <%= Rails.application.credentials.db[:database] %> #最初に読み込まれるのがデーターベースの環境変数であるためデータベースがロードできないというエラーが表示された。
  username: <%= Rails.application.credentials.db[:username] %>
  password: <%= Rails.application.credentials.db[:password] %>
  socket: <%= Rails.application.credentials.db[:socket] %>

環境変数が読み込めない⇨credentials.ymlが読み込めていない⇨master.keyが読み込めていない
ということがわかりました。

master.keyはconfig/master.keyというファイルに保存されていますがこれをcapistranoで読み込むためには下記の一文を追加する必要がありました。

config/deploy.rb
set :linked_files, %w(config/master.key) #追加

バージョン

ruby '3.0.2'
rails '6.0.4'
capistrano '3.16.0'
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0