0

我正在尝试构建我的第一个宝石。使用 Ryan Biggs 的教程作为我的指南,我做了以下事情:

1)创建gem脚手架:

$ bundle gem hello_world

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

require "hello_world/version"

module HelloWorld
  def hi
    "Hello world!"
  end
end

3)通过捆绑器安装gem:

$ cd hello_world
$ bundle install

此时,如果我运行

$ bundle show hello_world

表明

/Users/ykessler/gems/hello_world

所以它看起来像安装了。

但是当我尝试从 irb 请求 gem 时:

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

我哪里错了?

4

1 回答 1

6

你需要跑gem build hello_world.gemspec

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

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

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

于 2013-08-17T20:43:38.203 回答