2009-10-17 180 views
54

在這種情況下,我發現自己已經兩次了:我在我的系統上安裝了一個gem,並開始使用它從我的Rails項目中使用它。最終,我需要對該寶石進行一些更改。我應該如何繼續?分叉一個Rails項目的寶石

理想情況下,我想查看某處的那個gem的源代碼,比如〜/ third_party/gems,在它上面工作,讓我的Rails項目使用它。那可能嗎?

在所有情況下,寶石都在github上,所以我可能會在github上克隆它,讓我的機會和維護自己的分支。我想那時我會直接用我的服務器上的gem install來安裝那個分支。那有意義嗎?

+0

GitHub的構建寶石正在被淘汰。 http://github.com/blog/515-gem-building-is-defunct – 2009-10-19 13:15:30

回答

92

今天這與Bundler很容易做到。你讓寶石的本地副本,然後,而不是在你的Gemfile做

gem "whatever" 

,你這樣做:

gem "whatever", :path => "/home/pupeno/whatever" 

運行包安裝後,創業板從該目錄拾取。即使你在那裏修改了某些東西,你所需要做的就是重新加載它,重新啓動Rails。

如果您需要使用您自己的寶石的變化來部署應用程序,你犯了一個叉,在Github或相似,在Gemfile中你這樣做:

gem "whatever", :git => "[email protected]:/pupeno/whatever.git" 

,就是這樣。它很簡單,直接,美觀。

+2

這很有用,因爲在某些情況下,存在陳舊的gem或具有我想用作凝視點的功能。謝謝。 – 2010-10-27 19:22:39

+0

非常有用的解決方案! – RubyFanatic 2011-12-14 21:48:14

+16

我建議使用公共git url。 'git:// github.com/pupeno/whatever.git'而不是私人('[email protected]:pupeno/whatever.git'),以防其他人使用您的項目並且無法私人訪問您的項目回購 – 2012-04-17 23:57:01

5

在所有的情況下,寶石都在github上,所以我可能會在github上克隆它,讓我的機會和維護自己的分支。我想那時我會直接用我的服務器上的gem install來安裝那個分支。

如果你真的需要破解真正的寶石來源,那麼是的,這將是做到這一點。但是,它應該是最後的手段。如果你不需要,你不想維護真正的寶石。爲什麼不從您的Rails代碼中需要更改和使用您的類而不是Gem類的功能的Gem源擴展類?

我發現你很少需要直接破解第三方代碼來做你需要做的事情。良好的軟件可以擴展/輕鬆擴充。