title: “yaml_db RailsのDBをコマンドひとつでYAML形式でダンプ/ロードできるRubyGem”
category: Rails rubygem Ruby

🐡 tags: [Rails RubyGem Ruby]

Where?RakeコマンドでRailsのDBをYAML形式でダンプ(dump)/ロード(load)することができるgem yaml_dbの紹介です。ステージング環境のDBをダンプして本番環境と置き換える場合や、HerokuへのDBデータのアップロードなどに使えます。

ludicast/yaml_db | GitHub


🐠 yaml_dbの導入

いつ戻おりGemfileに次の内容を追加して、bundle installを実行。

# DBをYAML形式でダンプ/ロード
gem 'yaml_db'

🍮 DBのダンプとロード

gemがインストールされると次のRakeが追加されます。

# db/data.yamlを生成
rake db:data:dump
# db/日付フォルダ/tablename.yamlを生成
rake db:data:dump_dir
# db/data.yamlを読み込み
rake db:data:load
# db/日付フォルダ/tablename.yamlをDBに読み込み
rake db:data:load_dir

公式ページに詳しい説明があります。よかったらご覧になってください。

ludicast/yaml_db | GitHub

🤔 補足: Capistranoとの連携

Capistranoを使ってダンプしたDBのyamlデータロードをデプロイプロセスに組込みたい場合はconfig/deploy.rbに以下を追加。

namespace :deploy do # namespaceは任意
desc "Load the seed data from db/data.yml"
task :dump_yml_load do
run "cd #{current_path} && RAILS_ENV=production bundle exec rake db:load"
end
end
after :deploy, "deploy:dump_yml_load"

もし、Deployプロセスを自動化するGem Capistranoについて興味がある方は、「Rals3.2.9で始める Git連携Capistranoによる自動デプロイ」をご覧になってみてください。

😼 補足: DBをロードした時に日本語が文字化けした場合

僕の環境では発生しませんでしたが、もしDBをロードした時に日本語の文字化けが発生した場合はこちらのリンクが参考になるかと思います。

[RoR] yaml_db で生成したYAMLファイルの日本語が文字化けする

📚 おすすめの書籍

🖥 サーバについて

このブログでは「Cloud Garage」さんのDev Assist Program(開発者向けインスタンス無償提供制度)でお借りしたサーバで技術検証しています。 Dev Assist Programは、開発者や開発コミュニティ、スタートアップ企業の方が1GBメモリのインスタンス3台を1年間無料で借りれる心強い制度です!(有償でも1,480円/月と格安)