无法加载我创建的gem

时间:2013-08-17 20:28:55

标签: ruby rubygems bundler

我正在尝试建立我的第一颗宝石。使用Ryan 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)通过bundler安装gem:

$ 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>'

我哪里错了?

1 个答案:

答案 0 :(得分:6)

您需要运行gem build hello_world.gemspec

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

现在,如果你运行gem list,你应该看到它。您现在应该可以要求您的gem并从其他ruby代码访问您的库。所有你需要写的是require 'hello_world'。无需键入完整路径。事实上,这是一个坏主意。

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