控制台没有准备好ruby sublime文本文件

时间:2013-08-18 19:11:07

标签: ruby macos console sublimetext2

我是编程新手。即将开始学习Ruby。我已经参加了一个控制台课程,但我被困在这里。

我正在使用mac 10.6.8。我在崇高的文本编辑器中快速完成了1 + 2。我保存了它。我转到我的控制台键入irb,然后键入ruby example.rb。我在其他地方读过,打字需要'./example'会有帮助....它没有。我得到以下

NameError: undefined local variable or method `example' for main:Object
from (irb):2
from /usr/local/rvm/rubies/ruby-1.9.3-p392/bin/irb:16:in `<main>'

我不明白我做错了什么。谢谢您的帮助。我真的很感激。

-L

4 个答案:

答案 0 :(得分:0)

我会这样做:

kirti@kirti-Aspire-5733Z:~$ irb
2.0.0p0 :001 > require 'fileutils'
 => true 
2.0.0p0 :002 > FileUtils.pwd
 => "/home/kirti" 
2.0.0p0 :003 > FileUtils.cd "/home/kirti/ruby" 
 => nil 
2.0.0p0 :004 > load "./SO.rb"
3
 => true 
2.0.0p0 :005 > require "./SO.rb"
3
 => true 

我的SO.rb文件包含以下行:

puts 1+2

答案 1 :(得分:0)

可能你想尝试一下 步骤1:使用命令“cd folder_name / folder_location”导航到您的项目/文件夹 第2步:加载'./example.rb'

为了更好的解决方案,您可能想在example.rb中定义一些函数 像:

def sum  
   1 + 2  
end

在加载 example.rb 文件后,在输出中输入 sum

答案 2 :(得分:0)

irb是交互式ruby shell。在shell中,您键入的所有内容都被解释为Ruby代码,而不是bash命令。所以,例如:

bash> puts 1 + 2
# command not found: puts
# this happens because you're not in a Ruby shell

bash> irb
# now you're in a Ruby shell
irb> puts 1 + 2
# 3

如果您在example.rb中编写了一些代码,则有两种选择:

  1. bash shell中,运行ruby example.rb(从保存example.rb文件的同一目录。

  2. irb 控制台中,您可以require 'example',它会将example.rb的内容加载到您的解释器中。在这种情况下,它将立即执行Ruby代码。如果您将example.rb的内容包装在一个类中,它将加载该类,但在您实例化/调用它之前不会在其中执行代码。

  3. 希望这有帮助!

答案 3 :(得分:0)

我的猜测是你正在打字(进入irb):

require example.rb

当您需要输入:

require './example.rb'

第一个告诉ruby:“需要名为example的变量中的内容”。因为您没有定义名为example的变量,所以它会导致无变量或方法错误。

第二个告诉ruby:“需要一个字符串'./example.rb'”。由于require方法基本上知道如何查找作为字符串传递的文件名并评估文件,因此您将获得正确的输出

顺便说一句,对于此示例,example.rb需要位于同一目录中。如果exam​​ple.rb在另一个目录中,则需要使用完整路径(我不会在此处展开​​)来获取它。

你还会注意到输出看起来像这样:

    3
    => true

这是因为评估了文件(执行代码:puts 1+2),require方法返回true以表明它评估了文件。

如果您再次需要该文件,则会获得false,因为该文件已加载。