module Resque::StateServer

Resque Server plugin for Resque Status

Constants

PER_PAGE
VIEW_PATH

Public Class Methods

registered(app) click to toggle source
# File lib/resque/state_server.rb, line 10
def self.registered(app)
  app.get '/state' do
    @start = params[:start].to_i
    @end = @start + (params[:per_page] || per_page) - 1
    @statuses = Resque::Plugins::State::Hash.statuses(@start, @end)
    @size = Resque::Plugins::State::Hash.count
    status_view(:statuses)
  end

  app.get '/state/:id.js' do
    @status = Resque::Plugins::State::Hash.get(params[:id])
    content_type :js
    @status.json
  end

  app.get '/state/:id' do
    @status = Resque::Plugins::State::Hash.get(params[:id])
    status_view(:state)
  end

  app.post '/state/:id/kill' do
    Resque::Plugins::State::Hash.kill(params[:id])
    redirect u(:state)
  end

  app.post '/state/clear' do
    Resque::Plugins::State::Hash.clear
    redirect u(:state)
  end

  app.post '/state/clear/completed' do
    Resque::Plugins::State::Hash.clear_completed
    redirect u(:state)
  end

  app.post '/state/clear/failed' do
    Resque::Plugins::State::Hash.clear_failed
    redirect u(:state)
  end

  app.get '/state.poll' do
    content_type 'text/plain'
    @polling = true

    @start = params[:start].to_i
    @end = @start + (params[:per_page] || per_page) - 1
    @statuses = Resque::Plugins::State::Hash.statuses(@start, @end)
    @size = Resque::Plugins::State::Hash.count
    status_view(:statuses, layout: false)
  end

  app.helpers do
    def per_page
      PER_PAGE
    end

    def status_view(filename, options = {}, locals = {})
      erb(File.read(File.join(::Resque::StateServer::VIEW_PATH, "#{filename}.erb")), options, locals)
    end

    def status_poll(start)
      if @polling
        text = "Last Updated: #{Time.now.strftime('%H:%M:%S')}"
      else
        text = "<a href='#{u(request.path_info)}.poll?start=#{start}' rel='poll'>Live Poll</a>"
      end
      "<p class='poll'>#{text}</p>"
    end
  end

  app.tabs << 'State'
end

Public Instance Methods

per_page() click to toggle source
# File lib/resque/state_server.rb, line 62
def per_page
  PER_PAGE
end
status_poll(start) click to toggle source
# File lib/resque/state_server.rb, line 70
def status_poll(start)
  if @polling
    text = "Last Updated: #{Time.now.strftime('%H:%M:%S')}"
  else
    text = "<a href='#{u(request.path_info)}.poll?start=#{start}' rel='poll'>Live Poll</a>"
  end
  "<p class='poll'>#{text}</p>"
end
status_view(filename, options = {}, locals = {}) click to toggle source
# File lib/resque/state_server.rb, line 66
def status_view(filename, options = {}, locals = {})
  erb(File.read(File.join(::Resque::StateServer::VIEW_PATH, "#{filename}.erb")), options, locals)
end