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

Проблема решена! Поздравляю всех с началом зимы.



Четыре комментария. Напиши еще один
  1. 709dce544c3cc37365fff71c26592397 # 16 января 2011 Павел (galeta-pavel.livejournal.com) написал:

    попробую на досуге, спасибо!

  2. Be2b4ff20a2973148327d3b84bf7a9ce # 19 января 2011 Дамир (dammer2k.blogspot.com) написал:

    Как говорится всё уже придумано до нас :)

    Довольно давно пользуюсь вот этим плагином для решения задач с дампом базы.
    У него есть ещё одно полезное применение т.к. база дампится в 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

    1. 777894ea5153122bfa6b83f5bbf23622 # 20 января 2011 Леонид Шевцов (автор) написал:

      Да ,я тоже пользуюсь yaml_db, но он не делает полноценного дампа – как минимум, он вообще не сохраняет структуру базы. Следовательно, его нельзя использовать для резервного копирования.

      Для чего yaml_db хорош, так это для переноса всяких словарных таблиц и хранения их вместе с кодом.

  3. Be2b4ff20a2973148327d3b84bf7a9ce # 20 января 2011 Дамир (dammer2k.blogspot.com) написал:

    он не делает полноценного дампа – как минимум, он вообще не сохраняет структуру базы.

    Согласен, но обычно структура не нужена, её всегда можно получить db:migrate.

(нужна разметка?)

  • **жирный**
  • > цитата

отменить