我在网页上构建了一个表单,允许用户输入 URL 并返回有关 URL 的 CSS 的一些信息。除了我注意到的一个问题外,该工具工作正常。
当我输入托管脚本的站点的 URL(在本地、登台服务器和生产服务器上测试)时,open-uri 命令“打开”返回 Timeout::Error。现在这并不令人惊讶,我猜有些东西被锁定在某个地方,并且在运行脚本和打开当前 URL 的过程中,进程有点被捆绑了。
作为参考,这里是发生超时的方法:
# loads the Nokogiri XML object if it hasn't already been loaded
def site
begin
timeout(10) do
@site ||= Nokogiri::HTML(open(url))
end
rescue Timeout::Error
return nil
end
end
我的问题是,如何使脚本能够“打开”脚本当前正在运行的域?我是否需要创建另一个线程或其他东西来处理我的工具的这个特定方面,如果是这样,我如何确保我的脚本的其余部分在我从“打开”命令收到有效的东西之前不会运行?
感谢您对此提出任何建议或提示。