我是 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
这是我的更新 View
<p><b>SSH Connection log</b></p>
<div class="scroll" style="width:30%">
<%= @create_template.html_safe %>
</div>
因此,如果有人能给我指出任何教程的方向或给我一个要研究的想法,我将不胜感激,或者你有办法做到这一点,那就太好了
干杯
迈克
最佳答案
如果您已经在使用 Rails 3.1,则应该尝试 HTTP Streaming
。
http://railscasts.com/episodes/266-http-streaming
当然,您必须更改 Controller 中的代码,以便在连接到每个设备后将日志数据流式传输回客户端。
此外,deployinator附带一个 log_and_stream
模块,听起来正是您想要的。看看那个。
关于jquery - 如何在rails 3中实时显示日志更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7037612/