看起来这两个宝石都执行非常相似的任务。任何人都可以举例说明一个宝石比另一宝石更有用吗?我没有具体的代码,我更想知道每个gem的一般用例。我知道这是一个简短的问题,我会根据要求填写空白。感谢。
答案 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.html 和http://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状态代码。