簡體   English   中英

如何在我的Rails模型中獲取當前rake任務的名稱?

[英]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 taskbundle 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM