我有一些脚本必须从我的 ruby on rails 应用程序中执行。为确保脚本执行应有的操作,我的应用程序必须显示/跟踪从脚本生成的日志文件的内容。
更详细地说:我期望通过串行连接配置一些黑盒设备的脚本(某种推出机制)。所以我必须观看,例如,更新过程或连接设备的重启(以验证一切正常)。这就是我写到我的日志文件的内容。
因此我需要:
- 执行一个进程并处理退出代码
- tail a/一些日志文件(可能是 Javascript 或 html5?)
我怎么能这样做?例子将非常感激!
非常感谢!
我有一些脚本必须从我的 ruby on rails 应用程序中执行。为确保脚本执行应有的操作,我的应用程序必须显示/跟踪从脚本生成的日志文件的内容。
更详细地说:我期望通过串行连接配置一些黑盒设备的脚本(某种推出机制)。所以我必须观看,例如,更新过程或连接设备的重启(以验证一切正常)。这就是我写到我的日志文件的内容。
因此我需要:
我怎么能这样做?例子将非常感激!
非常感谢!
#1的答案很简单,系统调用,即
ret = system('ls','-l')
如果命令的退出状态为零,则 ret 将为真。美元?将包含一个 Process::Status 对象,您可以从中获取退出状态
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.timers。在计时器循环中,您会调用
$.get('/get_file_contents?file_to_read=public/logfile');
这将点击控制器,获取文件内容,并执行 get_file_contents.js.erb,这将使用文件的当前内容更新 div。
您必须将路由 /get_file_contents 添加到 routes.rb。