【发布时间】:2011-12-12 02:10:13
【问题描述】:
我有两个想要在夜间运行的 rake 任务。我希望他们登录到一个文件。我认为这可以解决问题(在这里得到它: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
我已经尝试了几种调用日志的方式(@,@@,没有@),但都无济于事。在此处阅读有关它的几个主题。这
rubyonrails.org site 没有提到登录 rake 任务。我正在调用的任务相当复杂(大约需要 20-40 分钟才能完成),所以我真的很想知道如果它们失败了出了什么问题。出于 DRY 的原因,我宁愿只创建一次 logger 对象。
【问题讨论】:
标签: ruby-on-rails-3 logging rake