Rails网页上的实时记录器?

时间:2011-07-01 07:59:47

标签: ruby-on-rails ruby dynamic-websites

我正在将我曾经制作的Ruby应用程序转移到Rails中。 现在,应用程序会进行一些需要一段时间的计算(如果您愿意,可以达到无限(理论上):p)。 为了向用户显示所有内容的状态,我之前使用过控制台。现在,显然,我希望我的浏览器显示这一点。

有没有人有任何指针从哪里开始阅读/ exmples / gems / ideas? 我对网络开发很陌生,但我听说过jQuery,这可能会成功吗?

4 个答案:

答案 0 :(得分:3)

如果您的计算需要很长时间,则需要将它们传递给某个后台作业处理器。有几个宝石可以帮助你做到这一点。这里有一些教程如何将它们与Rails一起使用。

提供用于显示计算的处理状态的web界面可以以多种方式完成。一种方法可能是轮询。

答案 1 :(得分:2)

根据我的理解,你有两种方法可以做到这一点

1 - 使用某种服务器推送方法来实现。您可以使用以下组件

juggernaut(http://juggernaut.rubyforge.org/) http://www.ape-project.org/

2 - 将PeriodicalUpdater与JQuery一起使用。这将在给定的时间间隔内向服务器发送请求。

您可以使用您的状态填充db table,mem-cache或任何数据存储,并编写一个方法来读取和返回值,该方法可以通过Ajax.PeriodicalUpdater调用

我已经这样做了,但是这会在请求服务器时杀死性能(在我的情况下它是每5秒钟)

即使我个人还没有完成,我更喜欢服务器推送选项是有条不紊的方式

HTH

欢呼声

sameera

答案 2 :(得分:1)

Rails live streaming当前在rails 4.你可以使用后台任务处理作为Jason R推荐,然后在任务结束时你可以将结果放在开放的直播流上。例如,使用redis pub/sub将工作人员的异步结果返回到实时流控制器。

它比PeriodicalUpdater轮询服务器更好,因为它会从客户端删除不需要的请求,但需要为每个连接的客户端提供一个空闲套接字。

答案 3 :(得分:0)

我只是找到超级工具:)将此脚本添加到您的项目中:

  <script src='https://gist.githubusercontent.com/vitalyp/9441352/raw/5be994fbc78bd2bcc7ad31192f095c888d02f819/myconsole.js'></script>

以及document.ready(或从浏览器控制台)的某处,调用函数:

pop_console();

它显示一个带有console.log(...)字符串的窗口。