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

IT実務未経験から約1年、東京でフリーランスのRuby on Railsエンジニアに転職。約2年半、大阪中崎町でスリランカカレーの間借りしてました。フリーランスエンジニアになるためのノウハウ、スリランカの事を発信していきます。

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

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

こんにちは、mahです。

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

今回は、開発環境のデータを本番環境(今回はheroku)へ移動する方法 についてです。

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)へ移動する方法 でした。

同じようなことで困っている方の参考になれば幸いです。

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

  • 「フリーエンジニアになりたい!」

という方は、下記の記事で、

  • 【必読】未経験からフリーランスエンジニアになるため必要な5つの行動

  • 【実体験】高卒文系が1年でRailsのフリーエンジニアになった話

  • 【完璧】フリーエンジニアの案件面談対策 〜全20問〜

  • 【好印象】フリーエンジニアのスキルシートの書き方5つのポイント

を紹介していますので、よかったらチェックしてみてください。

全て実体験 です。

www.malanka.tech

www.malanka.tech

www.malanka.tech

www.malanka.tech

最後までお読み頂きありがとうございました★