スリ飯屋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年でフリーランスエンジニアになるまでの過程、ノウハウなどを書いています。


  • フリーランスに興味がある

  • 今まさに活動している

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

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

  • 【週3案件豊富 正社員並の保証】フリーランスエージェントMidworksを使ってみた感想

  • 【10倍効率化!?】プログラマの作業が鬼捗る【9つのグッズ】

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


www.malanka.tech

www.malanka.tech

www.malanka.tech






また、

駆け出しエンジニアに向けてのnoteを3月17日にリリースしました。

note.com


活躍出来るエンジニアになるためのマインドを、

ギュッと詰め込んだ、「実践型note」になってます。


  • 「IT転職を成功させたい!」

という方は是非チェックしてみてください。






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

もしよかったらTwiiterのフォローもお願いします★