Module: Cosmo::Job::ClassMethods

Defined in:
lib/cosmo/job.rb

Instance Method Summary collapse

Instance Method Details

#default_optionsObject



46
47
48
# File 'lib/cosmo/job.rb', line 46

def default_options
  @default_options ||= (superclass.respond_to?(:default_options) ? superclass.default_options : Data::DEFAULTS).dup
end

#options(stream: nil, retry: nil, dead: nil) ⇒ Object



13
14
15
# File 'lib/cosmo/job.rb', line 13

def options(stream: nil, retry: nil, dead: nil)
  default_options.merge!({ stream:, retry:, dead: }.compact)
end

#perform(*args, async: true, **options) ⇒ Object



17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/cosmo/job.rb', line 17

def perform(*args, async: true, **options)
  data = Data.new(name, args, default_options.merge(options))
  unless async
    payload = Utils::Json.parse(data.to_args[1])
    raise ArgumentError, "Cannot parse payload" unless payload

    new.perform(*payload[:args])
    return
  end

  Publisher.publish_job(data)
end

#perform_async(*args) ⇒ Object



30
31
32
# File 'lib/cosmo/job.rb', line 30

def perform_async(*args)
  perform(*args)
end

#perform_at(timestamp, *args) ⇒ Object



34
35
36
# File 'lib/cosmo/job.rb', line 34

def perform_at(timestamp, *args)
  perform(*args, at: timestamp)
end

#perform_in(interval, *args) ⇒ Object



38
39
40
# File 'lib/cosmo/job.rb', line 38

def perform_in(interval, *args)
  perform(*args, in: interval)
end

#perform_sync(*args) ⇒ Object



42
43
44
# File 'lib/cosmo/job.rb', line 42

def perform_sync(*args)
  perform(*args, async: false)
end