Je suis nouveau chez Ruby. Je cherche à importer des fonctions à partir d'un module qui contient un outil que je souhaite continuer à utiliser séparément. En Python je ferais simplement ceci:
def a():
...
def b():
...
if __== '__main__':
a()
b()
Cela me permet d'exécuter le programme ou de l'importer en tant que module pour utiliser a()
et/ou b()
séparément. Quel est le paradigme équivalent de Ruby?
D'après le Ruby que j'ai vu dans la nature (accordé, pas une tonne), ce n'est pas un modèle de conception standard Ruby. Les modules et les scripts sont censé rester séparé, donc je ne serais pas surpris s'il n'y a pas vraiment une bonne façon de le faire.
MODIFIER: Je l'ai trouvé.
if __FILE__ == $0
foo()
bar()
end
Mais ce n'est certainement pas courant.
Si la trace de pile est vide, nous pouvons commencer à exécuter à droite et à gauche. Je ne sais pas si cela est utilisé de manière conventionnelle ou non, car je suis en Ruby pendant environ une semaine.
if caller.length == 0
# do stuff
end
Preuve de concept:
fichier: test.rb
#!/usr/bin/Ruby
if caller.length == 0
puts "Main script"
end
puts "Test"
fichier: shmest.rb
#!/usr/bin/Ruby -I .
require 'test.rb'
puts "Shmest"
Usage:
$ ./shmest.rb
Test
Shmest
$ ./test.rb
Main script
Test