为什么这个rake任务在运行rake任务之前运行该方法两次?

时间:2016-08-17 10:05:24

标签: ruby-on-rails rake rake-task

我想创建一个记录器,将一些消息输出到屏幕以及日志文件。我在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)为什么它运行两次方法? (我希望一旦它能够运行它,但两次只是简单的奇怪)

我将返回将所有日志记录放入任务并删除该方法。知道为什么简单的例子做它的作用会很有用。

修改 我已经完成了一个屏幕转储,显示了下面的代码和结果。

enter image description here

0 个答案:

没有答案