Suporte a migrações de plugins

Bráulio Bhavamitra braulio at eita.org.br
Thu Jun 13 11:59:32 BRT 2013


Oi pessoal,

O suporte a migrações de plugins é bem limitado, sobretudo por conta
do rails pois não suporta vários caminhos de pastas para migrações.
Isto faz por exemplo que as tasts db:migrate:{down,up,reset} não
funcionem para uma migração de um plugin.

Bom, para resolver isto fiz um monkey patch bem simples que acabou
também simplificando o lib/tasks/plugin.rake

Veja como ficou o arquivo no final.
Se for tudo bem isto, faço um merge request.

abraços,
braúlio

require 'active_record'
require_dependency 'active_record/migration'

class ActiveRecord::Migrator
  alias_method :orig_initialize, :initialize
  def initialize *args
    orig_initialize *args
    @migrations_path = "{db/migrate,config/plugins/*/db/migrate}"
  end
end

namespace :noosfero do
  namespace :plugins do
    plugin_migration_dirs = Dir.glob(File.join(Rails.root, 'config',
'plugins', '*', 'db', 'migrate'))
    task :migrate do
      plugin_migration_dirs.each do |path|
        ActiveRecord::Migrator.migrate(path, ENV["VERSION"] ?
ENV["VERSION"].to_i : nil)
      end
    end
  end
end


More information about the Noosfero-br mailing list