soa*_*ish 0 ruby data-structures
如何@hostname从这些数据中提取价值?例如做我期待的事puts output[:hostname]
{:status=>"passed",
:code_desc=>"Host example.com port 80 proto tcp is expected to be reachable",
:run_time=>0.207583,
:start_time=>"2020-08-27T21:02:07+01:00",
:resource_title=>
#<#<Class:0x00007f87f71ebeb0>:0x00007f87f71eaf38
@__backend_runner__=
Inspec::Backend::Class @transport=Train::Transports::Local::Connection,
@__resource_name__=:host,
@host_provider=
#<Inspec::Resources::DarwinHostProvider:0x00007f87f71e9a20
@has_nc=true,
@has_ncat=true,
@has_net_redirections=true,
@inspec=
Inspec::Backend::Class @transport=Train::Transports::Local::Connection>,
@hostname="example.com",
@ip_cache=["93.184.216.34", "2606:2800:220:1:248:1893:25c8:1946"],
@ping_cache=
{:success=>true,
:connection=>"Connection to example.com port 80 [tcp/http] succeeded!\n",
:socket=>""},
@port=80,
@protocol="tcp",
@resource_exception_message=nil,
@resource_failed=false,
@resource_skipped=false,
@supports=[{:platform=>"unix"}, {:platform=>"windows"}]>,
:expectation_message=>"is expected to be reachable",
:waiver_data=>nil}
Run Code Online (Sandbox Code Playgroud)
任何有关文档的帮助将非常感激。
如果 Kaom Te 没有在这里写的访问器方法/sf/answers/4453669881/,那么使用instance_variable_get如下:
output[:resource_title].instance_variable_get(:@hostname)
Run Code Online (Sandbox Code Playgroud)
但!当心!事实上,有人没有将此访问器作为公共方法提供,这意味着他们想要封装此数据。
因此,如果您正在为某些生产系统执行此操作 - 您可能会惊讶地发现,在下一次 gem 更新后,该gem@hostname已不再存在(名称已更改),或者(更糟糕)它仍然存在,但包含不同的数据。这是一个内部实现细节,可能会发生变化。
另一方面,如果该对象来自开源项目 - 制作 PR 并使其成为公共接口的一部分。
| 归档时间: |
|
| 查看次数: |
86 次 |
| 最近记录: |