#1の答えは非常に簡単です。つまり、システムコールです。
ret = system('ls','-l')
コマンドの終了ステータスがゼロの場合、retはtrueになります。$?終了ステータスを取得できる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に追加する必要があります。