如何打开网址,然后检查它是否仍然在红宝石中打开?

时间:2014-04-28 16:02:02

标签: ruby-on-rails ruby

我看到很多方法在浏览器中用ruby打开网址但是找不到检查它是否仍然打开的方法?我在这里发现了一些内容 - watir.com但是它似乎与Ruby version >= 1.9.2.一起工作,我有ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-linux]所以我不想更改此安装。那有什么办法吗? 我可以通过它打开一个网址,然后检查该标签或浏览器的实例是否已关闭或仍未打开???

所以,我想要做的基本上是在浏览器中打开一个URL,以便服务器可以将该URL重定向到我的脚本。哪个脚本将服务器提供的代码写入文件,我的ruby应用程序必须读取该文件的内容。所以,如果我知道网址已关闭意味着我的ruby应用程序现在可以从文件中获取代码。

2 个答案:

答案 0 :(得分:0)

您可以获取进程ID。然后,您可以在主线程或另一个线程中等待该进程退出。

您可以使用进程stdlib集成来执行此操作:请参阅http://ruby-doc.org/core-2.0/Process.html#method-c-wait

答案 1 :(得分:0)

这不是那么容易,更不用说不可能了。您无法打开网址,网址(统一资源定位符)只是一个地址,您的浏览器会使用该地址来请求网站(或资源)的内容。网络的运作方式是:

  1. Guest使用在url(stackoverflow.com)的protocole位中指定的protocole请求与服务器的连接(由url的主机名指定,例如http)。

  2. 服务器响应并建立连接

  3. 访客发送特定页面的请求(网址的剩余部分)

  4. 服务器处理请求并发送响应。

  5. 连接已关闭。

  6. 这意味着浏览器会抓取网站的内容,然后一旦加载内容就完全没有与服务器的交互,无论页面是否打开。

    我能想到实际弄清楚选项卡是否仍然打开的唯一方法是定期向服务器发送一些AJAX请求,因此服务器知道页面仍处于打开状态(或者至少是页面仍然有效)。一旦您没有收到此更新,您就可以认为标签或窗口已关闭。