LoginSignup
11
14

More than 3 years have passed since last update.

本番環境にrake db:seedを叩き込む方法

Posted at

開発環境、テスト環境、本番環境にseedデータを叩き込む

seedデータとは

seedデータとは、データベースに投入する初期データのこと

この初期データの投入は、db/seeds.rb に記載します。

db/seeds.rb
# 親階層
lady                         = Category.create(name: "レディース")
men                          = Category.create(name: "メンズ")
baby_kids                    = Category.create(name: "ベビー・キッズ")
interior_residence_accessory = Category.create(name: "インテリア・住まい・小物")
book_music_game              = Category.create(name: "本・音楽・ゲーム")
toy_hobby_goods              = Category.create(name: "おもちゃ・ホビー・グッズ")
cosme_perfume_beauty         = Category.create(name: "コスメ・香水・美容")
appliance_smartphone_camera  = Category.create(name: "家電・スマホ・カメラ")
sport_leisure                = Category.create(name: "スポーツ・レジャー")
handmade                     = Category.create(name: "ハンドメイド")
ticket                       = Category.create(name: "チケット")
car_motorcycle               = Category.create(name: "自動車・オートバイ")
others                       = Category.create(name: "その他")

# 子階層_レディース
lady_1  = lady.children.create(name: "トップス")
lady_2  = lady.children.create(name: "ジャケット/アウター")
lady_3  = lady.children.create(name: "パンツ")
lady_4  = lady.children.create(name: "スカート")
lady_5  = lady.children.create(name: "ワンピース")
lady_6  = lady.children.create(name: "靴")
lady_7  = lady.children.create(name: "ルームウェア/パジャマ")
lady_8  = lady.children.create(name: "レッグウェア")
lady_9  = lady.children.create(name: "帽子")
lady_10 = lady.children.create(name: "バッグ")
lady_11 = lady.children.create(name: "アクセサリー")
lady_12 = lady.children.create(name: "ヘアアクセサリー")
lady_13 = lady.children.create(name: "小物")
lady_14 = lady.children.create(name: "時計")
lady_15 = lady.children.create(name: "ウィッグ/エクステ")
lady_16 = lady.children.create(name: "浴衣/水着")
lady_17 = lady.children.create(name: "スーツ/フォーマル/ドレス")
lady_18 = lady.children.create(name: "マタニティ")
lady_19 = lady.children.create(name: "その他")

# 孫階層_レディース
lady_1.children.create([{name: "Tシャツ/カットソー(半袖/袖なし)"},{name: "Tシャツ/カットソー(七分/長袖)"},{name: "シャツ/ブラウス(半袖/袖なし)"},{name: "シャツ/ブラウス(七分/長袖)"},{name: "ポロシャツ"},{name: "キャミソール"},{name: "タンクトップ"},{name: "ホルターネック"},{name: "ニット/セーター"},{name: "チュニック"},{name: "カーディガン/ボレロ"},{name: "アンサンブル"},{name: "ベスト/ジレ"},{name: "パーカー"},{name: "トレーナー/スウェット"},{name: "ベアトップ/チューブトップ"},{name: "ジャージ"},{name: "その他"}])
lady_2.children.create([{name: "テーラードジャケット"},{name: "ノーカラージャケット"},{name: "Gジャン/デニムジャケット"},{name: "レザージャケット"},{name: "ダウンジャケット"},{name: "ライダースジャケット"},{name: "ミリタリージャケット"},{name: "ダウンベスト"},{name: "ジャンパー/ブルゾン"},{name: "ポンチョ"},{name: "ロングコート"},{name: "トレンチコート"},{name: "ダッフルコート"},{name: "ピーコート"},{name: "チェスターコート"},{name: "モッズコート"},{name: "スタジャン"},{name: "毛皮/ファーコート"},{name: "スプリングコート"},{name: "スカジャン"},{name: "その他"}])
lady_3.children.create([{name: "デニム/ジーンズ"},{name: "ショートパンツ"},{name: "カジュアルパンツ"},{name: "ハーフパンツ"},{name: "チノパン"},{name: "ワークパンツ/カーゴパンツ"},{name: "クロップドパンツ"},{name: "サロペット/オーバーオール"},{name: "オールインワン"},{name: "サルエルパンツ"},{name: "ガウチョパンツ"},{name: "その他"}])
lady_4.children.create([{name: "ミニスカート"},{name: "ひざ丈スカート"},{name: "ロングスカート"},{name: "キュロット"},{name: "その他"}])
lady_5.children.create([{name: "ミニワンピース"},{name: "ひざ丈ワンピース"},{name: "ロングワンピース"},{name: "その他"}])
lady_6.children.create([{name: "ハイヒール/パンプス"},{name: "ブーツ"},{name: "サンダル"},{name: "スニーカー"},{name: "ミュール"},{name: "モカシン"},{name: "ローファー/革靴"},{name: "フラットシューズ/バレエシューズ"},{name: "長靴/レインシューズ"},{name: "その他"}])
lady_7.children.create([{name: "パジャマ"},{name: "ルームウェア"}])
lady_8.children.create([{name: "ソックス"},{name: "スパッツ/レギンス"},{name: "ストッキング/タイツ"},{name: "レッグウォーマー"},{name: "その他"}])
lady_9.children.create([{name: "ニットキャップ/ビーニー"},{name: "ハット"},{name: "ハンチング/ベレー帽"},{name: "キャップ"},{name: "キャスケット"},{name: "麦わら帽子"},{name: "その他"}])
lady_10.children.create([{name: "ハンドバッグ"},{name: "トートバッグ"},{name: "エコバッグ"},{name: "リュック/バックパック"},{name: "ボストンバッグ"},{name: "スポーツバッグ"},{name: "ショルダーバッグ"},{name: "クラッチバッグ"},{name: "ポーチ/バニティ"},{name: "ボディバッグ/ウェストバッグ"},{name: "マザーズバッグ"},{name: "メッセンジャーバッグ"},{name: "ビジネスバッグ"},{name: "旅行用バッグ/キャリーバッグ"},{name: "ショップ袋"},{name: "和装用バッグ"},{name: "かごバッグ"},{name: "その他"}])
lady_11.children.create([{name: "ネックレス"},{name: "ブレスレット"},{name: "バングル/リストバンド"},{name: "リング"},{name: "ピアス(片耳用)"},{name: "ピアス(両耳用)"},{name: "イヤリング"},{name: "アンクレット"},{name: "ブローチ/コサージュ"},{name: "チャーム"},{name: "その他"}])
lady_12.children.create([{name: "ヘアゴム/シュシュ"},{name: "ヘアバンド/カチューシャ"},{name: "ヘアピン"},{name: "その他"}])
lady_13.children.create([{name: "長財布"},{name: "折り財布"},{name: "コインケース/小銭入れ"},{name: "名刺入れ/定期入れ"},{name: "キーケース"},{name: "キーホルダー"},{name: "手袋/アームカバー"},{name: "ハンカチ"},{name: "ベルト"},{name: "マフラー/ショール"},{name: "ストール/スヌード"},{name: "バンダナ/スカーフ"},{name: "ネックウォーマー"},{name: "サスペンダー"},{name: "サングラス/メガネ"},{name: "モバイルケース/カバー"},{name: "手帳"},{name: "イヤマフラー"},{name: "傘"},{name: "レインコート/ポンチョ"},{name: "ミラー"},{name: "タバコグッズ"},{name: "その他"}])
lady_14.children.create([{name: "腕時計(アナログ)"},{name: "腕時計(デジタル)"},{name: "ラバーベルト"},{name: "レザーベルト"},{name: "金属ベルト"},{name: "その他"}])
lady_15.children.create([{name: "前髪ウィッグ"},{name: "ロングストレート"},{name: "ロングカール"},{name: "ショートストレート"},{name: "ショートカール"},{name: "その他"}])
lady_16.children.create([{name: "浴衣"},{name: "着物"},{name: "振袖"},{name: "長襦袢/半襦袢"},{name: "水着セパレート"},{name: "水着ワンピース"},{name: "水着スポーツ用"},{name: "その他"}])
lady_17.children.create([{name: "スカートスーツ上下"},{name: "パンツスーツ上下"},{name: "ドレス"},{name: "パーティーバッグ"},{name: "シューズ"},{name: "ウェディング"},{name: "その他"}])
lady_18.children.create([{name: "トップス"},{name: "アウター"},{name: "インナー"},{name: "ワンピース"},{name: "パンツ/スパッツ"},{name: "スカート"},{name: "パジャマ"},{name: "授乳服"},{name: "その他"}])
lady_19.children.create([{name: "コスプレ"},{name: "下着"},{name: "その他"}])

このseedデータをデータベースに投入するには

$ rake db:seed

で開発環境には投入出来ます。

テスト環境では

$ rake db:seed RAILS_ENV=test

でおけ

問題は本番環境でのseedデータの投入でござんす

上記のイメージだと


$ rake db:seed RAILS_ENV=production

これで入りそうですが 本番環境のデータベースはそんな単純ではない

おおん? 何やっても入らんぞ?

と悩んだあげく

/var/www/アプリ名/current まで移動して実行すればデータ投入ができました。

/var/www/アプリ名 に設定して

cd current

この状態で

rake db:seed RAILS_ENV=production

これで 本番環境にseedデータを叩き込むことが出来ました。
なぜcurrentだと入るのか? ここは謎のまんまです。

さて なぜ seedデータなのか

多階層カテゴリを扱いたかったからです

結局はancestryというgemを使いたくて そのためにはseedでデータ投入するのが一番効率的だというお話です。
gem ancestryについてはこちら
https://qiita.com/Sotq_17/items/120256209993fb05ebac

11
14
0

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
11
14