我試圖找出如何引用廚師寶石二進制,它只是發生,我認爲寶石總是被載入了在1.9.1
目錄,而不是1.9.3
....爲什麼gem安裝到1.9.1中。目錄,即使我已安裝1.9.3?
誰能解釋這?
如果/當我移動到Ruby 2時,這會改變嗎?如果它要更改,不想硬編碼1.9.1
....
謝謝!
我試圖找出如何引用廚師寶石二進制,它只是發生,我認爲寶石總是被載入了在1.9.1
目錄,而不是1.9.3
....爲什麼gem安裝到1.9.1中。目錄,即使我已安裝1.9.3?
誰能解釋這?
如果/當我移動到Ruby 2時,這會改變嗎?如果它要更改,不想硬編碼1.9.1
....
謝謝!
廚師可以在node["languages"]["ruby"]["bin_dir"]
中找到rubygems創建可執行文件的目錄。因此,您應該從不改變食譜中的這些路徑的硬編碼。
至於您的確切問題:在Ruby> = 1.9.1和< 2.0.0中,rubygems將gem安裝到1.9.1
目錄中以表示其使用1.9.1 ABI。目的是編譯的寶石可以在使用ABI的不同ruby版本之間互換使用。然而,在實踐中,這變得更加困難...
Ruby 2.0.0使用2.0.0
目錄。同樣,你不應該硬編碼路徑,而是使用節點屬性(OHAI使用rubygem自己的設施設置)。
您可以隨時使用:
$ gem env gemdir
或
$ gem env gempath
讓你的寶石目錄。
感謝您對我的問題的具體答案,以及一些背景故事! – Brandon 2013-03-03 00:36:15
如果我在廚師食譜中安裝了新的系統紅寶石,這個路徑是否會更新,以便我可以使用'gem_package'來安裝新寶石的gem? @iain @holger只是 – Brandon 2013-03-03 00:37:06
如果你改變紅寶石與廚師跑的開始相比,你必須使用'ohai'資源來重新加載信息。另外,在安裝任何其他gem之前,您應該確保這樣做,以確保一致的安裝目標。 – 2013-03-03 09:59:55