9

我对支持 ActiveModel 缓存的 gem 之一有一些问题。当我将观察者用于缓存模型时,在应用程序初始化期间,它会尝试描述表以获取所有字段名称。

当 rake 任务运行时也会做同样的事情,包括 db:migration。在这种情况下,会出现一些循环引用错误。我想检测当前的 rake 任务,跳过 gem 初始化,但我不知道如何找出是通过 rake 任务调用的代码。如何检查?

4

3 回答 3

15

我不完全了解您要做什么,但这是获取任务名称的示例。

  task :testing do |task_name|
    puts task_name
  end
于 2012-05-30T11:35:28.963 回答
11

这个问题问了几个地方,我觉得没有一个答案很好……认为答案是 check Rake.application.top_level_tasks,这是一个将要运行的任务列表。Rake 不一定只运行一项任务。

于 2013-06-26T19:54:56.117 回答
1

如果您通过以下方式运行任务,rake task或者bundle exec rake task您可以通过以下方式在初始化程序中检查它:

if $0.end_with?('rake')
  # rake stuff
else
  # non-rake stuff
end

如果你喜欢,你可以使用$PROGRAM_NAME代替。$0

于 2012-05-30T11:54:23.997 回答