require 'net/http'
urls = [
{'link' => 'http://www.google.com/'},
{'link' => 'http://www.facebook.com/'},
{'link' => 'http://www.yahoo.com/'}
]
urls.each do |u|
u['content'] = Net::HTTP.get( URI.parse(u['link']) )
end
print urls
これは手続き型コードとして機能します。サーバーにアクセスしたいだけで、順序については問題はありません。Ruby でこれを行うにはどうすればよいでしょうか。1 つのオプションはスレッドを使用することです。
スレッドを使用した例を次に示します。
require 'net/http'
urls = [
{'link' => 'http://www.google.com/'},
{'link' => 'http://www.facebook.com/'},
{'link' => 'http://www.yahoo.com/'}
]
urls.each do |u|
Thread.new do
u['content'] = Net::HTTP.get( URI.parse(u['link']) )
puts "Successfully requested #{u['link']}"
if urls.all? {|u| u.has_key?("content") }
puts "Fetched all urls!"
exit
end
end
end
もっと良い解決策はありますか..??
PS:- Mixpanel にアクセスしたいので、HTTP 呼び出しを実行して応答を待たないようにします。