2012-03-21 2 views
4

레일에서 저는 일종의 cronjob을 빌드했으나 일단 뷰가 렌더링되면 처리 된 작업에서 '사인 오프'처럼 실행하고 싶은 코드가 있습니다. 이 처리의 절대 끝에서 실행되도록레일에서 뷰를 렌더링 한 후에 코드를 평가하십시오.

어디

어떻게 레일 프로세스 HTML은 버퍼링 않습니다 않습니다 (뷰가 렌더링되면) 코드를 넣어 것? (그것의 렌더링의 렌더링이나 한 번 사용자에게 플러시 HTML시겠습니까?)

+0

예, 스택 맨 아래에 미들웨어를 삽입하면 렌더링 된 결과를 가져옵니다. 응답은'html'을 포함합니다. – Reactormonk

+0

컨트롤러에 어떻게 구현합니까? 'format.html' 이후 (해당 컨트롤러가 항상 모든 컨트롤러에 존재하지는 않음) – Akshat

+0

이 작업으로 렌더링을 막을 수 있어야합니까, 아니면 관리입니까? 뷰를 렌더링하지 못하게하려면이 코드가 필요하지 않은 경우 컨트롤러에서 'after_filter'를 사용할 수 있습니다. –

답변

0

렌더링 된 HTML에서 요소를 선택하려면, 당신은 자바 스크립트를 사용하여 값을 읽을 수/JQuery와 :

$(document).ready(function() { 
     var completion = $('#items_processed').val(); 
    }); 
+0

임 그래서 그것의 wget 전화 너무 메신저 자바 스크립트를 처리합니다 호출 cron 작업으로 그것을 실행. – Akshat

1

당신은 렌더링 할 수 당신의 목표는 될 수

begin 
    @elements = Element.find(:all) 
    html = render_to_string 
    # Store the result 
    Result.create(:element_count => @elements.count) 
rescue Timeout::Error 
    # Store the result of the call as failed? 
    Result.create(:element_count => 0) 
end 
send_data html, :disposition => 'inline', :type => 'text/html' 

당신이 달성하기 위해 할 수있는 몇 가지 다른 것들 : : 문자열로보기는 렌더링하는 동안 발생할 수있는 제한 시간을 잡는 작업의 결과를 기록하고, 문자열을 반환

  1. 실행해야하는 코드가 cron 작업에 의해서만 트리거되는 경우 컨트롤러 작업 대신 rake 작업을 사용할 수 있습니다.

  2. cron 작업에서 wget을 사용하여 직접 요청하는 대신 컨트롤러에 요청할 스크립트를 호출하고 요청 출력을 검사 한 다음 결과를 기록 할 수 있습니다 (어쩌면 새로운 컨트롤러의 동작).

관련 문제