酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

Yaml_db RailsのDBをコマンド一つでYAML形式でダンプ/ロードできるRubyGem

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

ludicast/yaml_db | GitHub


yaml_dbの導入

いつもどおりGemfileに以下の内容を追加して、bundle installを実行。

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

DBのダンプとロード

gemがインストールされると以下のrakeが追加されます。

1
2
3
4
5
6
7
8
9
10
11
# 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に以下を追加。

1
2
3
4
5
6
7
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ファイルの日本語が文字化けする

おすすめの書籍