[英]How to get name of current rake task in my Rails model?
我有一個支持ActiveModel緩存的gem有問題。 當我使用觀察者緩存模型時,在應用程序初始化期間,它會嘗試描述表以獲取所有字段名稱。
rake任務運行時也會執行相同的操作,包括db:migration。 在這種情況下,存在一些循環引用錯誤。 我想檢測當前的rake任務,跳過gem初始化,但我不知道如何找出通過rake任務調用的代碼。 怎么檢查?
我沒有得到你想要做的,但這里是獲取任務名稱的一個例子。
task :testing do |task_name|
puts task_name
end
這個問題已被問到一些地方,我不認為任何答案都非常好...... 我認為答案是檢查Rake.application.top_level_tasks
,這是一個將要運行的任務列表。 Rake並不一定只運行一項任務。
如果您通過rake task
或bundle exec rake task
運行任務,您只需通過以下方式在初始化程序中檢查它:
if $0.end_with?('rake')
# rake stuff
else
# non-rake stuff
end
如果您願意,可以使用$PROGRAM_NAME
代替$0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.