Ruby的'open-uri'和'Net:HTTP'宝石有什么区别?

时间:2013-05-26 21:54:21

标签: ruby gem net-http open-uri

看起来这两个宝石都执行非常相似的任务。任何人都可以举例说明一个宝石比另一宝石更有用吗?我没有具体的代码,我更想知道每个gem的一般用例。我知道这是一个简短的问题,我会根据要求填写空白。感谢。

2 个答案:

答案 0 :(得分:20)

他们看起来执行类似任务的原因是OpenURI是Net :: HTTP,Net :: HTTPS和Net :: FTP的包装。

通常,除非您觉得需要更低级别的界面,否则使用OpenURI会更好,因为您可以使用更少的代码。使用OpenURI,您可以打开URL / URI并将其视为文件。

请参阅:http://www.ruby-doc.org/stdlib-1.9.3/libdoc/open-uri/rdoc/OpenURI.htmlhttp://ruby-doc.org/stdlib-1.9.3//libdoc/net/http/rdoc/Net.html

答案 1 :(得分:3)

我刚发现Net::HTTP确实遵循重定向,而open('http://www.stackoverflow.com') { |content| puts content.read }没有,这是一个重要的区别。

例如,Net::HTTP.get(URI('http://www.stackoverflow.com'))将在重定向后显示正确的HTML,而{{1}}将显示重定向消息和302状态代码。