Class: DayPlanner::Task
- Inherits:
-
ActiveRecord::Base
- Object
- ActiveRecord::Base
- DayPlanner::Task
- Defined in:
- app/models/day_planner/task.rb
Class Method Summary collapse
Instance Method Summary collapse
Methods inherited from ActiveRecord::Base
Class Method Details
.schedule(options) ⇒ Object
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'app/models/day_planner/task.rb', line 7 def self.schedule() unless [:every] raise ArgumentError, "Must specify task interval with :every, other scheduling methods are not yet implemented" end if [:every].to_i < DayPlanner.interval.to_i raise ArgumentError, "Must specify a task interval at least as long as DayPlanner's check interval." end fields = {} fields[:name] = .delete(:name).to_s if [:name] fields[:interval] = .delete(:every).to_i if [:every] task = DayPlanner::Task.create(fields) end |
Instance Method Details
#block ⇒ Object
50 51 52 |
# File 'app/models/day_planner/task.rb', line 50 def block @block end |
#block=(block) ⇒ Object
54 55 56 |
# File 'app/models/day_planner/task.rb', line 54 def block=(block) @block = block end |
#check_name ⇒ Object
41 42 43 44 45 46 47 48 |
# File 'app/models/day_planner/task.rb', line 41 def check_name if name.present? tasks = Task.where(name: name) if tasks.count > 1 || (tasks.count == 1 && tasks.first.id != id) errors.add(:name, "must be unique if specified") end end end |
#log(last, now) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'app/models/day_planner/task.rb', line 23 def log(last, now) if ActiveRecord::Base.connection.table_exists?('day_planner_log') if !last.nil? deviation = -(last + interval - now) else deviation = 0 end last_execution = DayPlanner::Log.where(name: self.name).last if !last_execution.nil? cumulative_deviation = last_execution.cumulative_deviation || 0 else cumulative_deviation = 0 end cumulative_deviation += deviation DayPlanner::Log.create(name: name, interval: interval, datetime: now, deviation: deviation, cumulative_deviation: cumulative_deviation) end end |