mirror of
https://github.com/plashchynski/crono.git
synced 2026-03-27 03:41:38 +01:00
Refactor to remove global variables
This commit is contained in:
@@ -2,11 +2,24 @@ require 'crono'
|
||||
require 'optparse'
|
||||
|
||||
module Crono
|
||||
mattr_accessor :schedule
|
||||
|
||||
class CLI
|
||||
include Singleton
|
||||
attr_accessor :config
|
||||
attr_accessor :schedule
|
||||
attr_accessor :logger
|
||||
|
||||
def run
|
||||
self.config = Config.new
|
||||
self.schedule = Schedule.new
|
||||
Crono.schedule = schedule
|
||||
|
||||
parse_options(ARGV)
|
||||
|
||||
logfile = config.daemonize ? config.logfile : STDOUT
|
||||
self.logger = Logger.new(logfile)
|
||||
|
||||
load_rails
|
||||
print_banner
|
||||
start_working_loop
|
||||
@@ -22,7 +35,7 @@ module Crono
|
||||
require 'rails'
|
||||
require File.expand_path("config/environment.rb")
|
||||
::Rails.application.eager_load!
|
||||
require File.expand_path(Crono.config.cronotab)
|
||||
require File.expand_path(config.cronotab)
|
||||
end
|
||||
|
||||
def run_job(klass)
|
||||
@@ -32,7 +45,7 @@ module Crono
|
||||
|
||||
def start_working_loop
|
||||
loop do
|
||||
klass, time = config.schedule.next
|
||||
klass, time = schedule.next
|
||||
sleep(time - Time.now)
|
||||
run_job(klass)
|
||||
end
|
||||
@@ -42,16 +55,16 @@ module Crono
|
||||
OptionParser.new do |opts|
|
||||
opts.banner = "Usage: crono [options]"
|
||||
|
||||
opts.on("-C", "--cronotab PATH", "Path to cronotab file (Default: #{Crono.config.cronotab})") do |cronotab|
|
||||
Crono.config.cronotab = cronotab
|
||||
opts.on("-C", "--cronotab PATH", "Path to cronotab file (Default: #{config.cronotab})") do |cronotab|
|
||||
config.cronotab = cronotab
|
||||
end
|
||||
|
||||
opts.on("-L", "--logfile PATH", "Path to writable logfile (Default: #{Crono.config.logfile})") do |logfile|
|
||||
Crono.config.logfile = logfile
|
||||
opts.on("-L", "--logfile PATH", "Path to writable logfile (Default: #{config.logfile})") do |logfile|
|
||||
config.logfile = logfile
|
||||
end
|
||||
|
||||
opts.on("-d", "--[no-]daemonize", "Daemonize process (Default: #{Crono.config.daemonize})") do |daemonize|
|
||||
Crono.config.daemonize = daemonize
|
||||
opts.on("-d", "--[no-]daemonize", "Daemonize process (Default: #{config.daemonize})") do |daemonize|
|
||||
config.daemonize = daemonize
|
||||
end
|
||||
|
||||
end.parse!(argv)
|
||||
|
||||
Reference in New Issue
Block a user