然而,我似乎仅限于所存在的实例节点,其不包括任何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