如何在rails 3中实时显示日志更新?

时间:2011-08-12 08:41:13

标签: jquery ruby-on-rails-3

我是rails3和ruby的新用户,想问我有问题的问题

在我的应用程序中,我有一个方法,从数据库中获取主机列表,并通过ssh连接到每个主机并运行一个作业 作业的结果被附加到字符串(将其视为日志),这是通过指定要运行的命令的帖子调用的

在流程结束时,日志显示在页面上

到目前为止一切正常但是运行所有连接所花费的时间相当长(超过一分钟)所以我希望显示结果页面并在div中显示日志文件更新,直到该过程结束(几乎是实时的)

我做了一些研究,我确信我可以使用JQuery或类似的东西来做这个想法,但我不知道如何在rails环境中做这种事情和所有的教程我发现没有真正的帮助

这是我目前的代码

update_controller.rb

def update
  list = Device.all
  c = params[:comm.]
  # create log file
  @create_template = "Log"

  list.each do |device|
    #call method to connect via ssh and run specific command
    @create_template += ssh_connect(device.address, c)
  end

  # show process complete    
  @create_template += "Process Complete" 
end

这是我的更新视图

<p><b>SSH Connection log</b></p>
<div class="scroll" style="width:30%">
<%=  @create_template.html_safe %>
</div>

所以,如果有人能指出我的任何教程的方向或给我一个研究的东西的想法,我会很感激,或者你有办法做到这一点很棒

干杯

麦克

1 个答案:

答案 0 :(得分:0)

如果您已经在使用Rails 3.1,则应该试用HTTP Streaming

http://railscasts.com/episodes/266-http-streaming

当然,您必须更改控制器中的代码,以便在连接到每个设备后将日志数据流回客户端。

另外,deployinator附带一个log_and_stream模块,听起来就像你想要的那样。看看那个。