我想创建一个记录器,将一些消息输出到屏幕以及日志文件。我在rake任务中创建了一个方法,我将传递消息,以便我可以输出到屏幕和日志文件,如果需要的话。运行时返回的参数为0的0消息。为了进一步调查这一点,我在下面创建了一个简单的rake任务,只是为了看看发生了什么。
任务
namespace :x do
desc "test"
task :y => :environment do
puts "hello"
end
def logger
puts "logger"
end
end
令人惊讶的是,当我运行任务时,它会在运行实际任务之前运行两次记录器方法(请参阅输出)。
输出
$ rake x:y
logger
logger
hello
这解释了我的参数错误,因为如果它在任务之前运行,它就不会将任何参数传递给logger方法。
我的问题有两个:
1)为什么它完全运行该方法,因为它没有在任务中引用?
2)为什么它运行两次方法? (我希望一旦它能够运行它,但两次只是简单的奇怪)
我将返回将所有日志记录放入任务并删除该方法。知道为什么简单的例子做它的作用会很有用。
修改 我已经完成了一个屏幕转储,显示了下面的代码和结果。