module Delayer
Constants
- VERSION
Attributes
default[RW]
priority[R]
Public Class Methods
StateError(state)
click to toggle source
# File lib/delayer/error.rb, line 15 def self.StateError(state) case state when :run AlreadyRunningError when :done AlreadyExecutedError when :cancel AlreadyCanceledError else TooLate end end
generate_class(options = {})
click to toggle source
Generate new Delayer
class.
Args¶ ↑
- options
-
Hash
- expire
-
processing expire (secs, 0=unlimited)
- priority
-
priorities
- default
-
default priotity
Return¶ ↑
A new class
# File lib/delayer.rb, line 21 def generate_class(options = {}) Class.new do include ::Delayer @expire = options[:expire] || 0 if options.has_key?(:priority) @priorities = options[:priority].to_a.freeze @default_priority = options[:default] else @priorities = [:normal] @default_priority = :normal end end end
included(klass)
click to toggle source
# File lib/delayer/extend.rb, line 28 def self.included(klass) klass.class_eval do extend Extend end end
method_missing(fn, *args, **kwrest, &proc)
click to toggle source
# File lib/delayer.rb, line 35 def method_missing(fn, *args, **kwrest, &proc) if kwrest.empty? (@default ||= generate_class).__send__(fn, *args, &proc) else (@default ||= generate_class).__send__(fn, *args, **kwrest, &proc) end end
new(priority = self.class.instance_eval { @default_priority }, *_args, delay: 0, &proc)
click to toggle source
# File lib/delayer/extend.rb, line 34 def initialize(priority = self.class.instance_eval { @default_priority }, *_args, delay: 0, &proc) self.class.validate_priority priority @priority = priority if delay == 0 @procedure = Procedure.new(self, &proc) else @procedure = DelayedProcedure.new(self, delay: delay, &proc) end end
Public Instance Methods
cancel()
click to toggle source
Cancel this job
Exception¶ ↑
Delayer::AlreadyExecutedError
-
if already called run()
Return¶ ↑
self
# File lib/delayer/extend.rb, line 49 def cancel @procedure.cancel self end