`Wenn __name__ == '__main __'` Äquivalent in Ruby
Frage
Ich bin Ruby. Ich bin auf der Suche Funktionen von einem Modul zu importieren, die ein Werkzeug enthält Ich mag separat mit fortzusetzen. In Python würde ich dies einfach tun:
def a():
...
def b():
...
if __name__ == '__main__':
a()
b()
Dies ermöglicht es mir, das Programm auszuführen oder importieren Sie es als ein Modul zur Verwendung a()
und / oder b()
getrennt. Was ist das Äquivalent Paradigma in Ruby?
Lösung
Von der Ruby Ich habe in der wilden gesehen aus (gewährt, nicht eine Tonne), ist dies nicht ein Standardmuster Ruby-Design. Module und Skripte sollen getrennt bleiben, so würde ich nicht überrascht, wenn es nicht wirklich eine gute ist, saubere Art und Weise, dies zu tun.
EDIT: es gefunden.
if __FILE__ == $0
foo()
bar()
end
Aber es ist auf jeden Fall nicht üblich.
Andere Tipps
Wenn Stack-Trace leer ist, können wir nach rechts und links der Ausführung beginnen. Ich weiß nicht, ob das konventionell oder unkonventionell verwendet, da ich in Ruby-bin für etwa eine Woche.
if caller.length == 0
# do stuff
end
Proof-of-Concept:
Datei: test.rb
#!/usr/bin/ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
Datei: shmest.rb
#!/usr/bin/ruby -I .
require 'test.rb'
puts "Shmest"
Verbrauch:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test