Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby irb不';t识别方法_Ruby_Gem - Fatal编程技术网

Ruby irb不';t识别方法

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

这很奇怪,可能是因为我对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.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 >