プログラミング勉強中!!

TECH::EXPERT 40期 受講生の筆者がその日学んだことをアウトプットしていくブログです。学習量によっては全て書ききれないこともあります。お気付きのことありましたバシバシコメントください!!3月中旬よりWEBエンジニアとして働くことになりました。日々の業務などについても発信させていただきたいと思います!!よろしくお願いいたします!!

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