我的rails应用程序在lib/tasks/*
当任何这些任务运行时,我想输出日志START
和STOP
消息。
对于个人佣金任务,我可以做类似
的事情namespace :foo do
task :bar, [:some_arg] => :some_pre_requisite do |t, args|
Rails.logger.info "Rake START - {task: \"#{t}\", args: #{args}}"
# Do stuff
Rails.logger.info "Rake STOP - {task: \"#{t}\", args: #{args}}"
end
end
这会运行一个rake任务,它接受一个参数:some_arg
,运行一个先决任务(:some_pre_requisite
),然后运行该任务。它在说我的任务已经开始和停止之前和之后输出日志语句。
如果我有几十个任务,这真的很重复。我喜欢用其他方法“包装”rake任务
START
声明STOP
声明我知道我可以将第一个印刷品设置为先决条件,然后将第二个印刷品设置为单独的增强任务,但这感觉很麻烦。它将两个打印报表存储在不同的位置,而且我必须单独手动enhance
每个任务。
有关如何实现这一目标的更好的想法吗?
谢谢!
答案 0 :(得分:3)
关于后钩:
Rake::Task['db:migrate'].enhance do
puts "AFTER"
end
http://ruby-doc.org/stdlib-2.0.0/libdoc/rake/rdoc/Rake/Task.html#method-i-enhance
对于before hook(未经测试):
task :before do
puts "BEFORE"
end
Rake::Task['db:migrate'].enhance(['before'])