Динамически выполнять файлы миграции - PullRequest
0 голосов
/ 09 декабря 2010

Как мы можем динамически выполнить файл mignation из исходного кода. Означает, что мы хотим выполнить файл миграции из действия контроллера. Как мы можем это сделать?

Ответы [ 2 ]

3 голосов
/ 10 декабря 2010

Основная проблема заключалась в том, что мы не знаем имен файлов миграции. Я делаю это с помощью следующего кода

ActiveRecord::Migrator.migrate("vendor/plugins/#{self.id.to_s}/lib/db/migrate/", nil)
Package::Rake.call('db:schema:dump')

И класс Rake имеет следующий метод

def call(task, options={})
   options[:rails_env] = Rails.env
   args = options.map { |n,v| "#{n.to_s.upcase}='#{v}"}
   system "rake #{task} #{args.join(' ')} --trace >> #{Rails.root}/log/rake.log &"
end

Надеюсь, это поможет некоторым органам с подобными проблемами.

2 голосов
/ 09 декабря 2010

Предполагается, что миграция статична и находится в каталоге db / migrate при запуске сервера приложений:

Вы можете добавить каталог миграции в путь автозагрузки в config / application.rb, а затем потребовать, чтобы файл миграции был запущен внутри вашего контроллера (или в инициализаторе конфигурации):

application.rb

config.autoload_paths += %W(#{Rails.root}/db/migrate)

your_controller.rb

require '20101209102033_some_migration_file'
#....
SomeMigrationFile.up

Мне было бы интересно узнать, каков вариант использования здесь. Кажется довольно диким!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...