2009-01-28 42 views
14

Acabo de aprender los conceptos básicos de Ruby después de estar muy contento con Python durante varios años (todavía estoy usando Python para algunas cosas), pero me gustaría saber si hay un modismo o hack para resolver este problema en particular.Ejecutar una biblioteca de Ruby desde la línea de comandos

Tengo un script de Ruby, que me gustaría ser capaz de hacer con require script_name, pero también me gustaría ser capaz de ejecutar ruby script_name.rb del terminal y hacer que se ejecute como un script de línea de comandos. En Python esto se haría por tener la siguiente estructura en la parte inferior de la secuencia de comandos:

if __name__ == '__main__': 
    # do something here 

Sin embargo, me parece que no puede encontrar un equivalente en Ruby. ¿Hay alguna manera de detectar si el script actual se está ejecutando desde la línea de comandos? Tal vez algún método Kernel:: o algo así? Lo ideal sería que lo que me gustaría es algo como esto en la parte inferior de la secuencia de comandos:

if from_command_line? 
    # do something here 
end 
+0

Debe revisar las respuestas posteriores a su pregunta, ya que también incluyen un código que replica el modismo de prueba de clase de python. – QueueHammer

Respuesta

7

puede encontrar una funcionalidad similar en rubí.

__FILE__ nombre del archivo de origen actual.

$ 0 Contiene el nombre del script que se está ejecutando. Puede ser asignable.

fuente: Ruby Quick Ref

22

Usted desea utilizar:

if __FILE__ == $0 
    # do stuff 
end 

__FILE__ es el nombre de archivo de origen y $0 es el nombre del script que está siendo ejecutado.

5

Mientras

if __FILE__ == $0 
    Foo.run 
end 

es el enfoque común, que estoy usando actualmente

if File.identical?(__FILE__, $0) 
    Foo.run 
end 

porque los programas como el rubí-prof can make $0 not equal__FILE__ incluso cuando se utilizan --replace-progname.

Cuestiones relacionadas