Class: AutomateEm::ScheduleProxy
- Inherits:
-
Object
- Object
- AutomateEm::ScheduleProxy
- Defined in:
- lib/automate-em/utilities.rb
Instance Method Summary collapse
- #clear_jobs ⇒ Object
-
#initialize ⇒ ScheduleProxy
constructor
A new instance of ScheduleProxy.
Constructor Details
#initialize ⇒ ScheduleProxy
Returns a new instance of ScheduleProxy.
51 52 53 54 55 |
# File 'lib/automate-em/utilities.rb', line 51 def initialize @jobs = {} @index = 0 @job_lock = Mutex.new end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(name, *args, &block) ⇒ Object (protected)
70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/automate-em/utilities.rb', line 70 def method_missing(name, *args, &block) @job_lock.synchronize do if block.present? job = nil if [:in, :at].include?(name) index = @index # local variable for the block job = AutomateEm::scheduler.send(name, *args) do begin block.call rescue => e AutomateEm.print_error(System.logger, e, :message => "Error in one off scheduled event") ensure @job_lock.synchronize do @jobs.delete(index) end end end else job = AutomateEm::scheduler.send(name, *args) do begin block.call rescue => e AutomateEm.print_error(System.logger, e, :message => "Error in repeated scheduled event") end end end if job.present? @jobs[@index] = job job = JobProxy.new(@jobs, @index, @job_lock) @index += 1 return job end return nil else AutomateEm::scheduler.send(name, *args, &block) end end end |
Instance Method Details
#clear_jobs ⇒ Object
57 58 59 60 61 62 63 64 65 66 |
# File 'lib/automate-em/utilities.rb', line 57 def clear_jobs @job_lock.synchronize do @jobs.each_value do |job| job.unschedule end @jobs = {} @index = 0 end end |