LoginSignup
4
4

More than 3 years have passed since last update.

複数人で新規Railsプロジェクトを立ち上げる時の落とし穴

Posted at

概要

複数人でRailsプロジェクトに携わる際に、最初にハマった落とし穴の備忘録

環境

macOS 10.13.6
Rails 6.0.0
Ruby 2.6.5
docker desktop 2.1.0.3
docker-compose 1.24.1

発生した問題

  1. 別の人が rails new コマンドで新規プロジェクトを作成し、Gitのリポジトリにpush
  2. 自分がそのリポジトリをcloneし、 docker-compose build
  3. docker-compose up したところ ArgumentError: Missing `secret_key_base`エラーが発生

試した内容

  • エラー文に set this string with `rails credentials:edit`とあるので、何も考えずにコマンドを実行
    結果、railsコマンドの使い方知らねーの?って怒られる
    Usage:
      rails new APP_PATH [options]
      (以下略)
  • エラー文でググったところ、config/master.keyがないためと判明。何も考えずに別プロジェクトのconfig/master.keyをコピーしてみる 結果、ActiveSupport::MessageEncryptor::InvalidMessage: ActiveSupport::MessageEncryptor::InvalidMessageエラーが発生 少し考えれば、別プロジェクトのmaster.keyで通るわけもなく。。。

問題の原因

ここまでやって、ようやく少し考えながら調べました。
Rails 5.2からsecrets.ymlに代わり、config/credentials.yml.encという暗号化したファイルで取り扱うことに。

このファイルを複合するためにconfig/master.keyENV['RAILS_MASTER_KEY']が必要になりました。

つまり暗号化したファイルを複合するための鍵がないからエラーになっていたというわけです。

config/master.keyconfig/credentials.yml.encrails newのタイミングで生成されますが、ここで落とし穴。

config/master.keyはデフォルトで.gitignoreに含まれています。

つまり、プロジェクト作成者がこの事を知らずにpushした場合、config/master.keyが含まれないことになります。

問題の回避方法

ここまでわかればあとは簡単です。

プロジェクト作成者に.gitignoreconfig/master.key部分をコメントアウトしてもらって、改めてconfig/master.keyをpushしてもらえば解決です。

ENV['RAILS_MASTER_KEY'].envで設定する方法もあるかと思いますが、config/master.keyをpushしてもらう方が楽だと思います。

まとめ

何も考えずに行動するのは、だいたい時間の無駄になるので気をつけましょう。

4
4
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
4
4