困っていること
railsであるサービスを立ち上げたが既にDBに値が入ってる本番環境で
マスタデータのみを更新したいと思ったが
rails db:migrate:resetしてrails db:seedをしてしまうと
マスタデータ以外は全て消えてしまうのでどうしようと困っていた。
gem
今回見つけたgemはseed_fuというもの。
これはseedデータを挿入してよしなにしてくれるもの?
やったこと
まずgemファイルに以下を追加し、bundle install。
gem 'seed-fu'
そのあとroot直下のdbの中にfixturesディレクトリを作成。
さらにfixturesディレクトリの中にdevelopmentとproductionディレクトリを作成。(ちなみに自分はこの二つは特に必要なかったので作成しなかった。)
fixturesディレクトリ配下に置いてあるseedを見てくれるらしい。
productionだったらproduction環境でのみ動くらしい。
自分は
fixturesディレクトリ直下にuser.rbというファイルを作成し、
以下のように配置した。
User.seed do |s|
s.id = 1
s.name = "山田太郎"
end
まあ、これだとちょっと多い時に長くなってしまうので
User.seed(
{ id: 1, name: '山田太郎' },
{ id: 2, name: '山田花子' }
)
こんな感じがいいよと教えてもらった。
あとはコマンドで以下を叩く。
$rake db:seed_fu
そうすると本番環境でも、どの環境でも
fixtures配下に置いてあるものだけ更新された!