rake db:dump - сливаем базу приложения на Ruby on Rails
02 декабря 2010, обновлена 01 января 2011
Каждый раз, когда нужно слить базу приложения Ruby on Rails, приходится лезть в database.yml и смотреть пароль, разнося его по логам, буферу обмена и/или каналам связи.
Почему-то в поставке Ruby on Rails есть script/dbconsole, есть rake db:schema:dump, а rake db:dump нет.
Итак, я вчера написал обертку для mysqldump (или pg_dump, или sqlite), использующую настройки из database.yml для дампа базы – потому что так правильно и красиво.
Обертка располагается в геме rails_db_dump и уставливается так:
Rails 3
# Gemfile
gem 'rails_db_dump'
Rails 2.3
# config/environment.rb
config.gem 'rails_db_dump'
# Rakefile
include 'rails_db_dump/tasks' rescue nil
После выполнения этих телодвижений появляется Rake-команда
rake db:dump
или, в полезном контексте
rake db:dump RAILS_ENV=production | gzip > dump.sql.gz
Проблема решена! Поздравляю всех с началом зимы.

попробую на досуге, спасибо!
Как говорится всё уже придумано до нас :)
Довольно давно пользуюсь вот этим плагином для решения задач с дампом базы.
У него есть ещё одно полезное применение т.к. база дампится в yml можно переносить данные между баз разных форматов
например дампим mysql на проде, а восстанавливаем в sqllite и тп.
Установка
script/plugin install git://github.com/adamwiggins/yaml_db.git
Появляются таски
rake db:data:dump # Dump contents of Rails database to db/data.yml
rake db:data:load # Load contents of db/data.yml
Да ,я тоже пользуюсь yaml_db, но он не делает полноценного дампа – как минимум, он вообще не сохраняет структуру базы. Следовательно, его нельзя использовать для резервного копирования.
Для чего yaml_db хорош, так это для переноса всяких словарных таблиц и хранения их вместе с кодом.
Согласен, но обычно структура не нужена, её всегда можно получить db:migrate.