Silence is Foo Mental notes on Ruby/Git/Rails/Flex

19Jul/102

Dumping and restoring data with the YamlDB gem in Rails

What is YamlDB (yaml_db)?

YamlDb is a Rails plugin and a gem for dumping and restoring data in YAML format. It complements the database-independent schema format found in db/schema.rb. The data is saved into db/data.yml.

Some Real-world usages

  • Backup data in YAML format (database-independent)
  • Restore YAML data to virtually any database
  • Switching from say SQLite to mySQL, or other databases
  • Replicate production database data to development database with ease

You can find out how to do all of this in the following blogs:

http://www.railslodge.com/plugins/830-yaml-db
http://accidentaltechnologist.com/ruby/change-databases-in-rails-with-yamldb/
http://blog.heroku.com/archives/2007/11/23/yamldb_for_databaseindependent_data_dumps/

This plugin/gem is really good, the only thing I think it's lacking of is a command-line utility. Why? Because some times you only need to switch the database engine or replicate data one time, why would we have to install a plugin to a specific Rails application if we can have a command-line that works for all the Rails application we work in?

One of the main issues is that yaml_db works with rake tasks so although it's a gem you have to install the rake tasks in your Rails application manually.

That was the main reason I forked the yaml_db project and added it a command-line utility, the only think you'd need to do is to install my fork of the yaml_db gem, not the official one.

For instructions to install my fork click here.

Once installed just issue:

$ yaml_db -h

to see the help.

Usage:
yaml_db task environment
-  task must be an existing rake task in the yaml_db plugin.

Dumping and restoring data with the command-line utility

yaml_db won't work if you're outside a Rails app folder, so...

$ cd ~/projects/my_dummy_rails_application
Replicate production database data to the development one
$ yaml_db data:dump production
$ yaml_db data:load development
Dumping production schema to db/schema.rb and data to db/data.yml
$ yaml_db dump production

Loading db/schema.rb and db/data.yml to development database

$ yaml_db load #environment defaults to development
Filed under: rails, ruby 2 Comments