问题标签 [open-uri]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - XML => 带有 Hpricot 和 Rails 的 HTML
我从未使用过 Web 服务和 Rails,显然这是我需要学习的东西。我选择使用 hpricot 因为它看起来很棒。无论如何,_why 已经很好地在hpricot 网站上提供了以下示例:
看起来简单、优雅、轻松。在 Ruby 中效果很好,但我的问题是:如何在 Rails 中分解它?
我尝试将这一切添加到单个控制器中,但想不出在视图中调用它的最佳方法。
因此,如果您从 Web API 解析 XML 文件并使用 Hpricot 将其打印为干净的 HTML,您将如何分解模型、视图和控制器上的活动,以及将什么放在哪里?
ruby - 如何使用 open-uri 发出 POST 请求?
是否可以使用 open-uri 从 Ruby 发出 POST 请求?
ruby - RSpec 和 Open-URI 如何模拟引发 SocketError/TimeoutError
我希望能够指定当 Open-Uri open() 调用超时或引发异常(例如 SocketError)时,我正在按预期处理事情,但是我遇到了麻烦。
这是我的规范(针对 SocketError):
以及我使用 open-uri 的对象部分:
然而,在这种情况下,规范失败并出现nil.read
错误。
这是本周我第二次遇到这个问题,上一次我试图在open()
用 a包装时模拟 TimeoutError timeout() {}
,那次我放弃了,只是通过打开课程而导致实际超时发生。我显然可以通过尝试调用无效的 URL 来引发 SocketError,但我确信有一种正确的方法可以使用 RSpec 来模拟它。
更新:我显然没有在深夜想清楚,错误实际上是当我在 SocketError 之后重新尝试 URL 时,and_raise(SocketError) 部分工作正常。
ruby-on-rails - 为什么 Ruby open-uri 的 open 在我的单元测试中返回一个 StringIO,但在我的控制器中返回一个 FileIO?
我继承了一个 Rails 2.2.2 应用程序,该应用程序将用户上传的图像存储在 Amazon S3 上。基于 attachment_fu 的Photo
模型提供了rotate
一种用于open-uri
从 S3 和 MiniMagick 检索图像以执行旋转的方法。
该rotate
方法包含这一行来检索与 MiniMagick 一起使用的图像:
self.public_filename
返回类似的东西
检索图像并旋转它在生产和开发中运行的应用程序中工作得很好。但是,单元测试失败了
原因是在单元测试的上下文中调用模型方法时,open(self.public_filename)
正在返回一个StringIO
包含图像数据的对象。这个对象的path
方法返回nil
并MiniMagick::Image.from_file
炸毁。
当从 调用这个相同的模型方法时PhotosController
,open(self.public_filename)
返回一个FileIO
与名为 eg 的文件绑定的实例,/tmp/open-uri7378-0
该文件包含图像数据。
想着一定是测试和开发环境的差异,我在开发环境下启动了控制台。但就像在单元测试中一样,open('http://...')
返回 a StringIO
,而不是a FileIO
。
我已经通过 open-uri 和所有相关的特定于应用程序的代码追踪了我的方式,并且找不到任何差异的原因。
ruby - Ruby open-uri 文件锁定
我遇到了一个问题,即下载到本地文件会锁定它,直到我杀死了 ruby 脚本。凭直觉,我改变了调用的形式,现在它没有锁定文件。
有人能告诉我为什么下面的第二种形式不锁定文件,但第一种形式可以吗?
此表单锁定本地文件:
此表单不会锁定文件:
谢谢。
ruby - open-uri + hpricot & nokogiri 不能正确解析 html
我正在尝试使用 open-uri + hpricot 解析网页,但这似乎是解析过程中的一个问题,因为宝石没有给我带来我想要的东西。
具体来说,我想在此 url中获取此div(其 id 为'pasajes' ):
我写了这段代码:
但它什么也没带来!我在 hpricot 和 nokogiri 中尝试了很多东西:
- 我尝试给出该 div 的绝对路径
- 我尝试使用选择器的 CSS 路径
- 我尝试使用 hpricot 搜索快捷方式(doc//“div#pasajes”)
- 几乎所有可能的相对路径都可以到达“pasajes”div
最后我找到了一个可怕的解决方案。我使用了 watir 库,打开网络浏览器后,我将 html 传递给了 hpricot。以这种方式 hpricot 可以识别 'pasajes' div。但我不想仅仅为了解析目的而打开一个网络浏览器......
我做错了什么?open-uri 工作不好吗?是杏吗?
ruby - Ruby 的 open-uri 和 cookie
我想存储来自一个 open-uri 调用的 cookie 并将它们传递给下一个。我似乎找不到合适的文档来执行此操作。如果您能告诉我正确的方法,我将不胜感激。
注意: w3.org 不是实际的 url,但它更短;假装饼干在这里很重要。
2 次否定后更新:虽然这不是一个修辞问题,但我保证这是可能的。 风滚草后更新:见(答案),这是可能的。花了我一段时间,但它有效。
ruby-on-rails - Rails 控制器中的 Hpricot 超时错误
嘿——我正在编写一个使用 digg API 的基本 Rails 应用程序。我正在尝试使用 hpricot 解析 digg 的 api 提供的 xml 数据,但是在测试页面时,浏览器会挂起,直到我最终捕获 Timeout::Error 异常。
这是控制器的代码:
这是堆栈跟踪:
我只是在学习 Rails,我不知道发生了什么。关于为什么会发生这种情况的任何想法?
更新
我使用本地保存的 xml 文件尝试了相同的确切过程,并且效果很好——问题可能与 open-uri 和远程 xml 有关
ruby - 将latin1字符串转换为utf8?
如何将包含 latin1 字符的字符串转换为 utf8?
该字符串是一个文档,由 open-uri 打开并包含这些特殊字符。
此致
ruby - 在 Ruby 脚本的工作页面上接收 404 HTTPError
这是我第一次提问,请温柔!
我有一个 Rails 应用程序可以处理一大堆域(到目前为止超过 100 个)的内容。每个域要么指向托管我的应用程序的位置(Heroku,如果您有兴趣),或者指向它托管的原始位置。每次域准备好时,它都需要指向 heroku 服务器,以便我的应用程序可以为其提供内容。
为了检查域是否已成功从其原始位置转换到我的应用程序,我正在编写一个脚本来查找我包含在其中的特殊隐藏标签。如果它找到标签,则该域指向我的应用程序。如果没有,它没有改变,我记录下来。
问题是,到目前为止,至少对于一个域,我的脚本收到了 404 OpenURI::HTTPError 异常。这很奇怪,因为我可以很好地访问该站点,甚至可以通过 curl 获取它。有谁知道为什么工作网站会出现这样的错误?这是重要的片段:
感谢您所有的帮助!