自転車とプログラミング

元自転車メーカーのマーケター、今は自社開発企業に勤めるエンジニアが主にプログラミングの話を書きます。

seeds.rbの取得先をテストデータにする

やりたいこと

  • 開発環境のようにテストにおいても初期データを作成したい
    • なんなら開発環境とテスト環境の初期データを共通管理したい
  • RSpec配下のファイルで初期データを設定したい

もともとRSpecうんちゃら以外のところはminitest時代に設定していました。今回RSpecに移行したのでそもそもの開発環境とテストの初期データ共通化の設定方法から記事にします。

seeds.rbで使うデータを指定する

seeds.rbのデフォの使い方としては POLO(plane old Ruby object / 素のRuby)で必要なデータを記述して、実行することで各環境のDBにデータが格納される。

# 例: 管理者を作成する
Admin.create!(
   email: 'admin@admin',
   password: 'adminmin'
)

seeds.rbにrake処理を書くと指定のファイルからデータの形式を取得することができるようになります。

# frozen_string_literal: true

system('rake db:fixtures:load FIXTURES_PATH=spec/fixtures')

rakeタスクを実行し、データベースにフィクスチャをロードするように書かれています。

ここでのFIXTURES_PATH に代入した値がロード先のファイルになります。これによって読み込み先をminitestにしたり、RSpec 配下のディレクトリにすることができます。