クリスマスもプログラミングに徹している強者たちよ、こんばんは。
本日はクリスマス!!ということで、TECH::EXPERTにもサンタさんがやってきました・・・
※この後ノリノリでサンタコスをするライフコーチのSさんでした。
TECH::EXPERT運営様、素敵なイベントを企画していただき、ありがとうございました。
はい、ということで久々のアウトプットです。
rake db:seedについて。
現在最終課題のECサイト作成に取り掛かっています。
その際、47都道府県や配送の情報などをベタ打ちしていくのは、非常にめんどくさいです。そんな時、使っていただきたいコマンドが、前述のrake db:seedになります。
手順としては、下記に示す通りです。
rails ファイル
db直下に.csvというファイルを用意します。
例えば、47都道府県を記載したファイルであれば、prefectures.csvという風に命名します。
そのファイルに、北海道から沖縄までを入力します。(もしくは、スプレッドシートに入力)
その後、同じdb直下のseed.rbというファイルに下記のように記述します。
dbフォルダのprefecture.csvを順番に登録していきましょう!!という記述になります。
ここで、rake db:migrate!!!で初期データをdbに投入できているはずです。
※2回目のrake db:seedを行いたい!!という場合は要注意です。
IDが連番となってしまうため、情報を引き出す時に、狂いが生じます。
都道府県の場合だと、通常1~47のIDが付与されるはずですが、48~94のIDが付与されることとなります。
そうならないために、2回目以降のrake db:seedは、以下のステップを踏んでください。
rake db:migrate:reset
からの
rake db:seed
rake db:migrate:resetコマンドは、1度全てのmigrateをリセットしてくれ、再度migrateを行ってくれるという優れものです。
さて、これでローカル環境へ初期データを投稿するのはマスターしました。
本番環境はどうでしょうか??
まずは、EC2にログインしましょう。
その後、アプリケーションのところまで入っていき、
rake db:seed!!!!・・・
あれ・・・反映されない。
どういうことだ・・・・?
どうやら、本番環境とローカル環境では、入力するコマンドが違うようでした。
rake db:seed RAILS_ENV=production
こちらが正しいコマンドのようです。
RAILS_ENV = productionは、本番環境を指定するために入力します。
そして、これでも反映がされず、筆者は1日ほど悩みました・・・
結果、EC2上のアプリケーションの中のcurrentまで入って上記コマンドを実行した結果、反映されました。
/var/www/アプリ名/current まで入って、rake db:seed RAILS_ENV=production
でようやく初期データの投入が完了しました。
苦労しましたが、なんとかできるようになりました・・・
おまけ・・・サンタコスを楽しむライフコーチSさん。
コメント