module MiniScheduler::Web
Constants
- VIEWS
Public Class Methods
find_schedules_by_time()
click to toggle source
# File lib/mini_scheduler/web.rb, line 7 def self.find_schedules_by_time 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 end
registered(app)
click to toggle source
# File lib/mini_scheduler/web.rb, line 21 def self.registered(app) app.helpers do def sane_time(time) return unless time time end def sane_duration(duration) return unless duration if duration < 1000 "#{duration}ms" else "#{'%.2f' % (duration / 1000.0)} secs" end end end app.get "/scheduler" do MiniScheduler.before_sidekiq_web_request&.call @schedules = Web.find_schedules_by_time erb File.read(File.join(VIEWS, 'scheduler.erb')), locals: { view_path: VIEWS } end app.get "/scheduler/history" do MiniScheduler.before_sidekiq_web_request&.call @schedules = Manager.discover_schedules @schedules.sort_by!(&:to_s) @scheduler_stats = Stat.order('started_at desc') @filter = params[:filter] names = @schedules.map(&:to_s) @filter = nil if !names.include?(@filter) if @filter @scheduler_stats = @scheduler_stats.where(name: @filter) end @scheduler_stats = @scheduler_stats.limit(200) erb File.read(File.join(VIEWS, 'history.erb')), locals: { view_path: VIEWS } end app.post "/scheduler/:name/trigger" do halt 404 unless (name = params[:name]) MiniScheduler.before_sidekiq_web_request&.call klass = name.constantize info = klass.schedule_info info.next_run = Time.now.to_i info.write! redirect "#{root_path}scheduler" end end
Public Instance Methods
sane_duration(duration)
click to toggle source
# File lib/mini_scheduler/web.rb, line 29 def sane_duration(duration) return unless duration if duration < 1000 "#{duration}ms" else "#{'%.2f' % (duration / 1000.0)} secs" end end
sane_time(time)
click to toggle source
# File lib/mini_scheduler/web.rb, line 24 def sane_time(time) return unless time time end