我有一个有点沉重的插件。 (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. 如何判断(VB)代码是否在Visual Studio中运行?
- 2. 如何判断我的Javascript代码是否在Jint中运行?
- 3. 如何判断ob_gzhandler是否正在运行?
- 4. 如何判断全屏应用程序是否正在运行?
- 5. 如何通过代码判断iPad是黑色还是白色?
- 6. 如何判断代码是否在knitr/rmarkdown环境中执行?
- 7. 如何判断jQueryUI是否在Rails 3.1中正确加载?
- 8. 如何判断是否在Rails中读取了通知
- 9. 如何判断码头是否冻结?
- 10. 如何判断EXC_BAD_ACCESS错误是否是我的代码错误?
- 11. 如何判断AIX机器是否在power7 cpu上运行?
- 12. python程序如何判断它是否在emacs中运行?
- 13. 如何判断厨师是否在虚拟机上运行
- 14. 如何判断java日志sockethandler是否仍在运行?
- 15. 如何判断屏幕是否在运行?
- 16. 如何判断一个侦听器是否已经在运行?
- 17. 如何判断H2O 3.11.0.266是否在使用GPU运行?
- 18. 如何判断我是否在网络服务器下运行?
- 19. 应用程序如何判断它是否在hackintosh上运行?
- 20. 我的Perl程序如何判断是否在mod_perl下运行?
- 21. 如何判断AsyncTaskLoader运行
- 22. 是否可以通过阅读注册表来判断程序是否正在运行?
- 23. 如何判断是否正在进行骡流消息处理
- 24. 如何判断我的星火工作是否正在进行?
- 25. 如何判断代码访问安全性是否允许在库代码中
- 26. 如何通过代码判断Android操作系统
- 27. 如何判断我的客户端是否正在运行安全连接(SSL)
- 28. 如何判断我的未绑定服务是否正在运行?
- 29. 如何判断用户是否正在删除或插入行 - Excel VBA
- 30. 如何判断Log4perl在运行过程中是否发出警告?
这工作,但它的丑陋,因为它依赖于内部耙定义一个全局变量 - 这可能会消失在未来 – Tilo 2014-02-18 21:51:35
在Rails 4,上面并没有为我工作,但**如果File.basename($ 0)=='耙'**仍然没有。 – codenoob 2014-03-02 04:07:09