【问题标题】:Starting and Stopping command line service within Rails view在 Rails 视图中启动和停止命令行服务
【发布时间】:2013-02-02 02:18:12
【问题描述】:

我设置了以下代码,它将成功列出为 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

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 shell methods autorun


    【解决方案1】:

    我想通了。相当简单。诀窍是通过 url 使其成为回调操作。

    查看

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

    路线

    match "admin/service/:string" =&gt; "pages#toggle_service", :as =&gt; "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
    

    【讨论】:

      猜你喜欢
      • 2021-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-13
      • 1970-01-01
      相关资源
      最近更新 更多