Module: Scheduler::Web

Defined in:
lib/scheduler/web.rb

Constant Summary collapse

VIEWS =
File.expand_path('views', File.dirname(__FILE__))

Class Method Summary collapse

Class Method Details

.registered(app) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/scheduler/web.rb', line 6

def self.registered(app)
  app.get "/scheduler" do
    Scheduler::Connection.with_connection("default") do
      @manager = Scheduler::Manager.without_runner
      @schedules = Scheduler::Manager.discover_schedules.sort do |a,b|
        a_next = a.schedule_info.next_run
        b_next = b.schedule_info.next_run
        if a_next && b_next
          a_next <=> b_next
        elsif a_next
          -1
        else
          1
        end
      end
      erb File.read(File.join(VIEWS, 'scheduler.erb')), locals: {view_path: VIEWS}
    end
  end

  app.post "/scheduler/:name/trigger" do
    halt 404 unless (name = params[:name])

    Scheduler::Connection.with_connection("default") do
      klass = name.constantize
      info = klass.schedule_info
      info.next_run = Time.now.to_f
      info.write!

      redirect "#{root_path}scheduler"
    end
  end

end