スリ飯屋MaLankaのフリーエンジニアな日々

このブログでは、フリーランス5期目となる自身の実体験から、フリーランスエンジニアになるためのノウハウ、ブログや沖縄移住、スリランカの最新情報について発信します。

【Rails】開発環境のデータを本番環境(heroku)へ移動【seed_dump】

※記事内に提携先企業のアフィリエイト広告(リンク、バナー等)、Google広告を含む場合があります

【Railsのtips】 開発環境のデータを本番環境(heroku)へ移動する方法【seed_dump】

こんにちは、mahです。

このブログでは、僕がIT未経験から約1年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いていきます。


今回は、

  • 開発環境のデータを本番環境(今回はheroku)へ移動する方法

についてです。

【Rails】開発環境のデータを本番環境(heroku)へ移動【seed_dump】




結論

seed_dump というgemを使うとサクッと実現出来ます。


このgemは簡単にいうと、

  • DBのデータをseedファイルに超楽チンに書き出せるgem

です。


本番環境の商品データを、

定期バッチでスクレイピングして貯めていこうかと思っていました。


が、スクレイピングは結構な確率で失敗するので、効率が悪い。


ならば、

  • 「開発環境で一気にデータを作ってしまって、それを本番環境に流せばラクなはず」


そう思って探していたら見つけました。


こんな便利なgemを作ってくれた先人に感謝です★


ドキュメント


GitHub - rroblak/seed_dump: Rails 4/5 task to dump your data to db/seeds.rb


日本語readme


seed_dumpの使い方 · GitHub


使い方


1. 下記をgemfileに記述してbundle install


gem 'seed_dump'


2. ターミナルでdb:seed:dumpコマンド実行


$ bin/rake db:seed:dump FILE=tmp/hoge.rb


..なのですが、自分はターミナルで実行しても何も起こりませんでした...謎。

ですので、Rails Consoleの中で実行する方法を取りました。

$ bundle exec rails c

# 第一引数にseedファイルに書き出したいモデルの名前、第二引数に書き出し先のファイル名を指定する
> SeedDump.dump(AmazonBookCatalog, file: 'db/seed_dump/amazon_book_catalogs.rb')

# 事前に空ファイルを作っておく必要があります。ファイルが存在しないと下記のようにエラーになります。
> SeedDump.dump(AmazonBookCatalog, file: 'db/seed_dump/amazon_book_catalogs.rb')
   (0.6ms)  SELECT COUNT(*) FROM "amazon_book_catalogs"
Errno::ENOENT: No such file or directory @ rb_sysopen - db/seed_dump/amazon_book_catalogs.rb

# コマンドが実行出来た時の戻り値はnil
> SeedDump.dump(AmazonBookCatalog, file: 'db/seed_dump/amazon_book_catalogs.rb')
   (0.2ms)  SELECT COUNT(*) FROM "amazon_book_catalogs"
   (0.1ms)  SELECT COUNT(*) FROM "amazon_book_catalogs"
  AmazonBookCatalog Load (3.1ms)  SELECT "amazon_book_catalogs".* FROM "amazon_book_catalogs" LIMIT ? OFFSET ?  [["LIMIT", 221], ["OFFSET", 0]]
=> nil


3. ファイルにデータが書き出されていることを確認する


新規でファイルが生成されているはずなので、確認してください。


4. 生成されたファイルから、本番環境(今回はheroku)へデータを投入する


$ heroku run rails db:seed


これで、開発環境のデータを本番環境に移動させることが出来ます。


注意点


herokuにseedを実行する際は、

herokuにpushしてからやりましょう。

ちょいちょいpushしないまま実行しててハマります。。笑




以上、

  • 開発環境のデータを本番環境(heroku)へ移動する方法

でした。




RailsやRubyを学びたい人へ


RailsやRubyを学びたい人は、

RailsHack(レイルズハック)という、

最近できた新しいプログラミングスクール(今なら通常価格69,800円が、早期割で29,800円!)か、

Udemy で下記のコースを受講すると良いです★


✅1. フルスタックエンジニアが教える 即戦力Railsエンジニア養成講座

✅2. 【はむ式】ハンズオンで学ぶRuby on Rails 6【Dockerにも触れられる】 <- おすすめ。ハムさんはReactやTypeScriptの教材も非常に丁寧。

✅3. はじめてのRuby on Rails入門-RubyとRailsを基礎から学びWebアプリケーションをネットに公開しよう




また、

Udemy は定期的にセールをやっていますし(90%OFFとかもザラ)、

「30日間なら返金できる」ので、

満足できなかった時でも安心です。


f:id:mah666hhh:20201129193352p:plain


【公式】RailsHack(レイルズハック)

【公式】Udemyで学んでみる