是否可以确定vagrant插件中的VirtualBox版本?

时间:2013-10-23 22:23:15

标签: ruby virtualbox vagrant

我想帮助修补vagrant-persistent-storage plugin中由最近版本的VirtualBox(4.3.0r89960)和Vagrant(1.3.5)引起的错误。

具体来说,似乎VirtualBox已经从--sataportcount命令中弃用了vboxmanage storagectl标志,以获得更简洁的--portcount标志。

我一般不熟悉vagrant插件开发,但是如果我能够准确地确定正在使用的VirtualBox的版本,那么可以很容易地修复有问题的标志。

  • 在vagrant插件中,是否有可能比较VirtualBox的版本以保持与旧版VirtualBox版本的向后兼容性?
  • 如果没有,是否有任何其他流浪插件必须使用vboxmanage -v的命令行响应来进行版本特定的确定?我宁愿不必重新发明轮子......

提前感谢任何提示!

更新:我发现可以在VirtualBox提供程序插件中将该版本作为字符串获取:

module VagrantPlugins
  module ProviderVirtualBox
    module Driver
      class Base
        @version

然而,这只是VirtualBox版本号('4.3.0')的字符串表示,而不是允许严格比较的正确版本号(4.3.0)。我意识到我自己可以进行这种比较,但似乎应该有一种方法(在Vagrant中)来管理VirtualBox / provider依赖项。

1 个答案:

答案 0 :(得分:0)

Ruby已经可以将版本作为字符串进行比较。像这样:

irb(main):001:0> '4.3.0' < '4.3.1'
=> true
irb(main):002:0> '1.2.3' < '4.3.0'
=> true
irb(main):003:0> '4.2.17' > '4.3.0'
=> false

如果您需要更高级的东西,请尝试使用versionmy ruby​​ gem:https://github.com/dazuma/versionomy