LoginSignup
2
1

More than 5 years have passed since last update.

本番でマスタデータだけを更新したい。

Posted at

困っていること

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配下に置いてあるものだけ更新された!

2
1
1

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
2
1