2012-04-27 68 views
0

我有一些脚本需要在rails应用程序中执行。为了确保脚本能够做到他们应该做的事情,我的应用程序必须显示/拖尾从脚本生成的日志文件的内容。Ruby On Rails 3.1中的拖尾日志文件

更详细地说:我期望通过seriell连接(某种推出机制)配置一些blackbox设备的脚本。因此,我必须观察更新过程或所连接设备的重新启动(以确认一切正常)。这是我写入我的日志文件。

因此我需要:

  1. 执行过程和处理退出代码
  2. 尾/一些日志文件(也许Javascript或HTML5?)

我怎么能这样做呢?例子将非常感激!

非常感谢!

回答

1

答案#1是很容易的,系统调用,如果命令有一个零退出状态,即

ret = system('ls','-l') 

RET会是真的。 $?将包含一个过程::状态对象,您可以从中获得退出状态

unless system('ls','-l','/a_bogus_dir') 
    logger.debug("ls failed with #{$?.exitstatus}") 
end 

#2的答案可以有多种方式。您可以创建一个控制器操作,只需抓取文件系统中特定文件的内容,然后返回内容。

def get_file_contents 
    File.open(params[:file_to_read],"r") { |f| @contents = f.read } 
    respond_to |format| 
    format.js 
    end 
end 

然后创建文件get_file_contents.js.erb:

$('#display_div').html('<%= escape_javascript(@contents) %>'); 

然后,你有你的页面上创建某种形式的计时器反复调用控制器操作,使用jQuery。计时器。在计时圈,你会打电话

$.get('/get_file_contents?file_to_read=public/logfile'); 

这会打击控制器,抓住该文件的内容,并执行get_file_contents.js.erb,这将更新文件的当前内容股利。

您必须将route/get_file_contents添加到routes.rb。

+0

对不起。可悲的是,我在这里花岗岩上咬了一口。没有得到它的工作。它不显示任何更新。它似乎用html而不是“js”来回应。我已经创建了一个名为“get_file_contents.html.erb”的文件,其中包含我的“display_div” - 和“get_file_contents.js.erb”。但我有一个空的网站(没有HTML)。 – 2012-06-22 13:04:41