我有一個有點沉重的插件。 (Bullet,配置了Growl通知。)如果我只是運行rake任務或生成器,我想不啓用它,因爲它在這些情況下沒有用。有什麼方法可以說明是這種情況嗎?如何判斷Rails代碼是否正在通過rake或script/generate運行?
24
A
回答
32
它是如此簡單:
if $rails_rake_task
puts 'Guess what, I`m running from Rake'
else
puts 'No; this is not a Rake task'
end
對於軌道4的使用(而不是$rails_rake_task
):
File.basename($0) == 'rake'
3
它似乎運行rake
將定義global variable $rakefile
,但在我的情況下它被設置爲nil
;所以你最好檢查$rakefile
是否已被定義......看作__FILE__
和$FILENAME
沒有被定義爲任何特殊的。
$ cat test.rb
puts(global_variables.include? "$rakefile")
puts __FILE__
puts $FILENAME
$ cat Rakefile
task :default do
load 'test.rb'
end
$ ruby test.rb
false
test.rb
-
$ rake
(in /tmp)
true
./test.rb
-
不知道腳本/生成器,但。
6
$0
保持當前的Ruby程序正在運行,所以這應該工作:
$0 =~ /rake$/
8
我更喜歡NickMervin的回答,因爲它不依賴於內部實施Rake(例如關於Rake的全局變量)。
這是更好 - 無正則表達式需要
File.split($0).last == 'rake'
File.split()是必要的,因爲可能會有人開始rake
與它的完整路徑,如:
/usr/local/bin/rake taskname
+1
考慮到一些最近的經驗試圖確定環境是否在耙內運行,測試$ 0是最可靠的。定義?(:: Rake)似乎永遠是真實的,至少在Rails中,所以這是行不通的。我查找了全局變量,但沒有找到合適的東西。 – 2014-03-31 13:26:27
0
您可以禁用插件使用環境變量:
$ DISABLE_BULLET= 1 rake some:task
然後在你的公司德:
unless ENV['DISABLE_BULLET']
end
相關問題
- 1. 如何判斷我的jQuery代碼是否在iFrame中運行?
- 2. 如何判斷代碼是否在Google App Engine上運行?
- 3. 如何判斷我的Javascript代碼是否在Jint中運行?
- 4. 如何判斷(VB)代碼是否在Visual Studio中運行?
- 5. 如何判斷代碼是否從Visual Studio/Cassini本地運行
- 6. 如何判斷線程是否通過其ID與C#運行
- 7. 如何判斷cntlm是否正在運行?
- 8. 如何判斷全屏應用程序是否正在運行?
- 9. 如何判斷moodle cron是否正在運行?
- 10. 如何判斷ob_gzhandler是否正在運行?
- 11. 如何判斷OrbBasic程序是否正在運行
- 12. 如何判斷rake db:migrate和rake db:seed是否成功
- 13. 如何通過代碼判斷iPad是黑色還是白色?
- 14. 如何判斷代碼是否在knitr/rmarkdown環境中執行?
- 15. IBM Worklight - 如何判斷Worklight Studio是否正在運行v6.0.0.0或v6.0.0.1?
- 16. 如何判斷jQueryUI是否在Rails 3.1中正確加載?
- 17. 如何判斷是否在Rails中讀取了通知
- 18. 如何判斷碼頭是否凍結?
- 19. 如何判斷緩存是否正常工作。 Rails 4
- 20. 如何判斷EXC_BAD_ACCESS錯誤是否是我的代碼錯誤?
- 21. 如何判斷H2O 3.11.0.266是否在使用GPU運行?
- 22. python程序如何判斷它是否在emacs中運行?
- 23. 應用程序如何判斷它是否在hackintosh上運行?
- 24. 如何判斷一個偵聽器是否已經在運行?
- 25. 如何判斷我是否在網絡服務器下運行?
- 26. 如何判斷WCF服務是否在主機上運行?
- 27. 如何判斷屏幕是否在運行?
- 28. 我的Perl程序如何判斷是否在mod_perl下運行?
- 29. 如何判斷java日誌sockethandler是否仍在運行?
- 30. 如何判斷AIX機器是否在power7 cpu上運行?
這工作,但它的醜陋,因爲它依賴於內部耙定義一個全局變量 - 這可能會消失在未來 – Tilo 2014-02-18 21:51:35
在Rails 4,上面並沒有爲我工作,但**如果File.basename($ 0)=='耙'**仍然沒有。 – codenoob 2014-03-02 04:07:09