テキストファイルからバーコードを取得し、そのバーコードのWebサービスを検索して結果をダウンロードするRubyスクリプトを作成します。ruby if-block内のURLを 'file.open.read'できません
まず、私はWebサービスのダウンロードをテストしようとしました。ファイル内でクエリをハードコードすると、正常に動作します。
result_download = open('http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent [email protected]').read
すべて正常に動作します。
テキストファイルからバーコードを取り出してクエリを実行しようとすると、問題が発生します。
IO.foreach(filename) {|barcode| barcode
website = "'http://webservice.org/api/?query=barcode:"+barcode.to_str.chomp + "', 'User-Agent' => 'UserAgent [email protected]'"
website = website.to_s
mb_metadata = open(website).read
}
これの結果は次のとおりです。
/home/user/.rvm/rubies/ruby-2.3.0/lib/ruby/2.3.0/open-uri.rb:37:in `initialize': No such file or directory @ rb_sysopen - http://webservice.org/api/?query=barcode:78686112327', 'User-Agent' => 'UserAgent [email protected]' (Errno::ENOENT)
この問題が発生した場合、私は何とか生成する文字列が有効なURLではありませんので、私は理解できないとルビーが非を開こうとしています存在するファイルであるか、forループでこれをすべてやっているという問題であり、ファイル/ urlは存在しません。私はopen(website).readの代わりにopen(website).writeを使用しようとしましたが、同じエラーが発生します。
ご協力いただければ幸いです。
素晴らしいです。手伝ってくれてどうもありがとう。 私は経験が豊富でなく、各要素を正しく得ることに集中しています。私はあなたが持っているエレガントな方法でそれをするとは思わなかった。 もう一度ありがとうございます。 – Jack