我正在尝试建立我的第一颗宝石。使用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>'
我哪里错了?
答案 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/)中已经清楚地解释了这一点。这很清楚,很有帮助,而且这也是我学习如何制作我的第一颗宝石的地方。