Ohai认为我的插件是版本6.为什么?

时间:2015-05-20 03:24:56

标签: ruby ohai-gem

我正试图为ohai写一个插件。这似乎是一项非常简单的任务:

Ohai.plugin(:Uname) do
  provides 'uname'
  depends 'kernel'

  collect_data do
    uname Mash.new
    uname[:message] = `uname -a`
  end
end

对我而言,这看起来像是Opscode,O' Reilly和其他人提供的在线示例。但是,当我尝试测试它时会发生什么:

 % irb -rohai
irb(main):001:0> Ohai::Config[:plugin_path] << "."
=> ["/home/ll0359/.rbenv/versions/2.2.1/lib/ruby/gems/2.2.0/gems/ohai-8.3.0/lib/ohai/plugins", "."]
irb(main):002:0> o = Ohai::System.new
=> #<Ohai::System:0x007fed82e43078 @plugin_path="", @data={}, @provides_map=#<Ohai::ProvidesMap:0x007fed82e42fd8 @map={}>, @v6_dependency_solver={}, @d82e42f38 @controller=#<Ohai::System:0x007fed82e43078 ...>, @v6_plugin_classes=[], @v7_plugin_classes=[]>, @runner=#<Ohai::Runner:0x007fed82e42ec0 @prp:0x007fed82e42fd8 @map={}>, @safe_run=true>>

irb(main):003:0> o.all_plugins

这里的乐趣开始了。我一遍又一遍地得到这个输出:

[2015-05-20T03:13:09+00:00] WARN: Plugin Definition Error: <./ohai_uname.rb>: collect_data already defined on platform default
[2015-05-20T03:13:09+00:00] WARN: [DEPRECATION] Plugin at ./test_ohai.rb is a version 6 plugin. Version 6 plugins will not be supported in future releases....
your plugin to version 7 plugin syntax. For more information visit here: docs.chef.io/ohai_custom.html

(我的第二行上的文字被我的屏幕截断,但你明白了)

我尝试使用和不使用&#39;依赖&#39;运行此代码。线。结果相同。

我尝试使用和不使用Mash系列运行此代码,替换“uname uname -a&#39;为分配线。结果相同。

我尝试过和没有通过&#34;:linux&#34;作为collect_data的参数。唯一的区别是我得到一个关于collect_data(:linux)的警告,而不是:default。

我已经尝试将插件重命名为随机的8个字符标识符,以防它被绊倒被叫:Uname。结果相同。

我试过过去&#34; uname&#34; (大写和小写)作为o.all_plugins的参数。结果相同。

所以我的问题是:

  1. 为什么ohai(8.3,在Ruby 2.2.1下运行)认为这是一个版本6的插件?我无法在其中看到任何可能使其看起来不像版本7的内容。

  2. 我怎样才能使这个工作?

  3. 由于

1 个答案:

答案 0 :(得分:1)

自我注意:下次执行此操作时,请勿尝试从插件所在的目录进行测试,并添加“。”到你的plugin_path。移动到另一个目录并添加插件的绝对路径解决了这个问题。

我打算把它留下来以防万一其他人发生这种情况。