2012-04-27 54 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