Module: SimpleJob::JobDefinition

Defined in:
lib/simple_job/job_definition.rb

Defined Under Namespace

Modules: ClassMethods Classes: JobLoggerWrapper

Constant Summary collapse

RESERVED_ATTRIBUTES =
[ :type, :version, :data ]

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.included(klass) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# File 'lib/simple_job/job_definition.rb', line 10

def self.included(klass)

  klass.extend(ClassMethods)

  klass.class_eval do
    include ::ActiveModel::Naming
    include ::ActiveModel::Conversion
    include ::ActiveModel::Validations
    include ::ActiveModel::Validations::Callbacks
    include ::ActiveModel::Serializers::JSON
  end

  klass.include_root_in_json = false
  klass.register_simple_job

end

.job_definition_class_for(type, version) ⇒ Object Also known as: class_for



29
30
31
32
33
34
35
36
37
38
39
# File 'lib/simple_job/job_definition.rb', line 29

def job_definition_class_for(type, version)
  type = type.to_s.underscore.to_sym
  version = version.to_s

  @job_definitions.each do |definition|
    if (definition[:type] == type) && (definition[:versions].include?(version))
      return definition[:class]
    end
  end
  nil
end

.job_definitionsObject



43
44
45
# File 'lib/simple_job/job_definition.rb', line 43

def job_definitions
  @job_definitions ||= []
end

Instance Method Details

#attributesObject



55
56
57
58
59
60
61
# File 'lib/simple_job/job_definition.rb', line 55

def attributes
  {
    'type' => type,
    'version' => version,
    'data' => data,
  }
end

#attributes=(attributes) ⇒ Object



63
64
65
66
67
# File 'lib/simple_job/job_definition.rb', line 63

def attributes=(attributes)
  attributes.each do |key, value|
    send("#{key}=", value)
  end
end

#dataObject



69
70
71
72
73
74
75
# File 'lib/simple_job/job_definition.rb', line 69

def data
  @data ||= {}
  self.class.simple_job_attributes.each do |attribute|
    @data[attribute.to_s] ||= nil
  end
  @data
end

#data=(data) ⇒ Object



77
78
79
# File 'lib/simple_job/job_definition.rb', line 77

def data=(data)
  self.attributes = data
end

#enqueue(queue_type = nil, options = {}) ⇒ Object



107
108
109
110
111
112
113
114
# File 'lib/simple_job/job_definition.rb', line 107

def enqueue(queue_type = nil, options = {})
  if valid?
    queue = (queue_type && JobQueue[queue_type]) || self.class.job_queue || JobQueue.default
    queue.enqueue(self.to_json, options)
  else
    false
  end
end

#enqueue!(queue_type = nil) ⇒ Object



116
117
118
# File 'lib/simple_job/job_definition.rb', line 116

def enqueue!(queue_type = nil)
  enqueue(queue_type) || raise("object is not valid: #{errors.full_messages.join('; ')}")
end

#executeObject



51
52
# File 'lib/simple_job/job_definition.rb', line 51

def execute
end

#initialize(attributes = {}) ⇒ Object



128
129
130
131
132
# File 'lib/simple_job/job_definition.rb', line 128

def initialize(attributes = {})
  attributes.each do |key, value|
    send("#{key}=", value)
  end
end

#loggerObject



134
135
136
# File 'lib/simple_job/job_definition.rb', line 134

def logger
  self.class.logger
end

#persisted?Boolean

for activemodel so form_for will work

Returns:

  • (Boolean)


139
140
141
# File 'lib/simple_job/job_definition.rb', line 139

def persisted?
  false
end

#read_simple_job_attribute(attribute) ⇒ Object



120
121
122
# File 'lib/simple_job/job_definition.rb', line 120

def read_simple_job_attribute(attribute)
  data[attribute.to_s]
end

#typeObject



81
82
83
# File 'lib/simple_job/job_definition.rb', line 81

def type
  self.class.definition[:type]
end

#type=(type) ⇒ Object



85
86
87
88
89
90
# File 'lib/simple_job/job_definition.rb', line 85

def type=(type)
  #if type.to_sym != self.type
  #  raise "tried to deserialize object with type #{type}, but this object only " +
  #    "supports type: #{self.type}"
  #end
end

#versionObject



96
97
98
# File 'lib/simple_job/job_definition.rb', line 96

def version
  versions.first
end

#version=(version) ⇒ Object



100
101
102
103
104
105
# File 'lib/simple_job/job_definition.rb', line 100

def version=(version)
  #if !versions.include?(version.to_s)
  #  raise "tried to deserialize object with version #{version}, but this object " +
  #    "only supports versions: #{versions.join(", ")}"
  #end
end

#versionsObject



92
93
94
# File 'lib/simple_job/job_definition.rb', line 92

def versions
  self.class.definition[:versions]
end

#write_simple_job_attribute(attribute, value) ⇒ Object



124
125
126
# File 'lib/simple_job/job_definition.rb', line 124

def write_simple_job_attribute(attribute, value)
  data[attribute.to_s] = value
end