然而,我似乎僅限於所存在的實例節點,其不包括任何XML解析庫上的rubygems。
正確。當構建包在臨時容器中運行時,它將使用容器提供的Ruby版本。這意味着你被鎖定到特定版本的Ruby和容器提供的一組gem。
解決這個問題的唯一方法是擁有一個引導shell腳本,用於下載Ruby,安裝您的Gems,然後運行實際的構建包Ruby腳本。雖然這是額外的工作和開銷,但如果可以避免的話,這可能不是一個好的選擇。
我該如何讓buildpack指定它需要額外的gem來執行?將gem添加到buildpack本身的Gemfile中似乎對登臺應用程序沒有任何影響。
我不認爲這是可能的。你不能gem install
的東西,因爲它需要root訪問權限,你不會有。
你可以做的是在構建包中包含你需要的依賴關係。我們使用PHP構建包的YAML依賴項來完成此操作。如果你的依賴是所有的Ruby代碼(即沒有本地代碼),這應該工作正常。
或者,我該如何修改現有的XML文件,只使用CF中的庫存設施?我想避免一個正則表達式,但這可能是最後的手段。
這取決於你在做什麼以及你需要改變什麼。
- 正則表達式搜索和替換是一個選項。
- 基本字符串搜索和替換是另一個。
- 您可以將其安裝到環境中,並且能夠解析/編輯XML的工具。如果它在安裝Java之後的安裝後期發生,那麼您可以運行一些Java代碼。
我不會推薦創建自定義堆棧。這是令人難以置信的侵入性,意味着你需要提供所有更新(不是一項小任務),而且如果你打算使用公共雲提供商,這不會有效,因爲沒有人會允許你安裝您的自定義堆棧在他們的公共雲中。
希望有幫助!
原來我可以在臨時容器中使用REXML包進行XML操作。 – Pickles