Use Rails plugin generator and adapt

This commit is contained in:
Chris Seelus
2021-02-10 22:10:43 +01:00
parent 9b9193e1c8
commit d53520bbf0
22 changed files with 385 additions and 106 deletions

View File

@@ -2,8 +2,10 @@
module Crono
end
require 'rails'
require 'active_support/all'
require 'crono/version'
require 'crono/engine'
require 'crono/logging'
require 'crono/period'
require 'crono/time_of_day'
@@ -15,5 +17,3 @@ require 'crono/performer_proxy'
require 'crono/cronotab'
require 'crono/orm/active_record/crono_job'
require 'crono/railtie' if defined?(Rails)
Crono.autoload :Web, 'crono/web'

9
lib/crono/engine.rb Normal file
View File

@@ -0,0 +1,9 @@
module Crono
class Engine < ::Rails::Engine
isolate_namespace Crono
initializer 'crono.assets.precompile' do |app|
app.config.assets.precompile += %w( crono/application.css crono/materialize.min.css )
end
end
end

View File

@@ -76,7 +76,7 @@ module Crono
end
def perform_job
performer.new.perform *JSON.parse(job_args)
performer.new.perform JSON.parse(job_args)
rescue StandardError => e
handle_job_fail(e)
else

View File

@@ -3,6 +3,7 @@ require 'active_record'
module Crono
# Crono::CronoJob is a ActiveRecord model to store job state
class CronoJob < ActiveRecord::Base
self.table_name = 'crono_jobs'
validates :job_id, presence: true, uniqueness: true
def self.outdated

View File

@@ -7,8 +7,8 @@ module Crono
@job_args = job_args
end
def every(period, *args)
@job = Job.new(@performer, Period.new(period, *args), @job_args, @options)
def every(period, **options)
@job = Job.new(@performer, Period.new(period, **options), @job_args, @options)
@scheduler.add_job(@job)
self
end

View File

@@ -1,22 +0,0 @@
require 'haml'
require 'sinatra/base'
require 'crono'
module Crono
# Web is a Web UI Sinatra app
class Web < Sinatra::Base
set :root, File.expand_path(File.dirname(__FILE__) + '/../../web')
set :public_folder, proc { "#{root}/assets" }
set :views, proc { "#{root}/views" }
get '/' do
@jobs = Crono::CronoJob.all
haml :dashboard, format: :html5
end
get '/job/:id' do
@job = Crono::CronoJob.find(params[:id])
haml :job
end
end
end