#はじめに
ローカルで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を学習しております。正しい知識を着実に身に着け、実力のあるエンジニアになりたいと考えています。継続して投稿していく中で、その為のインプットも必然的に増え、成長に繋がるかと考えています。
今現在、初心者だからといって言い訳はできないですが、投稿の内容に間違っているところや、付け加えるべきところが多々あるかと思いますので、ご指摘頂けると幸いです。この記事を読んで下さりありがとうございました。