我正在将我曾经制作的Ruby应用程序转移到Rails中。 现在,应用程序会进行一些需要一段时间的计算(如果您愿意,可以达到无限(理论上):p)。 为了向用户显示所有内容的状态,我之前使用过控制台。现在,显然,我希望我的浏览器显示这一点。
有没有人有任何指针从哪里开始阅读/ exmples / gems / ideas? 我对网络开发很陌生,但我听说过jQuery,这可能会成功吗?
答案 0 :(得分:3)
如果您的计算需要很长时间,则需要将它们传递给某个后台作业处理器。有几个宝石可以帮助你做到这一点。这里有一些教程如何将它们与Rails一起使用。
Sidekiq - Railscasts
Delayed Job (Revised) - Railscast
Delayed Job - Railscast
Resque - Railscast
提供用于显示计算的处理状态的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(...)
字符串的窗口。