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?

War es hilfreich?

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
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top