如何在终端中执行Ruby脚本?


231

我已经在Mac上设置了我需要的所有内容(Ruby,Rails,Homebrew,Git等),甚至编写了一个小程序。现在,如何在终端中执行它?我用Redcar编写了程序并将其另存为.rb,但我不知道如何通过Terminal执行它。我想运行该程序,看看它是否真的有效。我该怎么做呢?


54
我不知道谁对您的第一个问题投了反对票,但我认为这很苛刻,所以我对它投了反对票。祝一切顺利,一开始似乎很令人困惑,但坚持不懈,不久之后它将成为第二天性,然后您将在这里帮助其他人。
12

11
快进到2017年,现在OP具有2,555点和100多个徽章。:)
丹尼尔(Daniel)

Answers:


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)
Tom Maxwell

1
@TomMaxwell当他说时ruby your_program.rb,您应该用程序的名称替换“ your_program.rb”。在这种情况下,根据您的错误消息,可能是ruby testapp.rb。尽管@Robin是正确的,因为您需要与Ruby文件位于同一目录中。
2012年

2
我认为他做到了,否则错误消息将与testapp.rb无关。但是根据他的其他评论,他不知道如何cd访问他的桌面目录,因此必须如此。
罗宾2012年

1
.rb文件中是否有一些要求?
Jacky

1
@Chris Page,实际上我是使用第一种方法遇到此问题的。我按照您的建议更改了模组,并且有效!万分感谢!
nstein 2015年

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应该是classc较低)。否则它将无法正常工作。
DanielH

24

假设ruby解释器在您的PATH中(应该是),您只需运行

ruby your_file.rb

这给了我一条错误消息,所以我猜我在设置过程中做错了什么。我怎么做?
Tom Maxwell 2012年

红宝石:没有这样的文件或目录-testapp.rb(LoadError)
Tom Maxwell,

什么是testapp.rb?您是否在同一个目录中?
Sergio Tulentsev 2012年

我认为您所说的是关于Ruby解释器在我的PATH中的问题。我可能做的事情不正确;我花了很多时间来设置所有东西。
Tom Maxwell

2
cd是更改当前目录的终端命令。例如,要转到HOME_DIR中的“桌面”目录,您必须这样做cd ~/Desktop
塞尔吉奥·图伦采夫2012年

15

要调用ruby文件,请使用: ruby your_program.rb

要将红宝石文件作为脚本执行:

  1. 用以下命令启动程序 #!/usr/bin/env ruby

  2. 使用运行该脚本 ./your_program.rb param

  3. 如果您无法执行此脚本,请检查文件的权限。

通常,执行脚本需要授予执行权限。如果没有给出,则不能与以上命令一起使用。检查您的权限,然后使用相同的命令。
Priti Biyani

4

只需调用 ruby XXXXX.rb如果解释器在$ PATH变量中,则在终端中。

(在您运行它之前,这几乎不可能是rails。)


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

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.