2

我想帮助修补vagrant-persistent-storage 插件中的一个错误,该错误是由 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/提供者的依赖关系。

4

1 回答 1

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

于 2013-11-12T00:56:19.053 回答