如何在我的Rails模型中获取当前rake任务的名称?

时间:2012-05-30 09:53:51

标签: ruby-on-rails rake activemodel

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

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

3 个答案:

答案 0 :(得分:13)

我不知道你想要做什么,但这里有一个获取任务名称的例子。

  task :testing do |task_name|
    puts task_name
  end

答案 1 :(得分:8)

这个问题已被问到一些地方,我认为任何答案都不是很好...... 认为答案是检查Rake.application.top_level_tasks,这是要运行的任务列表。 Rake不一定只运行一个任务。

答案 2 :(得分:1)

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

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

如果您愿意,可以使用$PROGRAM_NAME代替$0