2013-08-17 47 views
0

我正在嘗試構建我的第一個寶石。使用瑞安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)安裝寶石通過捆綁銷售商:

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

我要去哪裏錯了?

回答

5

你需要運行gem build hello_world.gemspec

然後安裝它,您從創業板項目的根目錄運行gem install hello_world。這將使用我們剛剛在您的目錄中創建的.gem文件安裝您的本地gem(如果存在,則不是來自rubygems.org的gem)。

現在,如果您運行gem list,則應該看到它。你現在應該可以要求你的寶石,並從其他Ruby代碼訪問你的庫。所有你必須寫的是require 'hello_world'。沒有必要輸入完整路徑。事實上,這是一個糟糕的主意。

這一切在rubygems.org文檔(http://guides.rubygems.org/make-your-own-gem/)中都很清楚地解釋了。這很清楚,很有幫助,而且是我學習如何製作我的第一顆寶石的地方。

+0

完全按照你所說的那樣 - 它顯示在gem列表中,但是當我從idb請求'hello_world'時,我得到了「NameError:未定義的局部變量或方法'hello_world'for main:Object」。 – Yarin

+0

對不起,我忘了周圍你好世界的報價。 –

+0

Ah NICE-是的,它裝載!謝謝(我會堅持與你聯繫在一起的rubygems - 捆綁銷售者沒有任何意義......) – Yarin