Rename to Crono

This commit is contained in:
Dzmitry Plashchynski
2015-03-03 13:51:40 +02:00
parent 6b185c44ac
commit 3652e9525a
18 changed files with 45 additions and 45 deletions
+23
View File
@@ -0,0 +1,23 @@
require 'crono'
module Crono
class CLI
include Singleton
def run
load_rails
print_banner
end
def print_banner
puts "Loading Crono #{Crono::VERSION}"
puts "Running in #{RUBY_DESCRIPTION}"
end
def load_rails
require 'rails'
require File.expand_path("config/environment.rb")
::Rails.application.eager_load!
end
end
end
+11
View File
@@ -0,0 +1,11 @@
module Crono
class Config
include Singleton
attr_accessor :schedule
def initialize
self.schedule = []
end
end
end
+15
View File
@@ -0,0 +1,15 @@
module Crono
class PerformerProxy
def initialize(performer)
@performer = performer
end
def every(period, *args)
Config.instance.schedule += [@performer, Period.new(period, *args)]
end
end
def self.perform(performer)
PerformerProxy.new(performer)
end
end
+24
View File
@@ -0,0 +1,24 @@
module Crono
class Period
def initialize(period, at: nil)
@period = period
@at_hour, @at_min = parse_at(at) if at
end
def next
@period.from_now.change({hour: @at_hour, min: @at_min}.compact)
end
def parse_at(at)
case at
when String
time = Time.parse(at)
return time.hour, time.min
when Hash
return at[:hour], at[:min]
else
raise "Unknown 'at' format"
end
end
end
end
+3
View File
@@ -0,0 +1,3 @@
module Crono
VERSION = "0.0.1"
end