¿Cómo ejecutar un script Ruby en Terminal?


231

He configurado todo lo que necesito en mi Mac (Ruby, Rails, Homebrew, Git, etc.), e incluso he escrito un pequeño programa. Ahora, ¿cómo lo ejecuto en la Terminal? Escribí el programa en Redcar y lo guardé como un .rb, pero no sé cómo ejecutarlo a través de la Terminal. Quiero ejecutar el programa y ver si realmente funciona. ¿Cómo hago esto?


54
No sé quién votó en contra de su primera pregunta, pero creo que es duro, así que he votado nuevamente. Buena suerte con todo, todo parece tan confuso al principio pero perseverante y en poco tiempo será una segunda naturaleza, y luego ayudarás a otras personas aquí.
desde el

11
Avancemos rápidamente hasta 2017 y ahora el OP tiene 2,555 puntos y más de 100 insignias. :)
Daniel

Respuestas:


246

Solo llama: ruby your_program.rb

o

  • comience su programa con #!/usr/bin/env ruby,
  • hacer que su archivo sea ejecutable ejecutando chmod +x your_program.rb
  • y hacer ./your_program.rb some_param

1
Cuando llamo a ruby ​​your_program.rb, obtengo esto: ruby: No existe tal archivo o directorio - testapp.rb (LoadError)
Tom Maxwell

1
@TomMaxwell Cuando él dice ruby your_program.rb, se supone que debes sustituir 'your_program.rb' con el nombre que sea de tu programa. En este caso, según su mensaje de error, probablemente se supone que es así ruby testapp.rb. Aunque @Robin es correcto, debe estar en el mismo directorio que el archivo Ruby.
Joshua Cheek

2
Creo que lo hizo, de lo contrario el mensaje de error no sería sobre testapp.rb. Pero en base a sus otros comentarios, no sabía cómo cdacceder a su directorio de escritorio, por lo que debe ser.
Robin

1
¿qué tal si hay algunos requieren en el archivo .rb?
Jacky

1
@Chris Page, en realidad tuve este problema al usar la primera forma. ¡Cambié el mod como sugeriste y funcionó! ¡Gracias una tonelada!
nstein

36

Abra su terminal y abra la carpeta donde se guarda el archivo.
Ex/home/User1/program/test.rb

  1. Terminal abierta
  2. cd /home/User1/program
  3. ruby test.rb

formato o prueba.rb

class Test 
  def initialize
   puts "I love India"
  end
end

# initialize object
Test.new

salida

I love India

2
Classdebe ser class(con una c inferior ). De lo contrario, no funcionará.
DanielH

24

Suponiendo que el intérprete de ruby ​​está en su RUTA (debería estarlo), simplemente ejecuta

ruby your_file.rb

Eso me da un mensaje de error, así que supongo que hice algo mal durante la configuración. ¿Cómo puedo hacer eso?
Tom Maxwell

ruby: No existe tal archivo o directorio - testapp.rb (LoadError)
Tom Maxwell

¿Qué es un testapp.rb? ¿Estás en el mismo directorio donde está?
Sergio Tulentsev

Creo que lo que dijiste acerca de que el intérprete de rubíes estaba en mi RUTA es el problema. Probablemente no hice algo correctamente; me tomó mucho tiempo perder el tiempo para configurar todo.
Tom Maxwell

2
cdes un comando de terminal que cambia el directorio actual. Por ejemplo, para ir a un directorio "Escritorio" que está en su HOME_DIR, tendría que hacerlo cd ~/Desktop.
Sergio Tulentsev

15

Para llamar al uso del archivo ruby: ruby your_program.rb

Para ejecutar su archivo ruby ​​como script:

  1. Comience su programa con #!/usr/bin/env ruby

  2. ejecuta ese script usando ./your_program.rb param

  3. Si no puede ejecutar este script, verifique los permisos para el archivo.

En general, para ejecutar un script, debe otorgar permiso de ejecución. Si eso no se da, no funcionaría con el comando anterior. Verifique sus permisos y luego use el mismo comando.
Priti Biyani

4

Simplemente invoque ruby XXXXX.rben la terminal, si el intérprete está en su variable $ PATH.

(Esto difícilmente puede ser una cuestión de rieles, hasta que lo tenga funcionando).


2

Aunque es demasiado tarde para responder esta pregunta, pero para aquellos que vinieron aquí para ver la solución del mismo problema como yo y no obtuvieron una respuesta satisfactoria en esta página, la razón es que no tienen su archivo en forma de extensión .rb. Lo más probable es que lo tenga en modo de texto simple. Déjame elaborar. Vinculando toda la solución en la página, aquí tienes (suponiendo que tu nombre de archivo sea abc.rb o al menos hayas creado abc):

Escriba en la ventana de terminal:

cd ~/to/the/program/location
ruby abc.rb

y ya terminaste

Si ocurre el siguiente error

ruby: No such file or directory -- abc.rb (LoadError)

Luego vaya al directorio en el que tiene el archivo abc, cámbiele el nombre a abc.rb Cierre gedit y vuelva a abrir el archivo abc.rb. ¡Aplica el mismo conjunto de comandos y éxito!


2

Para aquellos que no obtienen una solución para respuestas anteriores, simplemente pongo mi nombre de archivo como la primera línea de mi código.

al igual que

 #ruby_file_name_here.rb

 puts "hello world"

1

Terminal abierta

cd to/the/program/location
ruby program.rb

o agregue #!/usr/bin/env rubyel primero de su programa (el script le dice que esto se ejecuta usando Ruby Interpreter)

Terminal abierta

cd to/the/program/location
chmod 777 program.rb
./program.rb

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.