Comment exécuter un script Ruby dans Terminal?


231

J'ai installé tout ce dont j'ai besoin sur mon Mac (Ruby, Rails, Homebrew, Git, etc.), et j'ai même écrit un petit programme. Maintenant, comment l'exécuter dans Terminal? J'ai écrit le programme dans Redcar et l'ai enregistré en tant que .rb, mais je ne sais pas comment l'exécuter via Terminal. Je veux exécuter le programme et voir s'il fonctionne réellement. Comment puis-je faire cela?


54
Je ne sais pas qui a voté contre votre toute première question, mais je pense que c'est difficile, alors j'ai voté pour. Bonne chance avec tout, tout semble si déroutant au début, mais persévérez et d'ici peu, ce sera une seconde nature, puis vous aiderez d'autres personnes ici.
2012

11
Avance rapide jusqu'en 2017 et maintenant l'OP compte 2 555 points et plus de 100 badges. :)
Daniel

Réponses:


246

Il suffit d'appeler: ruby your_program.rb

ou

  • démarrer votre programme avec #!/usr/bin/env ruby,
  • rendre votre fichier exécutable en exécutant chmod +x your_program.rb
  • et fait ./your_program.rb some_param

1
Lorsque j'appelle ruby ​​your_program.rb, j'obtiens ceci: ruby: Aucun fichier ou répertoire de ce type - testapp.rb (LoadError)
Tom Maxwell

1
@TomMaxwell Quand il dit ruby your_program.rb, vous êtes censé remplacer "votre_programme.rb" par le nom de votre programme. Dans ce cas, en fonction de votre message d'erreur, il est probablement censé l'être ruby testapp.rb. Bien que @Robin soit correct, vous devez être dans le même répertoire que le fichier Ruby.
Joshua Cheek

2
Je pense qu'il l'a fait, sinon le message d'erreur ne concernerait pas testapp.rb. Mais sur la base de ses autres commentaires, il ne savait pas comment cdaccéder à son répertoire Desktop, donc ça doit être ça.
Robin

1
que diriez-vous s'il y en a besoin dans le fichier .rb?
Jacky

1
@Chris Page, j'ai eu ce problème en utilisant la première façon. J'ai changé de mod comme vous l'avez suggéré et cela a fonctionné! Merci beaucoup!
nstein

36

Ouvrez votre terminal et ouvrez le dossier où le fichier est enregistré.
Ex/home/User1/program/test.rb

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

format ou test.rb

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

# initialize object
Test.new

production

I love India

2
Classdevrait être class(avec un c inférieur ). Sinon, cela ne fonctionnera pas.
DanielH

24

En supposant que l'interprète ruby ​​se trouve dans votre CHEMIN (il devrait l'être), vous exécutez simplement

ruby your_file.rb

Cela me donne un message d'erreur, donc je suppose que j'ai fait quelque chose de mal pendant la configuration. Comment je fais ça?
Tom Maxwell

ruby: Aucun fichier ou répertoire de ce type - testapp.rb (LoadError)
Tom Maxwell

qu'est-ce qu'un testapp.rb? Êtes-vous dans le même répertoire où il se trouve?
Sergio Tulentsev

Je pense que ce que vous avez dit à propos de l'interprète ruby ​​dans mon CHEMIN est le problème. Je n'ai probablement pas fait quelque chose correctement; il m'a fallu beaucoup de temps pour tout mettre en place.
Tom Maxwell

2
cdest une commande de terminal qui change le répertoire courant. Par exemple, pour accéder à un répertoire "Desktop" qui se trouve dans votre HOME_DIR, vous devez le faire cd ~/Desktop.
Sergio Tulentsev

15

Pour appeler le fichier ruby, utilisez: ruby your_program.rb

Pour exécuter votre fichier ruby ​​en tant que script:

  1. commencez votre programme avec #!/usr/bin/env ruby

  2. exécuter ce script en utilisant ./your_program.rb param

  3. Si vous n'êtes pas en mesure d'exécuter ce script, vérifiez les autorisations pour le fichier.

Généralement, pour exécuter un script, vous devez donner la permission d'exécution. Si cela n'est pas donné, cela ne fonctionnera pas avec la commande ci-dessus. Vérifiez vos autorisations, puis utilisez la même commande.
Priti Biyani

4

Appelez simplement ruby XXXXX.rbdans le terminal, si l'interpréteur est dans votre variable $ PATH.

(Cela peut difficilement être une chose de rails, jusqu'à ce que vous l'ayez en marche.)


2

Bien qu'il soit trop tard pour répondre à cette question, mais toujours pour les gars qui sont venus ici pour voir la solution du même problème comme moi et qui n'ont pas obtenu de réponse satisfaisante sur cette page, la raison est que vous n'avez pas votre fichier sous la forme d'une extension .rb. Vous l'avez très probablement en mode texte simple. Permettez-moi de développer. Lier toute la solution sur la page, c'est parti (en supposant que votre nom de fichier est abc.rb ou au moins vous avez créé abc):

Tapez dans la fenêtre du terminal:

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

et vous avez terminé

Si l'erreur suivante se produit

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

Accédez ensuite au répertoire dans lequel vous avez le fichier abc, renommez-le en abc.rb Fermez gedit et rouvrez le fichier abc.rb. Appliquez le même ensemble de commandes et réussissez!


2

Pour ceux qui n'obtiennent pas de solution pour les réponses plus anciennes, je mets simplement mon nom de fichier en tant que toute première ligne dans mon code.

ainsi

 #ruby_file_name_here.rb

 puts "hello world"

1

Terminal ouvert

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

ou ajoutez #!/usr/bin/env rubyle premier de votre programme (le script indique que cela est exécuté à l'aide de Ruby Interpreter)

Terminal ouvert

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

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.