我们正在将表数据移动到不同的数据库中进行归档。因此,当用户在主数据库中添加迁移时,我想显示一条默认消息,提醒他们对存档数据库中的表执行相同的迁移。我怎样才能做到这一点而不必在迁移中手动添加消息?
user1864666
问问题
221 次
1 回答
1
Prakash 提出了一个优雅的解决方案。但是您最初的问题是关于覆盖默认任务以添加我相信的消息。
也许尝试这样的事情。礼貌: http: //metaskills.net/2010/05/26/the-alias_method_chain-of-rake-override-rake-task/
Rake::TaskManager.class_eval do
def alias_task(fq_name)
new_name = "#{fq_name}:original"
@tasks[new_name] = @tasks.delete(fq_name)
end
end
def alias_task(fq_name)
Rake.application.alias_task(fq_name)
end
def override_task(*args, &block)
name, params, deps = Rake.application.resolve_args(args.dup)
fq_name = Rake.application.instance_variable_get(:@scope).dup.push(name).join(':')
alias_task(fq_name)
Rake::Task.define_task(*args, &block)
end
现在您可以像这样覆盖 rake db:migrate。
namespace :db do
override_task :migrate => :environment do
# Your message here
# To invoke the original task add ":original" to its name
Rake::Task["db:migrate:original"].execute
...
end
end
于 2013-03-18T09:10:07.530 回答