Ruby irb不';t识别方法
这很奇怪,可能是因为我对ruby不熟悉。我已经创建了一个gem,它可以工作,所有的单元测试都可以工作,但是当我在irb中执行以下操作时,它找不到“成分”方法Ruby irb不';t识别方法,ruby,gem,Ruby,Gem,这很奇怪,可能是因为我对ruby不熟悉。我已经创建了一个gem,它可以工作,所有的单元测试都可以工作,但是当我在irb中执行以下操作时,它找不到“成分”方法 1.9.2-p290:002>要求“桌布” =>正确 1.9.2-p290:003>tc=桌布。新“1杯糖” => # 1.9.2-p290:004>tc成分 命名错误:未定义的“成分”方法# 来自(irb):4 from/home/mikey/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in`' 1.9
1.9.2-p290:002>要求“桌布”
=>正确
1.9.2-p290:003>tc=桌布。新“1杯糖”
=> #
1.9.2-p290:004>tc成分
命名错误:未定义的“成分”方法#
来自(irb):4
from/home/mikey/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in`'
1.9.2-p290:005>
整个宝石都在这里
显然,这是因为我是ruby新手。这实际上并没有妨碍开发,我只是想知道为什么irb在这种情况下似乎不能注册这种方法 我认为您在IRB中加载的gem版本与在单元测试中加载的版本不同。您的单元测试可能测试位于开发目录中的gem代码,但是当您在IRB中执行
要求“桌布”
时,它将加载已安装到系统gem目录中的gem。如果您使用的是RVM,那么可以查看$GEM_HOME环境变量,查看它是什么目录
您可能需要运行一个rake任务,比如
rake install
或者类似的东西来安装gem,然后才能在irb中使用它 谢谢你,巴德,我会试试的!你可以通过gem which tablebrath
查看它加载的版本,如果你gem安装gem open
你也可以执行gem open tablebrath
,它将打开在你的$EDITOR
中加载的gem,允许你浏览实际加载的gem,在我刚开始的时候,我已经建造了宝石。重建基本上解决了这个问题。我想我没有得到的部分是,我认为“Require”会重新归档指定的文件,但我没有意识到它会首先检查gems
1.9.2-p290 :002 > require "tablecloth"
=> true
1.9.2-p290 :003 > tc = TableCloth.new "1 cup of sugar"
=> #<TableCloth:0x864a728>
1.9.2-p290 :004 > tc.ingredients
NoMethodError: undefined method `ingredients' for #<TableCloth:0x864a728>
from (irb):4
from /home/mikey/.rvm/rubies/ruby-1.9.2-p290/bin/irb:16:in `<main>'
1.9.2-p290 :005 >