2013-08-17 43 views
0

我正在尝试构建我的第一个宝石。使用瑞安Biggs的tutorial作为我的指导,我做了以下内容:无法加载我创建的宝石

1)创造了创业板脚手架:

$ bundle gem hello_world 

2)编辑后的lib/hello_world.rb文件:

require "hello_world/version" 

module HelloWorld 
    def hi 
    "Hello world!" 
    end 
end 

3)安装宝石通过捆绑销售商:

$ cd hello_world 
$ bundle install 

在这一点上,如果我运行

$ bundle show hello_world 

它显示

/Users/ykessler/gems/hello_world 

所以它看起来像它安装。

但是,当我尝试需要来自IRB宝石:

require '/Users/ykessler/gems/hello_world' 

无法加载:

2.0.0-p195 :003 > require '/Users/ykessler/gems/hello_world' 
LoadError: cannot load such file -- /Users/ykessler/gems/hello_world  
from /Users/ykessler/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
from /Users/ykessler/.rvm/rubies/ruby-2.0.0-p195/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
from (irb):3  
from /Users/ykessler/.rvm/rubies/ruby-2.0.0-p195/bin/irb:16:in `<main>' 

我要去哪里错了?

回答

5

你需要运行gem build hello_world.gemspec

然后安装它,您从创业板项目的根目录运行gem install hello_world。这将使用我们刚刚在您的目录中创建的.gem文件安装您的本地gem(如果存在,则不是来自rubygems.org的gem)。

现在,如果您运行gem list,则应该看到它。你现在应该可以要求你的宝石,并从其他Ruby代码访问你的库。所有你必须写的是require 'hello_world'。没有必要输入完整路径。事实上,这是一个糟糕的主意。

这一切在rubygems.org文档(http://guides.rubygems.org/make-your-own-gem/)中都很清楚地解释了。这很清楚,很有帮助,而且是我学习如何制作我的第一颗宝石的地方。

+0

完全按照你所说的那样 - 它显示在gem列表中,但是当我从idb请求'hello_world'时,我得到了“NameError:未定义的局部变量或方法'hello_world'for main:Object”。 – Yarin

+0

对不起,我忘了周围你好世界的报价。 –

+0

Ah NICE-是的,它装载!谢谢(我会坚持与你联系在一起的rubygems - 捆绑销售者没有任何意义......) – Yarin