2014-01-21 54 views
0

我無法創建私人寶石,推送到私人git回購,然後通過:git參考在我的Gemfile中使用該寶石。Bundler未從git repo安裝私人寶石

問題是,bundler(雖然沒有提供任何錯誤)似乎並沒有爲我安裝寶石。

我發現我可以證明這與任何寶石,不只是我的。所以我要用'colorize'gem來演示它,因爲它已經在github和rubygems上,並且是一個簡單的沒有依賴關係的gem。下面是用寶石我test.rb文件:

require 'colorize' 
puts 'some blue text'.colorize(:blue) 

CASE(在此工作):

的Gemfile文件如下:

source 'https://rubygems.org' 
gem 'colorize' 

捆綁運行令人高興的是,和ruby test.rb輸出藍色文字就好了。

然後運行gem uninstall colorize在下次測試前清理。

情況下,兩個(失敗):

現在,我改變的Gemfile這樣:

#source 'https://rubygems.org' 
gem 'colorize', :git => '[email protected]:fazibear/colorize.git' 

注意,我註釋掉rubygems.org線,以確保我不小心從rubygems獲得寶石。

捆綁再次運行得很好,可以看到從回購獲得寶石。到現在爲止還挺好。但是現在,ruby test.rb失敗:require cannot load 'colorize'。它似乎沒有安裝寶石,並且實際上,如果我運行gem uninstall colorize進行清理,則表示未安裝着色!

那麼我在這裏做錯了什麼,或者不明白?我想從git倉庫安裝寶石,而不是rubygems,因爲寶石是一個私人寶石。

感謝, - 格倫

+0

run'bundle exec。/ test.rb' –

+0

我的回答有幫助嗎? –

回答

1

當然創業板未安裝在第二種情況下,這是正確的,因爲它已被刪除。但是,當捆綁克隆一個Git回購,或使用路徑鍵創建的寶石,它不使用Ruby的寶石實用,要知道weither創業板成功安裝你剛剛運行,並查看已安裝的寶石的路徑:

$ bundle show colorize 
/home/user/.rvm/gems/[email protected]/gems/colorize-~.~.~ 

如果情況下,創業板安裝不正確,你看殼:

Could not find gem 'colorize'. 

,將不得不再次發出bundle install和陷阱錯誤,如果任何。

由於捆綁不叫gem命令,不把檢查了寶石從git的回購協議或GitHub的成普通寶石的拉動,以及而是創建其拉內的寶石本身,控制它。你應該使用捆綁本身運行腳本:

$ bundle exec ./test.rb 

$ bundle exec ruby test.rb 
+0

-1這不是OP所要求的,他無法安裝寶石本身。 –

+0

@ ansh0l你可以閱讀由作者提供的錯誤'「require不能加載'colorize'」',並且文本'Bundle再次運行正常,'從作者的消息?他們說安裝順利通過。所以你是不正確的。 –

+0

我不這麼認爲。在第二種情況下沒有卸載寶石,這意味着沒有安裝寶石。無論如何,我會等待OP對這個問題做出迴應。如果我錯了,或者如果他明天不回來,我會消除我的失望。 –

1

在我看來,你的ssh連接到github上未正確設置。

按照建議的here on github嘗試做ssh -T [email protected],如果配置錯誤,這會給你一個錯誤。按照鏈接中提到的步驟,然後再次檢查,事情應該正常工作。 FWIW,我試過並能夠以這種方式安裝寶石。

如果您在服務器上安裝此gem,請在服務器本身上運行此命令。

的替代來克服這個(配置ssh密鑰的限制的每個帳戶使用在:git[email protected] URL)是改爲使用一個https URL(查覈this thread);然而這卻擊敗了使用SSH密鑰的所有目的。