2013-02-02 3 views
0

Delayed_Job에 대해 실행중인 다른 서비스 ID를 성공적으로 나열하는 다음 코드를 설정했습니다. 그러나, 나는 내 견해 내에서 이러한 행동을 부를 수있는 방법을 찾고있다. 첫 번째는 다른 pid 파일을 검사하는 함수이며, 존재한다면 true 또는 false를 반환합니다.Rails보기에서 명령 줄 서비스 시작 및 중지

내보기에는 사용자가 링크를 클릭 할 때 호출되는 함수에 대한 링크가 있습니다.

그러나 문제는이 페이지를 새로 고칠 때마다 메소드를 실행하고 서비스를 자동으로 시작/중지한다는 것입니다.

보기

<% if delayed_job_service_running? %> 
    <em><b>Service Running</b></em> - 
    <%= link_to "Stop Service", delayed_job_stop %> 
    <% else %> 
    <em><b>Service Stopped</b></em> - 
    <%= link_to "Start Service", delayed_job_start %> 
    <% end %> 

도우미 파일

def delayed_job_service_running? 
    files = Dir.glob("#{Rails.root}/pids/**/delayed_job*") 
    pids = [] 
    files.each do |file| 
     pids << `tail #{file}` 
    end 
    pids.empty? ? false : true 
end 

def delayed_job_start 
    `script/delayed_job -n 2 start` 
end 

def delayed_job_stop 
    `script/delayed_job stop` 
end 

답변

0

내가 그것을 알아 냈다. 오히려 간단합니다. 트릭은 URL을 통해 콜백 액션을 만드는 것입니다.

보기

link_to "stop service", "/admin/service/delayed_job_stop"

노선

match "admin/service/:string" => "pages#toggle_service", :as => "toggle_service"

제어기

def toggle_service 
    command = params[:string].to_s 
    if command == 'delayed_job_stop' 
     `script/delayed_job stop` 
    elsif command == 'delayed_job_start' 
     `script/delayed_job -n 2 start` 
    end  
    redirect_to :back 
    end 
,745,