我有两个耙子任务,我想每晚跑步。我希望他们登录到一个文件。我认为这会做的伎俩(得到它在这里:Rake: logging any task executing):我如何让所有的耙子任务写入相同的日志文件?
application.rb
module Rake
class Task
alias_method :origin_invoke, :invoke if method_defined?(:invoke)
def invoke(*args)
@logger = Logger.new('rake_tasks_log.log')
@logger.info "#{Time.now} -- #{name} -- #{args.inspect}"
origin_invoke(args)
end
end
end
然后在rakefile
:
task :hello do
@logger.warn "Starting Hello task"
puts "Hello World!"
puts "checking connection "
checkConnection
puts "done checking"
@logger.debug "End hello rake task"
end
但是当我运行任务获得:
private method 'warn' called for nil:NilClass
我已经尝试了几次调用日志记录(@,@@,no @)的功能,但无济于事。在这里阅读关于它的几个主题。 rubyonrails.org site没有提到登录rake任务。我所调用的任务相当复杂(大概需要20-40分钟才能完成),所以如果失败了,我真的很想知道出了什么问题。我更喜欢DRY的原因,只创建一次logger
对象。