こんにちは。
わたしもまだ学習しながらなのですが、わかる範囲で書いてみますね。
fixturesとseedに関しては、こちらの記事にとても良く書かれていましたので、リンクを貼っておきます。
(1) fixtureとseedの違い
fixtures:
どちらもDBにデータを投入するための仕組みですが、fixturesは主にテストに使う場合のデータ登録用に使います。(異なる現場もあるかもしれませんが)
Railsに標準でついてくるminitestと組み合わせて利用します。
(こちらも全ての現場が使うわけではなくて、わたしの場合はtest目的では、fixturesよりもFactoryGirlを使っています)
seed:
こちらは、マスタデータを初期登録したりするのに使います。
たとえば、部署一覧(部署マスタ)、郵便番号一覧、勘定科目一覧、カテゴリ一覧とか。
(seedも必ずしも使われるわけではないです)
(2) いつ使う?
fixturesはテスト目的なので、RAILS_ENV=test の時。
seedはアプリケーションの前提となるマスタデータ登録が目的なので、test / development / productionどの場合でも使われる可能性があります。
ただし、seedは一切使わない現場もあるので、必須ではないです。
(DB専門の担当者がいる現場では、csvを別に用意してSQLやDB管理用のツールでロードする場合のほうが多いかも?)
(3)db:migrate
環境変数 RAILS_ENV をもとにdatabase.yml に記載したどのDBをターゲットにするかが決まります。
指定がなければdevelopmentが対象です。
(4) fixtures または seed の適用方法
Railsでテーブル作成・変更やテスト実行のような作業は、rakeタスクとして用意されています。
$ bundle exec rails -T (または rails -T / rake -TでもOK) とコマンドを打つと、標準で利用できるタスクの一覧が表示されます。
rails db:migrate は対象のDBへテーブルを追加変更削除するコマンドです。
rails -T の結果に、以下2つがあったと思います。
それぞれこうなります。
- rails db:fixtures:load (こちらがfixturesのデータのロード)
- rails db:seed (こちらがseedのデータのロード)
test用のDBに適用するのであれば、
$ export RAILS_ENV=test # まず先に環境変数を切り替え、対象をtestに向ける
$ rails db:migrate # RAILS_ENV=testなのでテストDBにmigration
$ rails db:fixtures:load # ひきつづきテストDBにfixturesのデータをロード
$ rails db:seed # seedのデータも必要ならseedも実行
こんな感じです。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/07/12 00:58
2017/07/12 02:06
2017/07/12 06:03