Как выполнить скрипт Ruby в терминале?

231

Я установил все, что мне нужно, на моем Mac (Ruby, Rails, Homebrew, Git и т. Д.), И я даже написал небольшую программу. Теперь, как мне выполнить это в Терминале? Я написал программу в Redcar и сохранил ее как .rb, но я не знаю, как выполнить ее через Терминал. Я хочу запустить программу и посмотреть, работает ли она на самом деле. Как мне это сделать?

Том Максвелл
источник
54
Я не знаю, кто проголосовал за ваш самый первый вопрос, но я думаю, что это резко, поэтому я проголосовал за него снова. Удачи во всем, сначала все кажется таким запутанным, но настойчивым, и вскоре это станет второй натурой, и тогда вы будете помогать другим людям здесь.
Иэн
11
Перенесемся в 2017 год, и теперь у ОП 2555 очков и более 100 значков. :)
Даниил

Ответы:

246

Просто позвони: ruby your_program.rb

или

  • начать свою программу с #!/usr/bin/env ruby,
  • сделайте ваш файл исполняемым, запустив chmod +x your_program.rb
  • и делай ./your_program.rb some_param
Робин
источник
1
Когда я вызываю ruby ​​your_program.rb, я получаю следующее: ruby: Нет такого файла или каталога - testapp.rb (LoadError)
Том Максвелл,
1
@TomMaxwell Когда он говорит ruby your_program.rb, вы должны заменить «your_program.rb» тем, что называется вашей программой. В этом случае, основываясь на вашем сообщении об ошибке, это, вероятно, должно быть ruby testapp.rb. Хотя @Robin верен в том, что вы должны находиться в том же каталоге, что и файл Ruby.
Джошуа Чик
2
Я думаю, что он сделал, иначе сообщение об ошибке не будет о testapp.rb. Но, основываясь на других своих комментариях, он не знал, как перейти cdв каталог Desktop, так что это должно быть так.
Робин
1
как насчет того, если есть некоторые требуют в файле .rb?
Джеки
1
@ Крис Пейдж, у меня действительно была эта проблема, используя первый способ. Я изменил мод, как вы предложили, и это сработало! Благодаря тонну!
nstein
36

Откройте свой терминал и откройте папку, в которой сохранен файл.
бывший/home/User1/program/test.rb

  1. Открытый терминал
  2. cd /home/User1/program
  3. ruby test.rb

формат или test.rb

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

# initialize object
Test.new

вывод

I love India
Виджей
источник
2
Classдолжно быть class(с более низким c ). В противном случае это не сработает.
DanielH
24

Предполагая, что интерпретатор ruby ​​находится в вашем PATH (так и должно быть), вы просто запускаете

ruby your_file.rb
Серхио Туленцев
источник
Это дает мне сообщение об ошибке, поэтому я предполагаю, что я сделал что-то не так во время установки. Как я могу это сделать?
Том Максвелл
ruby: Нет такого файла или каталога - testapp.rb (LoadError)
Том Максвелл,
что такое testapp.rb? Ты в той же директории, где это?
Серхио Туленцев
Я думаю, что вы сказали, что в моем PATH находится переводчик ruby. Я, вероятно, не сделал что-то правильно; мне понадобилось много возиться, чтобы все настроить.
Том Максвелл
2
cdэто команда терминала, которая изменяет текущий каталог Например, чтобы перейти к каталогу «Desktop», который находится в вашем HOME_DIR, вам придется это сделать cd ~/Desktop.
Серхио Туленцев
15

Для вызова файла ruby ​​используйте: ruby your_program.rb

Чтобы выполнить ваш файл ruby ​​как скрипт:

  1. начать свою программу с #!/usr/bin/env ruby

  2. запустить этот скрипт, используя ./your_program.rb param

  3. Если вы не можете выполнить этот скрипт, проверьте разрешения для файла.
Прити Бияни
источник
Как правило, чтобы выполнить скрипт, вам нужно дать разрешение на выполнение. Если это не дано, это не будет работать с вышеуказанной командой. Проверьте ваши разрешения и затем используйте ту же команду.
Прити Бияни
4

Просто вызовите ruby XXXXX.rbтерминал, если интерпретатор находится в вашей переменной $ PATH.

(это вряд ли может быть вещь рельсов, пока у вас это не работает.)

шутник
источник
2

Хотя уже слишком поздно отвечать на этот вопрос, но все же для тех парней, которые пришли сюда, чтобы увидеть решение той же проблемы, что и я, и не получили удовлетворительного ответа на этой странице, причина в том, что у вас нет файла в виде расширения .rb. Скорее всего, это в простом текстовом режиме. Позвольте мне уточнить. Привязывая все решение на странице, вы идете (при условии, что ваше имя файла - abc.rb или, по крайней мере, вы создали abc):

Введите в окне терминала:

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

и вы сделали

Если возникает следующая ошибка

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

Затем перейдите в каталог, в котором находится файл abc, переименуйте его в abc.rb Закройте gedit и снова откройте файл abc.rb. Примените тот же набор команд и успехов!

зловещий
источник
2

Для тех, кто не находит решения для старых ответов, я просто помещаю имя файла в качестве первой строки в моем коде.

вот так

 #ruby_file_name_here.rb

 puts "hello world"
Gokigooooks
источник
1

Открытый терминал

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

или добавьте #!/usr/bin/env rubyв первую часть вашей программы (скрипт скажет, что это выполняется с использованием Ruby Interpreter)

Открытый терминал

cd to/the/program/location
chmod 777 program.rb
./program.rb
Akhilan
источник
1

В случае, если кто-то пытается запустить скрипт в среде RAILS , rails предоставляют бегуна для выполнения скриптов в контексте rails через

rails runner my_script.rb

Подробнее здесь: https://guides.rubyonrails.org/command_line.html#rails-runner

Нихил Саху
источник