Jak wykonać skrypt Ruby w Terminalu?

231

Na komputerze Mac skonfigurowałem wszystko, czego potrzebuję (Ruby, Rails, Homebrew, Git itp.), A nawet napisałem mały program. Jak mam to wykonać w terminalu? Napisałem program w Redcar i zapisałem go jako .rb, ale nie wiem, jak go uruchomić przez Terminal. Chcę uruchomić program i sprawdzić, czy rzeczywiście działa. Jak mam to zrobic?

Tom Maxwell
źródło
54
Nie wiem, kto głosował na twoje pierwsze pytanie, ale myślę, że to trudne, więc zagłosowałem ponownie. Powodzenia we wszystkim, wszystko wydaje się początkowo tak mylące, ale wytrwa, a wkrótce będzie to druga natura, a potem będziesz pomagał innym tutaj.
iain
11
Szybko do przodu do 2017 roku, a teraz OP ma 2555 punktów i ponad 100 odznak. :)
Daniel

Odpowiedzi:

245

Zadzwoń: ruby your_program.rb

lub

  • rozpocznij swój program od #!/usr/bin/env ruby,
  • spraw, aby Twój plik był wykonywalny przez uruchomienie chmod +x your_program.rb
  • i robić ./your_program.rb some_param
Rudzik
źródło
1
Kiedy nazywam ruby ​​your_program.rb, otrzymuję to: ruby: Brak takiego pliku lub katalogu - testapp.rb (LoadError)
Tom Maxwell
1
@TomMaxwell Kiedy mówi ruby your_program.rb, należy zastąpić „twój_program.rb” dowolną nazwą twojego programu. W tym przypadku, prawdopodobnie na podstawie twojego komunikatu o błędzie ruby testapp.rb. Chociaż @Robin ma rację, musisz być w tym samym katalogu, co plik Ruby.
Joshua Cheek
2
Myślę, że tak, w przeciwnym razie komunikat o błędzie nie dotyczyłby testapp.rb. Ale na podstawie innych komentarzy nie wiedział, jak przejść cddo katalogu Desktop, więc na pewno tak.
Robin
1
co jeśli są jakieś wymagania w pliku .rb?
Jacky
1
@Chris Page, faktycznie miałem ten problem, używając pierwszego sposobu. Zmieniłem mod, jak zasugerowałeś i zadziałało! Wielkie dzięki!
nstein
36

Otwórz terminal i otwórz folder, w którym zapisany jest plik.
Dawny/home/User1/program/test.rb

  1. Otwórz terminal
  2. cd /home/User1/program
  3. ruby test.rb

format lub test.rb

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

# initialize object
Test.new

wynik

I love India
Vijay
źródło
2
Classpowinno być class(z niższym c ). W przeciwnym razie to nie zadziała.
DanielH
24

Zakładając, że interpreter ruby ​​jest w twojej ŚCIEŻCE (tak powinno być), po prostu biegniesz

ruby your_file.rb
Sergio Tulentsev
źródło
Daje mi to komunikat o błędzie, więc zgaduję, że zrobiłem coś złego podczas instalacji. W jaki sposób mogę to zrobić?
Tom Maxwell
ruby: Nie ma takiego pliku ani katalogu - testapp.rb (LoadError)
Tom Maxwell
co to jest testapp.rb? Czy jesteś w tym samym katalogu, w którym jest?
Sergio Tulentsev
Myślę, że to, co powiedziałeś o tłumaczu ruby ​​znajdującym się w mojej ŚCIEŻCE, jest problemem. Prawdopodobnie nie zrobiłem czegoś poprawnie; zajęło mi dużo bałaganu, aby wszystko skonfigurować.
Tom Maxwell
2
cdto komenda terminalowa zmieniająca bieżący katalog. Na przykład, aby przejść do katalogu „Desktop”, który znajduje się w katalogu HOME_DIR, musisz to zrobić cd ~/Desktop.
Sergio Tulentsev
15

Aby wywołać plik ruby: ruby your_program.rb

Aby wykonać plik ruby ​​jako skrypt:

  1. uruchom swój program za pomocą #!/usr/bin/env ruby

  2. uruchom ten skrypt za pomocą ./your_program.rb param

  3. Jeśli nie możesz wykonać tego skryptu, sprawdź uprawnienia do pliku.
Priti Biyani
źródło
Ogólnie, aby wykonać skrypt, musisz wyrazić zgodę na wykonanie. Jeśli nie zostanie to podane, nie będzie działać z powyższą komendą. Sprawdź swoje uprawnienia, a następnie użyj tego samego polecenia.
Priti Biyani
4

Wystarczy wywołać ruby XXXXX.rbw terminalu, jeśli interpreter znajduje się w zmiennej $ PATH.

(nie może to być problem z szynami, dopóki nie uruchomisz go.)

Jokester
źródło
2

Chociaż jest już za późno, aby odpowiedzieć na to pytanie, ale wciąż dla tych facetów, którzy przybyli tutaj, aby zobaczyć rozwiązanie tego samego problemu, tak jak ja i nie otrzymali satysfakcjonującej odpowiedzi na tej stronie, Powodem jest to, że nie masz pliku w postaci rozszerzenia .rb. Najprawdopodobniej masz go w prostym trybie tekstowym. Pozwól mi rozwinąć. Powiązanie całego rozwiązania na stronie, proszę bardzo (zakładając, że nazwa pliku to abc.rb lub przynajmniej utworzyłeś abc):

Wpisz w oknie terminala:

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

i gotowe

Jeśli wystąpi następujący błąd

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

Następnie przejdź do katalogu, w którym masz plik abc, zmień jego nazwę na abc.rb Zamknij gedit i ponownie otwórz plik abc.rb. Zastosuj ten sam zestaw poleceń i sukces!

złowrogi
źródło
2

Dla tych, którzy nie otrzymują rozwiązania dla starszych odpowiedzi, po prostu umieszczam nazwę pliku jako pierwszą linię w moim kodzie.

lubię to

 #ruby_file_name_here.rb

 puts "hello world"
Gokigooooks
źródło
1

Otwórz terminal

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

lub dodaj #!/usr/bin/env rubypierwszy ze swojego programu (skrypt mówi, że jest to wykonywane przy użyciu Ruby Interpretera)

Otwórz terminal

cd to/the/program/location
chmod 777 program.rb
./program.rb
Achilan
źródło