Como executar um script Ruby no Terminal?

231

Configurei tudo o que preciso no meu Mac (Ruby, Rails, Homebrew, Git, etc.) e até escrevi um pequeno programa. Agora, como faço para executá-lo no Terminal? Escrevi o programa em Redcar e o salvei como .rb, mas não sei como executá-lo através do Terminal. Quero executar o programa e ver se ele realmente funciona. Como eu faço isso?

Tom Maxwell
fonte
54
Não sei quem votou contra sua primeira pergunta, mas acho que isso é duro, então votei novamente. Boa sorte com tudo, tudo parece tão confuso a princípio, mas persevera e em breve será uma segunda natureza, e então você estará ajudando outras pessoas aqui.
iain 4/01/12
11
Avanço rápido para 2017 e agora o OP tem 2.555 pontos e mais de 100 emblemas. :)
Daniel

Respostas:

246

Apenas ligue: ruby your_program.rb

ou

  • inicie seu programa com #!/usr/bin/env ruby,
  • torne seu arquivo executável executando chmod +x your_program.rb
  • e fazer ./your_program.rb some_param
Robin
fonte
1
Quando eu chamar your_program.rb rubi, fico com esta: rubi: Nenhum tal lima ou diretório - testapp.rb (LoadError)
Tom Maxwell
1
@ TomMaxwell Quando ele diz ruby your_program.rb, você deve substituir 'your_program.rb' por qualquer que seja o nome do seu programa. Nesse caso, com base na sua mensagem de erro, provavelmente deveria ser ruby testapp.rb. Embora o @Robin esteja correto, você precisa estar no mesmo diretório que o arquivo Ruby.
Joshua Cheek
2
Eu acho que ele fez, caso contrário, a mensagem de erro não seria sobre testapp.rb. Mas, com base em seus outros comentários, ele não sabia como cdacessar o diretório Desktop, então deve ser isso.
Robin
1
Que tal se houver algum requerimento no arquivo .rb?
Jacky
1
@ Chris Page, eu realmente tive esse problema usando a primeira maneira. Eu mudei mod como você sugeriu e funcionou! Muito obrigado!
Nstein 14/06
36

Abra seu terminal e abra a pasta onde o arquivo é salvo.
Ex/home/User1/program/test.rb

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

formato ou test.rb

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

# initialize object
Test.new

resultado

I love India
vijay
fonte
2
Classdeve ser class(com um c mais baixo ). Caso contrário, não funcionará.
DanielH
24

Supondo que o intérprete ruby ​​esteja no seu PATH (deveria estar), você simplesmente executa

ruby your_file.rb
Sergio Tulentsev
fonte
Isso me dá uma mensagem de erro, então acho que fiz algo errado durante a instalação. Como faço isso?
Tom Maxwell
rubi: Nenhum tal lima ou diretório - testapp.rb (LoadError)
Tom Maxwell
O que é um testapp.rb? Você está no mesmo diretório onde está?
Sergio Tulentsev
Acho que o que você disse sobre o intérprete de rubi estar no meu PATH é o problema. Eu provavelmente não fiz algo corretamente; Demorei muito para arrumar tudo.
Tom Maxwell
2
cdé um comando de terminal que altera o diretório atual. Por exemplo, para ir para um diretório "Desktop" que está no seu HOME_DIR, você precisaria cd ~/Desktop.
Sergio Tulentsev
15

Para chamar o arquivo ruby, use: ruby your_program.rb

Para executar seu arquivo ruby ​​como script:

  1. inicie seu programa com #!/usr/bin/env ruby

  2. execute esse script usando ./your_program.rb param

  3. Se você não conseguir executar este script, verifique as permissões do arquivo.
Priti Biyani
fonte
Geralmente, para executar um script, você precisa dar permissão de execução. Se isso não for fornecido, não funcionará com o comando acima. Verifique suas permissões e use o mesmo comando.
Priti Biyani
4

Basta chamar ruby XXXXX.rbno terminal, se o intérprete estiver na sua variável $ PATH.

(isso dificilmente pode ser uma coisa de trilhos, até que você o execute.)

Jokester
fonte
2

Embora seja tarde demais para responder a essa pergunta, mas ainda assim para os caras que vieram aqui para ver a solução do mesmo problema como eu e não obtiveram uma resposta satisfatória nesta página, o motivo é que você não possui seu arquivo na forma de extensão .rb. Você provavelmente o possui no modo de texto simples. Deixe-me elaborar. Ligando toda a solução na página, aqui está (assumindo que o nome do arquivo é abc.rb ou pelo menos você criou o abc):

Digite na janela do terminal:

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

e você terminou

Se ocorrer o seguinte erro

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

Em seguida, vá para o diretório em que você possui o arquivo abc, renomeie-o como abc.rb Feche o gedit e reabra o arquivo abc.rb. Aplique o mesmo conjunto de comandos e sucesso!

sinistro
fonte
2

Para quem não está obtendo uma solução para respostas mais antigas, basta colocar o nome do arquivo como a primeira linha do meu código.

igual a

 #ruby_file_name_here.rb

 puts "hello world"
Gokigooooks
fonte
1

Terminal Aberto

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

ou adicione #!/usr/bin/env rubyo primeiro do seu programa (o script informa que isso é executado usando o Ruby Interpreter)

Terminal Aberto

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