2013-11-22 66 views
0

我有一个真正的新手问题。我写了一个非常小的(单个文件)库,我想用gem发布它,以便我可以在其他项目中模块化地使用它。我用下面的gemspec:无法加载自定义宝石

Gem::Specification.new do |s| 
    s.name  = 'symbolize-array' 
    s.version  = '1.0.0' 
    s.date  = '2013-11-22' 
    s.summary  = "Symbolizes strings in arrays" 
    s.description = "" 
    s.files  = ["lib/array.rb"] 
    s.homepage = 
    'https://github.com/renra/symbolize-array-ruby' 
    s.license  = 'MIT' 
end 

我打造的宝石。精细。我发布了宝石。精细。我从rubygems安装gem。精细。但是,当我运行IRB和确实需要“象征阵”我得到:

LoadError: cannot load such file -- symbolize-array 
from /home/renra/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
from /home/renra/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in `require' 
from (irb):4 
from /home/renra/.rvm/rubies/ruby-2.0.0-p247/bin/irb:13:in `<main>' 

正如你可以回溯看到我用RVM。当我运行'宝石环境',我去宝石路径,我可以看到我的宝石像其他人一样安装。我可以要求其他人,但我不能要求我的宝石。所以我想这不是加载路径的问题(我已经看到了像这样回答的问题),但也许以我建立宝石的方式。感谢您的想法。

回答

3

您需要require "array"才能加载您的库,由于与其他宝石的名称冲突,该库可能根本无法工作。当你安装一个gem时,它只是将它的库文件夹添加到搜索路径中,并且require按名称查找文件(没有.rb),它们不引用gem名称。

看看的naming conventions for gem components并链接http://guides.rubygems.org/name-your-gem/

我怀疑你应该将文件命名为"lib/symbolize_array.rb"也可能是创业板的名称应该是"symbolize_array" - 理想也将执行在这种情况下,一个类或模块SymbolizeArray,但那不重要。

+0

谢谢。就是这样:-) – Renra