我需要解析用Ruby编写的Vagrantfile中定义的配置,并在Java代码的其他地方使用这些设置。尝试探索jRubyParser,但未发现任何定义其用法的文档。
在本地克隆了Vagrant仓库,但是浏览代码也无济于事,因为我没有使用Ruby的经验。 Vagrant将如何读取文件中定义的配置?有输入吗?
最佳答案
Vagrantfile是常规的Ruby脚本,也就是说,它应由Ruby解释器解释,而不是作为配置文件读取。
更麻烦的是,某些配置选项在Vagrantfile中未声明为顶级变量,而是在某些函数调用中声明为对象的属性(例如“ config.vm.provider”)。
根据配置的复杂程度,我会考虑仅逐行读取文件并进行正则表达式匹配以获取所需的变量。这不是最优雅的解决方案,但可能比替代方法更快地实现。
另外,如果您的提供者始终相同,例如VirtualBox,也许您可以从那里获得一些配置。在这种情况下,您只需要读取位于“ VirtualBox VMs”目录中某个位置的文件(在Mac上,该文件位于“ $ HOME / VirtualBox VMs”中)。这是一个XML文件,因此您可以使用一个Java XML解析器来获取所需的内容。