Module: RocketJob::Plugins::Job::Model::ClassMethods

Defined in:
lib/rocket_job/plugins/job/model.rb

Instance Method Summary collapse

Instance Method Details

#collective_nameObject

Returns [String] the collective name for this job class

Example:

job = DataStudyJob.new
job.collective_name
# => "data_studies"


142
143
144
# File 'lib/rocket_job/plugins/job/model.rb', line 142

def collective_name
  @collective_name ||= name.sub(/Job$/, '').pluralize.underscore
end

#collective_name=(collective_name) ⇒ Object

Allow the collective name for this job class to be overridden



147
148
149
# File 'lib/rocket_job/plugins/job/model.rb', line 147

def collective_name=(collective_name)
  @collective_name = collective_name
end

#field(name, options) ⇒ Field

Defines all the fields that are accessible on the Document For each field that is defined, a getter and setter will be added as an instance method to the Document.

Examples:

Define a field.

field :score, :type => Integer, :default => 0

Parameters:

  • name (Symbol)

    The name of the field.

  • options (Hash)

    The options to pass to the field.

Options Hash (options):

  • :type (Class)

    The type of the field.

  • :label (String)

    The label for the field.

  • :default (Object, Proc)

    The field’s default

  • :class_attribute (Boolean)

    Keep the fields default in a class_attribute

  • :user_editable (Boolean)

    Field can be edited by end users in RJMC

Returns:

  • (Field)

    The generated field



179
180
181
182
183
184
185
186
187
188
189
190
191
192
# File 'lib/rocket_job/plugins/job/model.rb', line 179

def field(name, options)
  if options.delete(:user_editable) == true
    self.user_editable_fields += [name.to_sym] unless user_editable_fields.include?(name.to_sym)
  end
  if options.delete(:class_attribute) == true
    class_attribute(name, instance_accessor: false)
    public_send("#{name}=", options[:default]) if options.key?(:default)
    options[:default] = -> { self.class.public_send(name) }
  end
  if options.delete(:copy_on_restart) == true
    self.rocket_job_restart_attributes += [name.to_sym] unless rocket_job_restart_attributes.include?(name.to_sym)
  end
  super(name, options)
end

#human_nameObject

Returns [String] the human readable name for this job class

Example:

job = DataStudyJob.new
job.human_name
# => "Data Study"


127
128
129
# File 'lib/rocket_job/plugins/job/model.rb', line 127

def human_name
  @human_name ||= name.sub(/Job$/, '').titleize
end

#human_name=(human_name) ⇒ Object

Allow the human readable job name for this job class to be overridden



132
133
134
# File 'lib/rocket_job/plugins/job/model.rb', line 132

def human_name=(human_name)
  @human_name = human_name
end

#public_rocket_job_properties(*args) ⇒ Object

DEPRECATED



201
202
203
204
# File 'lib/rocket_job/plugins/job/model.rb', line 201

def public_rocket_job_properties(*args)
  warn "Replace calls to .public_rocket_job_properties by adding `user_editable: true` option to the field declaration in #{name} for: #{args.inspect}"
  self.user_editable_fields += args.collect(&:to_sym)
end

#queued_nowObject

Scope for queued jobs that can run now I.e. Queued jobs excluding scheduled jobs



158
159
160
# File 'lib/rocket_job/plugins/job/model.rb', line 158

def queued_now
  queued.or({run_at: nil}, :run_at.lte => Time.now)
end

#rocket_job {|_self| ... } ⇒ Object

DEPRECATED

Yields:

  • (_self)

Yield Parameters:



195
196
197
198
# File 'lib/rocket_job/plugins/job/model.rb', line 195

def rocket_job
  warn 'Replace calls to .rocket_job with calls to set class instance variables. For example: self.priority = 50'
  yield(self)
end

#scheduledObject

Scope for jobs scheduled to run in the future



152
153
154
# File 'lib/rocket_job/plugins/job/model.rb', line 152

def scheduled
  queued.where(:run_at.gt => Time.now)
end

#underscore_nameObject

Returns [String] the singular name for this job class

Example:

job = DataStudyJob.new
job.underscore_name
# => "data_study"


112
113
114
# File 'lib/rocket_job/plugins/job/model.rb', line 112

def underscore_name
  @underscore_name ||= name.sub(/Job$/, '').underscore
end

#underscore_name=(underscore_name) ⇒ Object

Allow the collective name for this job class to be overridden



117
118
119
# File 'lib/rocket_job/plugins/job/model.rb', line 117

def underscore_name=(underscore_name)
  @underscore_name = underscore_name
end