「Everyday Rails - RSpecによるRailsテスト入門」
職場の先輩におすすめしていただいたので、買ってみました。
そこのセットアップでつまずいたことと対処法を自分なりにまとめてみました。
「Everyday Rails - RSpecによるRailsテスト入門」のセットアップの手順
# ソースコードのダウンロード
git clone git@github.com:JunichiIto/everydayrails-rspec-jp-2022.git
# ディレクトリの移動
cd everydayrails-rspec-jp-2022
# 使用する Ruby バージョンを指定(本書では3.1.0を推奨。下記コマンドは rbenv を使用する場合)
rbenv local 3.1.0
# gem のインストール
bundle install
# データベースのセットアップ等
bin/setup
# JavaScript パッケージのインストール
yarn install
# foreman gem のインストール
gem install foreman
# サーバーの起動
bin/dev
「Everyday Rails - RSpecによるRailsテスト入門」
にこのようなパートがあると思います。27p目(2022/1/31時点)。
git clone時のエラー
# ソースコードのダウンロード
git clone git@github.com:JunichiIto/everydayrails-rspec-jp-2022.git
で、
git@github.com: Permission denied (publickey)
のようなエラーが起こると思います。
以下の記事をまんまやったらできました。
ssh等のよけいな設定がめんどくさければ下記のコマンドでもクローンできるかと思います。
git clone https://github.com/JunichiIto/everydayrails-rspec-jp-2022.git
bin/setup時のエラー
bin/setup
を実行すると
ActiveSupport::MessageEncryptor::InvalidMessage (ActiveSupport::MessageEncryptor::InvalidMessage)
というエラーがでるかもしれません。
このエラーはどんなエラーかという
詳しいことの説明は、通称「チェリー本」や「、Everyday Rails - RSpec」の著者である伊藤淳一さんの下記の記事におまかせしたいと思います。
https://qiita.com/jnchito/items/a73bc2838bfab5240675
bin/setup時のエラーの解決
を試しても解決しない場合は、以下が原因かもしれません。
伊藤さん本人に解決していただきました。
誠にありがとうございます。
復習として、私のほうでも記事を書かせていただきます。
Railsはcredentialファイルを暗号化するためのマスターキーにconfig/master.keyか環境変数ENV["RAILS_MASTER_KEY"]を使用します。
とあります。Railsは環境変数を参照して暗号化をしようとしてしまいました。
私は以前、 vim ~/.zshrc
とかで RAILS_MASTER_KEYを設定してしまいました。
なので
unset RAILS_MASTER_KEY
で、マシン全体で共通のマスターキーの設定を解除できます。
以下は以前の解決方法
削除するのが望ましいかもしれませんが、反面教師的な感じで一応載せておきます。
結論からいうと
sudo
はほとんどの環境変数をunsetするのでRAILS_MASTER_KEYも消してくれたのかもしれません。
と@zundaさんに教えていただきました。
- credentials.yml.encを削除
- 万が一master.keyがあった場合それも削除
sudo EDITOR="vi" bin/rails credentials:edit
を実行、このときmaster.keyが作られたことを確認。
sudo chmod 764 config/master.key
を実行。権限系のコマンドは自分もよくわかっていないので自己責任でお願いします。
sudo bin/setup
を実行したらデータベースが作られると思います。
ついでにいうと、
# サーバーの起動
bin/dev
も
# サーバーの起動
sudo bin/dev
とやると立ち上がりました。
いちいちsudoコマンドを実行しなくてもいい方法があるかもしれませんが、一応この方法でセットアップが完了しました。
環境
macOS Monterey 12.1
2022/1/31日にbrew updateを実行
ruby 3.1.0p0
Rails 7.0.1