【credentials】CircleCIのテストでエラー!「ActiveRecord::StatementInvalid: Mysql2::Error: Table ‘〇〇’ doesn’t exist: SHOW FULL FIELDS FROM `〇〇`」


はじめに

ローカルでRSpecのテストをパスした後、CircleCIのテストでタイトルのエラーとなり、それを解決するまでの記録。

検証環境

$ sw_vers
ProductName:    Mac OS X
ProductVersion: 10.15.3
BuildVersion:   19D76
$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin19]
$ rails -v
Rails 5.2.4.2

rails db:migrate

エラーの内容から、テーブルがないなら、db:migrateか?と思い、

 $ bin/rails db:migrate RAILS_ENV=production

をターミナルで試す。

すると、

rails aborted!
ArgumentError: Missing `secret_key_base` for 'production' environment, set this string with `rails credentials:edit`
/Users/aa/projects/my_app/config/environment.rb:5:in `<top (required)>'
bin/rails:4:in `<main>'
Tasks: TOP => db:migrate => db:load_config => environment
(See full trace by running task with --trace)

、と言われる。

教えてくれている通りに
rails credentials:edit
を行うと、、

$ rails credentials:edit
No $EDITOR to open file in. 

ファイルを開くための $EDITOR がありません。

また検索し、credentialsをeditする為の$EDITORを登録する。

# .bash_profileに環境変数 EDITOR を設定する
$ echo 'export EDITOR="vi"' >> ~/.bash_profile
# bash_profileを読み込ませる
$ source ~/.bash_profile
# 登録できている事を確認する。
$ echo $EDITOR

これで、credentialsを確認できるようになり、内容を確認したが、Missing secret_key_baseという事はなく、登録されている。

次に、
Rails 5.2 で ActiveSupport::MessageEncryptor::InvalidMessage
こちらを拝見し、

CircleCIの環境変数に登録しているmaster.keyとその時点でのローカルのもの(config/master.key)が一致しているか確認するが、
問題なく一致していた。

ここで、気づく。
登録されているsecret_key_baseが間違っている?
また検索し、

$ RAILS_ENV=production bundle exec rails secret

を実行。
長いキーが返ってくるので、それをcredentialに登録し直す。

これで再度プッシュすると、自分の環境だとうまくテストがパスした。

参考にさせて頂いた記事

終わりに。

最後まで読んで頂きありがとうございます
転職の為、未経験の状態からRailsを学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。