Seed_fuって何?って話

プログラミングを本格的にスタートして3ヶ月目に入りましたさかもとです。

今回はseed_fuを使った際にデータが作成されない!ってなったのでseed_fuの話をアウトプットしようと思います。

 

seed_fuって何?

 

初期データをデータベースに作成したいときに使うgem。

seedより柔軟で扱いやすい。

 

インストール

 

gem ' seed_fu '

bundle

 

ファイルの作成

 

db/fixtures以下に環境別にフォルダを作成後、作成したいmodel別にファイルを作成。

https://i.gyazo.com/0f0407dd70c7d7f96a381bd08f764a2b.png

 

データの記述

 

seedは「種」という意味がありますが今回も作成するもととなるデータを作成します。

今回はpuroduction環境のuserモデルを作成していこうと思います。

production/users.rbにモデルの情報を記入していきます。

```

User.seed(

{ id: 1, name: 'user1', crypted_password: 'user1_password',  role: :admin }

)

```

このようにカラムにあった内容を記述します。

現段階では記述しただけで実際に作成はされていません。

 

データの作成

 

```

rake db:seed_fu

```

このコマンドでデータが実行されます。

しかし気をつけなくてはいけない点があります。

今この段階でproduction環境のデータは作成されたかもしれませんが他の環境のデータが作成されたかはわかりません。

自分が狙ったファイルのデータが実行できるように作成する場合はファイルを指定してあげると良いです。

```

rake db:seed_fu FIXTURE_PATH=(ファイルの場所)

```

 

テスト実行時の記述

 

Rspecなどの自動テストはテスト毎にデータがクリーンな状態になるように設定されていると思います。

しかしseed_fuを使う場合はマスターデータとしてテスト前にすでにデータが作成されている状態にしておきたいです。

そんな時はseedが自動で実行されてからテストが走り出すように設定しましょう。

```

rails_helper.rb

:

:

RSpec.configure do |config|

 config.before :suite do

        SeedFu.seed

    end

end

```

これで完了です。