Запуск БД Миграции из приложения

У меня есть приложение rails, где у каждого пользователя есть отдельная база данных. (принимая совет Джоэла Спольски по этому поводу). Я хочу запустить миграцию БД из приложения rails, чтобы создать новую базу данных и таблицы для этого пользователя.

Какой самый простой способ сделать это?

Возможно, миграция БД не самая лучшая для такого рода вещей. Спасибо!


Было бы неплохо, если бы это был полностью автоматизированный процесс. Следующий процесс будет идеальным.

  1. Пользователь регистрируется на нашем сайте, чтобы использовать это веб-приложение.
  2. Для создания базы данных пользователей и правильной настройки таблиц выполняются миграции.

Есть ли способ вызова грабли из приложения ruby?

3 ответа

Решение

Чтобы ответить на часть вашего вопроса, вот как вы запускаете задачу rake из кода Rails:

require 'rake'
load 'path/to/task.rake'

Rake::Task['foo:bar:baz'].invoke

Имейте в виду, я не знаю, как (или почему) вы могли бы иметь одну базу данных на пользователя.

Мы используем отдельные файлы конфигурации для каждого пользователя. Так что в config/ dir у нас будет roo.database.yml, который будет подключаться к моей личной базе данных, и я скопирую его в файл database.yml, который используется rails.

Мы думали о расширении rakes Rakefile, чтобы мы могли указать разработчика в качестве переменной среды, которая затем выберет конкретную конфигурацию базы данных, что позволит нам иметь только один файл database.yml. Мы этого еще не сделали, так как вышеописанный метод работает достаточно хорошо.

На самом деле я нашел хороший способ запустить миграцию БД из приложения:

ActiveRecord:: Migrator.migrate ("дб / мигрировать /")

Другие вопросы по тегам