Class: DelayedJobMonitor::App

Inherits:
Sinatra::Base
  • Object
show all
Defined in:
lib/delayed_job_monitor/application/app.rb

Instance Method Summary collapse

Instance Method Details

#current_pageObject

SINTRA APP ################################



28
29
30
# File 'lib/delayed_job_monitor/application/app.rb', line 28

def current_page
  url_path request.path_info.sub('/','')
end

#delayed_jobObject



16
17
18
19
20
21
22
23
24
25
# File 'lib/delayed_job_monitor/application/app.rb', line 16

def delayed_job
  begin
    if DelayedJobMonitor.connected?
      DelayedJobMonitor::Job
    else
      nil
    end
  rescue
  end
end

#delayed_job_sql(type) ⇒ Object



53
54
55
56
57
58
59
60
61
62
63
64
# File 'lib/delayed_job_monitor/application/app.rb', line 53

def delayed_job_sql(type)
  case type
  when :enqueued
    ''
  when :working
    'locked_at is not null'
  when :failed
    'last_error is not null'
  when :pending
    'attempts = 0'
  end
end

#delayed_jobs(type) ⇒ Object



49
50
51
# File 'lib/delayed_job_monitor/application/app.rb', line 49

def delayed_jobs(type)
  delayed_job.where(delayed_job_sql(type))
end

#partial(template, local_vars = {}) ⇒ Object



66
67
68
69
70
71
# File 'lib/delayed_job_monitor/application/app.rb', line 66

def partial(template, local_vars = {})
  @partial = true
  haml(template.to_sym, {:layout => false}, local_vars)
ensure
  @partial = false
end

#path_prefixObject



45
46
47
# File 'lib/delayed_job_monitor/application/app.rb', line 45

def path_prefix
  request.env['SCRIPT_NAME']
end

#per_pageObject



36
37
38
# File 'lib/delayed_job_monitor/application/app.rb', line 36

def per_page
  25
end

#pollObject



73
74
75
76
77
78
79
80
# File 'lib/delayed_job_monitor/application/app.rb', line 73

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

#show_for_polling(page) ⇒ Object



82
83
84
85
86
87
88
# File 'lib/delayed_job_monitor/application/app.rb', line 82

def show_for_polling(page)
  content_type "text/html"
  @polling = true
  # show(page.to_sym, false).gsub(/\s{1,}/, ' ')
  @jobs = delayed_jobs(page.to_sym)
  haml(page.to_sym, {:layout => false})
end

#startObject



32
33
34
# File 'lib/delayed_job_monitor/application/app.rb', line 32

def start
  params[:start].to_i
end

#tabsObject

SINATRA ROUTES/ACTIONS ##########################



91
92
93
94
95
96
97
98
99
100
101
# File 'lib/delayed_job_monitor/application/app.rb', line 91

def tabs
  [
    {:name => 'Overview', :path => '/overview'},
    {:name => 'Enqueued', :path => '/enqueued'},
    {:name => 'Working', :path => '/working'},
    {:name => 'Pending', :path => '/pending'},
    {:name => 'Failed', :path => '/failed'}
    # {:name => 'Servers', :path => '/servers'},
    # {:name => 'Workers', :path => '/workers'}
  ]
end

#url_path(*path_parts) ⇒ Object Also known as: u



40
41
42
# File 'lib/delayed_job_monitor/application/app.rb', line 40

def url_path(*path_parts)
  [ path_prefix, path_parts ].join("/").squeeze('/')
end