Як виконати сценарій Ruby в терміналі?


231

Я налаштував усе, що мені потрібно на своєму Mac (Ruby, Rails, Homebrew, Git тощо), і навіть написав невелику програму. Тепер, як я його виконую в Терміналі? Я написав програму в Redcar і зберег її як .rb, але не знаю, як її виконати через Terminal. Я хочу запустити програму і подивитися, чи працює вона насправді. Як це зробити?


54
Я не знаю, хто проголосив ваше перше питання, але я думаю, що це суворо, тому я проголосував за нього. Удачі у всьому, спочатку все здається таким заплутаним, але наполегливим, і незабаром це буде другою природою, а потім ви будете допомагати іншим людям.
Iain

11
Швидкий перехід до 2017 року, і зараз ОП має 2555 балів та понад 100 значків. :)
Даніель

Відповіді:


245

Просто зателефонуйте: 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до свого каталогу робочого столу, так це повинно бути.
Робін

1
як щодо того, якщо в файлі .rb є якісь потрібні?
Джекі

1
@Chris Page, я фактично мав цю проблему, використовуючи перший спосіб. Я змінив мод, як ви запропонували, і він працював! Дякую тонну!
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(з нижньою с ). Інакше це не спрацює.
DanielH

24

Якщо припустити, що перекладач рубіну знаходиться у вашому PATH (так і має бути), ви просто запустите

ruby your_file.rb

Це дає мені повідомлення про помилку, тому я здогадуюсь, що я зробив щось не так під час налаштування. Як це зробити?
Том Максвелл

ruby: Немає такого файлу чи каталогу - testapp.rb (LoadError)
Том Максвелл

що таке testapp.rb? Ви в тому ж режисі, де він є?
Серхіо Туленцев

Я думаю, що ви сказали про те, що перекладач рубіну знаходився в моїй PATH. Я, мабуть, щось не робив правильно; мені знадобилося багато возитися, щоб все налаштувати.
Том Максвелл

2
cdце термінальна команда, яка змінює поточний каталог. Наприклад, щоб перейти до режиму "Настільний", який знаходиться у вашому HOME_DIR, вам доведеться це зробити cd ~/Desktop.
Серхіо Туленцев

15

Для виклику рубінового файлу використовуйте: ruby your_program.rb

Щоб виконати свій рубіновий файл як сценарій:

  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"

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

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.