seed.rb の中身が反映されない時

スポンサーリンク
surfing.manプログラミング
スポンサーリンク

seed.rb の中身が反映されない時

今回はseed.rbに書いた内容が開発環境と本番環境で反映されない時の対処法についてお話しします。

問題点

seed.rbの内容が反映されない

チーム開発でフリマアプリを制作中の出来事。

「あれ、昨日まで動いてた商品出品機能のカテゴリー選択欄が表示されない」

フォームをクリックしてもドロップダウンリストが表示されない

Javascriptで動かしているんですがそのコードは一切触っていないしコントローラーもいじっていない。

なぜ?

仮説

もしかしてDB絡み?

動いていないのは自分だけ。

コードは皆と同じで他のメンバーと違うところってどこだ?

・・・おそらくDB絡みだ。DBはそれぞれ中身が違う。

マイグレーションファイル内のカラムを何度か修正しその度に「rails db:rollback」→ 「カラムの修正」→ 「rails db:migrate」を実行していた。

しかし何をどうすれば良いか分からず迷っていた。

実施

とりあえずカテゴリ機能関連のファイルを必死で見ていたところ、メンバーから鶴の一声。

「rails db:seed は実行しましたか?」

体に衝撃が走った。

実はカテゴリーの中身はseeds.rbに記述しており初めてその機能をプルした時に「rails db:migrate」に併せて「rails db:seed」コマンドを実行していたのだった。

その後カラムを何度か修正していたが「rails db:seed」コマンドは実行していなかった。

早速コマンドを試した結果、無事にカテゴリ選択ができるようになりました。

本番環境ではrails db:seedだけではダメ

その後capistranoを使って自動デプロイを実行し、本番環境で正常に動くかどうかテストを行った結果、またしてもカテゴリ選択機能が動かない。

「rails db:seed」やったのに。。。

ここでまたメンバーからの鶴の一声。

「この記事見れば解決できそうです」

本番環境でrake db:seedを使ったデータ投入 - Qiita
rake db:seedでデータ投入した際、開発環境ではデータは入ったのですが、 本番環境でデータが入らなかったので、その記録です。 課題 (以前の記事) lady = Category.create(:name=>"レデ...

まさに自分が遭遇している問題と同じ。

本番環境の場合。

  1. sshログイン
  2. /var/www/アプリ名/currentディレクトリまで移動
  3. rails db:seed RAILS_ENV=production を実行

本番環境ではsshログイン後currentディレクトリまで移動しないといけないようです。

これで無事に本番環境でもseed.rbの中身を反映させることができました。

コメント