Я написал небольшую библиотеку Chef, которая выглядит следующим образом:Chef: нет неявного преобразования строки в Integer TypeError
module Test
module Search
extend self
def single_node(type, value)
result = Chef::Search::Query.new.search(:node, "#{type}:#{value}",
filter_result: {
'name' => ['name']
}).map { |n| n['name'] }.first
return result
end
end
end
При запуске тестового кода против него я получаю следующее сообщение об ошибке:
TypeError
---------
no implicit conversion of String into Integer
1: module Test
2: module Search
3: extend self
4: def single_node(type, value)
5: result = Chef::Search::Query.new.search(:node, "#{type}:#{value}",
6: filter_result: {
7: 'name' => ['name']
8>> }).map { |n| n['name'] }.first
9: return result
10: end
13: end
14:
После некоторых игр я обнаружил, что поиск содержал эту информацию:
[[{"name"=>"influxdb.example.org"}], 0, 1].
Это кажется странным, поскольку используемые варианты поиска возвращают что-то другое при поиске в рамках DSL-шеф-повара.
Что вы думаете? – Oleander
Извинения за неясность. Почему результат отличается от результата поиска повара DSL? Формат кажется странным с дополнительными целыми числами, и значение, которое я хочу, является хешем (правильным) внутри массива (также правильным, я думаю) в массиве. Этот же поиск в DSL возвращает первый результат правильно (имя узла) без ошибки вообще. – kemra102