2013-11-22 106 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