Выполнение миграции базы данных из приложения

StackOverflow https://stackoverflow.com/questions/38922

  •  09-06-2019
  •  | 
  •  

Вопрос

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

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

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


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

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

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

Это было полезно?

Решение

Чтобы ответить на часть вашего вопроса, вот как вы запускаете задачу 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("база данных/перенести/")

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top