こんにちは、HTTParty を使用して、テストの 1 つで使用する URL を抽出する必要があるリモート json ファイルを呼び出します。json 形式は次のようになります。
"manifest" : {
"header" : {
"generated" : "xxxxxxxxxxxxxxx",
"name" : "xxxxxxxxxxx",
"version" : "1.0.0"
},
"files" : [ {
"file" : "blimp.zip",
"url" : "http://www.xxx.xx/restaurants_blimp.zip",
"checksum" : "ee98c9455b8d7ba6556f53256f95"
}, {
"file" : "yard.zip",
"url" : "www.xxx.xx/yard.zip",
"checksum" : "e66aa3d123f804f34afc622b5"
}
irb では、例: ['manifest']['files'] 内のすべてのサブ ハッシュを取得できます。 ]['1']['url'] <-- これは irb で動作しますが、すべての URL を取得する必要があるため、これが .each を使用する理由ですが、文字列エラーまたは同様のエラーに変換できません
#!/usr/bin/env ruby
require 'httparty'
HOST=ARGV[0]
ID=ARGV[1]
VERSION=ARGV[2]
class MyApi
include HTTParty
end
file = MyApi.get("http://#{HOST}/v1/dc/manifest/#{ID}/#{VERSION}")
file.each do |item|
puts item['manifest']['files']['url']
end
動作していませんが、IRB で次のことを実行できます。
puts item['manifest']['files'][2]['url'] <--これでURLが得られますが、.eachを使用すると、文字列などに変換できないという苦情が表示されます