无法加载我创建的gem

Yar*_*rin 0 ruby rubygems bundler

我正在努力建立我的第一颗宝石.使用Ryan Biggs的教程作为我的向导,我做了以下工作:

1)创建了宝石脚手架:

$ bundle gem hello_world
Run Code Online (Sandbox Code Playgroud)

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

require "hello_world/version"

module HelloWorld
  def hi
    "Hello world!"
  end
end
Run Code Online (Sandbox Code Playgroud)

3)通过捆绑器安装gem:

$ cd hello_world
$ bundle install
Run Code Online (Sandbox Code Playgroud)

此时,如果我跑了

$ bundle show hello_world
Run Code Online (Sandbox Code Playgroud)

表明

/Users/ykessler/gems/hello_world
Run Code Online (Sandbox Code Playgroud)

所以它看起来像安装.

但是当我尝试从irb中获取宝石时:

require '/Users/ykessler/gems/hello_world'
Run Code Online (Sandbox Code Playgroud)

它无法加载它:

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>'
Run Code Online (Sandbox Code Playgroud)

我哪里错了?

Eri*_*son 6

你需要跑 gem build hello_world.gemspec

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

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

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