Sサンタ、現る!!(rake db:seedのアウトプット)

クリスマスもプログラミングに徹している強者たちよ、こんばんは。

 

本日はクリスマス!!ということで、TECH::EXPERTにもサンタさんがやってきました・・・

 

f:id:g1034725:20181225205604j:plain

※この後ノリノリでサンタコスをするライフコーチのSさんでした。

TECH::EXPERT運営様、素敵なイベントを企画していただき、ありがとうございました。

 

 

はい、ということで久々のアウトプットです。

 

rake db:seedについて。

 

現在最終課題のECサイト作成に取り掛かっています。

 

その際、47都道府県や配送の情報などをベタ打ちしていくのは、非常にめんどくさいです。そんな時、使っていただきたいコマンドが、前述のrake db:seedになります。

 

手順としては、下記に示す通りです。

 

rails ファイル

db直下に.csvというファイルを用意します。

 

例えば、47都道府県を記載したファイルであれば、prefectures.csvという風に命名します。

 

そのファイルに、北海道から沖縄までを入力します。(もしくは、スプレッドシートに入力)

 

その後、同じdb直下のseed.rbというファイルに下記のように記述します。

f:id:g1034725:20181225211011p:plain

 

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にログインしましょう。

f:id:g1034725:20181217211029p:plain

 

その後、アプリケーションのところまで入っていき、

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さん。

f:id:g1034725:20181225212947j:plain

 

 

 

コメント

タイトルとURLをコピーしました