Ich habe ein Plugin, das ein bisschen schwer ist. (Bullet, konfiguriert mit Growl-Benachrichtigungen.) Ich möchte es nicht aktivieren, wenn ich nur eine Rake-Aufgabe oder einen Generator ausführe, da dies in diesen Situationen nicht sinnvoll ist. Gibt es eine Möglichkeit zu sagen, ob das der Fall ist?Wie kann ich feststellen, ob der Rails-Code über Rake oder Skript/Generate ausgeführt wird?
Antwort
Es ist so einfach ist:
if $rails_rake_task
puts 'Guess what, I`m running from Rake'
else
puts 'No; this is not a Rake task'
end
Für Rails 4 verwenden (anstelle von $rails_rake_task
):
File.basename($0) == 'rake'
Es scheint, dass rake
eine global variable $rakefile
zu definieren, aber in meinem Fall wird es auf nil
gesetzt; also ist es besser, nur zu überprüfen, ob $rakefile
definiert wurde ... sehen als __FILE__
und $FILENAME
nicht zu etwas Besonderem definiert werden.
$ 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
-
Nicht sicher über Skript/Generator, obwohl.
$0
hält den aktuellen rubin Programmlauf sein, so sollte diese Arbeit:
$0 =~ /rake$/
Ich mag NickMervins Antwort besser, weil es nicht auf das interne abhängt Implementierung von Rake (z.B. auf der globalen Variable von Rake).
Dies ist noch besser - kein regexp
File.split($0).last == 'rake'
File.split benötigt() benötigt wird, weil jemand rake
mit seinen vollständigen Pfad beginnen könnte, zum Beispiel:
/usr/local/bin/rake taskname
Angesichts einiger Erfahrungen in jüngster Zeit, bei denen versucht wurde festzustellen, ob die Umgebung innerhalb von Rake läuft, ist das Testen von $ 0 am zuverlässigsten. definiert? (:: Rake) schien immer wahr zu sein, zumindest in Rails, also hat das nicht funktioniert. Ich habe nach globalen Variablen gesucht, aber nichts passendes gefunden. –
Sie können die deaktivieren Plugin mit Umgebungsvariablen:
$ DISABLE_BULLET= 1 rake some:task
Und dann in Ihrem co de:
unless ENV['DISABLE_BULLET']
end
- 1. Wie kann ich feststellen, ob eine ASP.NET-Site "normal" oder "debug" über Visual Studio ausgeführt wird?
- 2. Wie kann ich feststellen, ob mein Prozess interaktiv ausgeführt wird?
- 3. Wie kann ich feststellen, ob eine Vollbildanwendung ausgeführt wird?
- 4. Wie kann ich feststellen, ob ein Programm von der Befehlszeile oder vom Web ausgeführt wird?
- 5. Wie kann ich feststellen, ob auf meiner Site ASP.NET MVC oder Web Forms ausgeführt wird?
- 6. Wie kann ich feststellen, dass mein Cron-Job ausgeführt wird?
- 7. Wie kann ich feststellen, ob meine Anwendung als 32-Bit- oder 64-Bit-Anwendung ausgeführt wird?
- 8. Wie kann ich feststellen, ob meine Django-Anwendung auf dem Entwicklungsserver ausgeführt wird oder nicht?
- 9. Wie kann ich feststellen, ob mein Code in Rails 3 in der Konsole ausgeführt wird?
- 10. Wie kann ich feststellen, ob ApplyUpdates Daten einfügt oder aktualisiert?
- 11. Wie kann ich feststellen, ob meine iPhone App ausgeführt wird, wenn eine Push-Benachrichtigung empfangen wird?
- 12. Wie kann ich feststellen, welche WCF-Version ausgeführt wird?
- 13. Wie kann ich feststellen, ob mein TextBlock-Text abgeschnitten wird?
- 14. Wie kann ich feststellen, ob Autovacuum unter Windows Server 2003 für meine PGSQL-Datenbank ausgeführt wird?
- 15. Wie kann man feststellen, ob ein Skript als Inhalts- oder Hintergrundskript ausgeführt wird?
- 16. Wie kann man feststellen, ob eine Aufgabe synchron ausgeführt wurde?
- 17. Wie kann ich feststellen, ob die Verbindung gemessen wird?
- 18. Wie kann ich feststellen, ob mein Container in einem Kubernetes-Cluster ausgeführt wird?
- 19. Wie kann ich erkennen, ob mein Prozess UAC-erhöht ausgeführt wird oder nicht?
- 20. Wie kann ich feststellen, ob eine vorherige Instanz meiner Anwendung ausgeführt wird?
- 21. Wie kann ich feststellen, ob MediaElement abgespielt wird?
- 22. Wie kann ich feststellen, ob glibc verwendet wird?
- 23. Wie kann ich feststellen, ob mein Prozess als Administrator ausgeführt wird?
- 24. Wie kann ich feststellen, ob ein Makefile von einer interaktiven Shell ausgeführt wird?
- 25. Wie kann ich feststellen, ob ein NUnit-Test in TeamCity ausgeführt wird?
- 26. Wie kann ich feststellen, ob die Vollbildanwendung in Windows ausgeführt wird?
- 27. Wie kann ich feststellen, ob meine .NET-Assembly von einer Website oder von einem Desktopcomputer ausgeführt wird?
- 28. Wie kann ich in einer Batchdatei feststellen, ob ein Prozess ausgeführt wird?
- 29. Wie kann ich feststellen, ob ein Programm von Valgrind ausgeführt wird?
- 30. Wie kann ich feststellen, ob eine Anfrage gut skaliert wird?
Dies funktioniert, aber es ist hässlich, weil es intern, das eine globale Variable auf Rake hängt - die 4 in der Zukunft – Tilo
In Rails weggehen könnte, haben die oben nicht für mich arbeiten, aber ** wenn File.basename ($ 0) == 'rake' ** immer noch tat. – codenoob