0

我设置了以下代码,它将成功列出为 Delayed_Job 运行的不同服务 pid。但是,我正在寻找一种可以在我的视图中调用这些操作的方法。第一个是检查不同 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 回答