2009-01-27 127 views
8

是否可以在安裝時有條件地設置gem的依賴關係?這是我希望澄清問題的情況。有條件的gem依賴關係

有一個寶石,我堅持這取決於JSON寶石。但是,我經常使用jruby,它有一個名爲json-jruby的json gem的端口。要解決這個問題,我必須爲每個依賴構建兩個獨立的gem。我想要構建一個gem,要麼說它依賴於json或json-jruby,要麼在安裝時檢查並使用正確的依賴關係。

任何人都有一個很好的解決方案呢?

回答

3

嗯,

我相信,因爲我已經注意到這似乎做這個寶石可以多個代碼依賴。但我會建議不要這樣做。不管你在這裏插入的代碼有多簡單,當你考慮到用戶將加載一個依賴於另一個依賴於另一個的gem時,即使是一段代碼或另一段代碼的邏輯中的小故障也可以使整個依賴訓練一場噩夢。

所以,我會離開你的kludge原樣。此外,我建議你有一個tarball,用戶也可以下載。我不得不手動提取配置代碼不允許我安裝它們的gem中的代碼。

3

結賬有點教程這裏:http://wiki.github.com/rdp/ruby%5Ftutorials%5Fcore/gem

它顯示瞭如何安裝不同的版本取決於什麼版本的紅寶石installee使用依賴。

(簡短的回答 - 這是不容易,因爲它應該是)

+1

鏈接已經轉移到:http://en.wikibooks.org/wiki/Ruby_Programming/RubyGems#How_to_install_different_versions_of_gems_depending_on_which_version_of_ruby_the_installee_is_using – 2010-09-21 01:01:54