我遇到一些支持ActiveModel缓存的gem问题。当我使用观察者缓存模型时,在应用程序初始化期间,它会尝试描述表以获取所有字段名称。
rake任务运行时也是如此,包括db:migration。在这种情况下,存在一些循环引用错误。我想检测当前的rake任务,跳过gem初始化,但我不知道如何找出通过rake任务调用的代码。如何检查?
答案 0 :(得分:13)
我不知道你想要做什么,但这里有一个获取任务名称的例子。
task :testing do |task_name|
puts task_name
end
答案 1 :(得分:8)
这个问题已被问到一些地方,我认为任何答案都不是很好...... 我认为答案是检查Rake.application.top_level_tasks
,这是要运行的任务列表。 Rake不一定只运行一个任务。
答案 2 :(得分:1)
如果您通过rake task
或bundle exec rake task
运行任务,则可以通过以下方式在初始化程序中进行检查:
if $0.end_with?('rake')
# rake stuff
else
# non-rake stuff
end
如果您愿意,可以使用$PROGRAM_NAME
代替$0
。