我是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>
所以,如果有人能指出我的任何教程的方向或给我一个研究的东西的想法,我会很感激,或者你有办法做到这一点很棒
干杯
麦克
答案 0 :(得分:0)
如果您已经在使用Rails 3.1,则应该试用HTTP Streaming
。
http://railscasts.com/episodes/266-http-streaming
当然,您必须更改控制器中的代码,以便在连接到每个设备后将日志数据流回客户端。
另外,deployinator附带一个log_and_stream
模块,听起来就像你想要的那样。看看那个。