2008-09-02 2 views
0

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

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

Возможно, миграция db не подходит для такого типа вещей. Благодаря!


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

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

Есть ли способ вызова рек задачи из рубиновое приложение?

ответ

1

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

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

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

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

+0

> заметь, у меня есть не знаю, как (или почему) у вас может быть одна база данных для каждого пользователя. Следующая ссылка описывает, как и почему несколько баз данных (может быть, это должен быть другой вопрос в stackoverflow?) [http://wiki.rubyonrails.org/rails/pages/HowtoUseMultipleDatabases](http://wiki.rubyonrails. орг/рельсы/страниц/HowtoUseMultipleDatabases) – 2008-09-02 17:08:45

1

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

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

0

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

ActiveRecord :: Migrator.migrate ("дб/мигрирует /")

Смежные вопросы