0

Delayed_Job で実行されているさまざまなサービス pid を正常に一覧表示する次のコードをセットアップしました。ただし、ビュー内でこれらのアクションを呼び出す方法を探しています。1 つ目は、さまざまな pid ファイルをチェックする関数で、存在する場合は true または false を返します。

私の見解では、ユーザーがリンクをクリックしたときに呼び出される関数へのリンクがあります。

ただし、問題は、このページを更新するたびにメソッドが実行され、サービスが自動的に開始/停止されることです。

見る

  <% 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
4

1 に答える 1

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
于 2013-02-02T02:32:02.040 に答える