2013-04-30 45 views
0

我正在嘗試安裝eventmachine Gem,但是a line needs to be commented out in the source可以在Windows x64上使用Ruby 2.0。如何在編譯Gem時避免源被覆蓋?

我曾嘗試修改Ruby構建文件夾中的Gem源代碼,但每次運行gem install eventmachine時,它都會覆蓋我的更改。從命令行幫助看來,如果不拆開新鮮源代碼,似乎沒有辦法重新構建寶石,但可能有解決方法。

有沒有辦法爲我的Gem打造稍微調整過的源代碼?

回答

1

不要安裝這樣的寶石。相反,構建自己的版本並安裝它,只需指定作爲構建過程一部分生成的.gem文件的路徑。

我發現得到這個權利最簡單的方法是創建一個岔路口,設置叉的git路徑在Gemfile,並bundle install這會照顧編譯事情,正確地安裝它們。

+0

您好,感謝您的答覆打造。我對Ruby非常陌生(我只在我的電腦上運行AppFog的客戶端)。我嘗試製作一個名爲'Gemfile'的文件,並將其包含在任意目錄中。它包含'gem'eventmachine',::git =>'git:// github.com/brendanarnold/eventmachine.git',然後運行'gem install eventmachine',但它似乎仍然是下載官方來源 - 我做錯了什麼? – Brendan 2013-05-01 10:33:50

+0

啊我沒有使用'bundle'我用'gem',這可能會起作用 - 但是我得到了它的工作方式,謝謝! – Brendan 2013-05-01 10:58:55

+0

是的,我試圖說'gem install'總是從規範的源代碼中抽取出來,除非你給它一個本地'.gem'文件的路徑。 'bundle install'會執行你的'Gemfile'中的任何內容,包括自定義構建。 – tadman 2013-05-01 14:26:16

1

好了@dadman的幫助下計算出來的。

結束時只是從源代碼本地安裝,而不是調整由gem下載的官方源代碼,並防止它被覆蓋。這些都是具體步驟...

  • 克隆本地從GitHub(或地方)
  • 對源
  • 更改如果有.gemspec文件的根目錄
    • 開放目錄中的終端並輸入gem build GEMNAME.gemspec
    • 最後輸入gem install GEMNAME-VERSION.gem
  • 如果沒有.gemspec但有一個被稱爲「寶石」或「建」等類似的文件,那麼你可能使用rakeaccording to this reply
+0

在附註中,源代碼編譯並安裝了Gem,但事實證明,在代碼中實際使用它時仍然不起作用。如果有人閱讀這篇文章,試圖在Windows x64上安裝'eventmachine',我發現最後切換到Ruby 1.9.3 32bit並從那裏開始工作 - eventmachine直接編譯,現在我可以運行AppFog客戶端... – Brendan 2013-05-01 21:02:30