module RocketJob::Plugins::Job::Model::ClassMethods
Public Instance Methods
Returns [String] the collective name for this job class
Example:
job = DataStudyJob.new job.collective_name # => "data_studies"
# File lib/rocket_job/plugins/job/model.rb, line 136 def collective_name @collective_name ||= name.sub(/Job$/, "").pluralize.underscore end
Allow the collective name for this job class to be overridden
# File lib/rocket_job/plugins/job/model.rb, line 141 def collective_name=(collective_name) @collective_name = collective_name end
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
.
@example Define a field.
field :score, :type => Integer, :default => 0
@param [ Symbol ] name The name of the field. @param [ Hash ] options The options to pass to the field.
@option options [ Class ] :type The type of the field. @option options [ String ] :label The label for the field. @option options [ Object, Proc ] :default The field’s default @option options [ Boolean ] :class_attribute Keep the fields default in a class_attribute @option options [ Boolean ] :user_editable Field can be edited by end users in RJMC
@return [ Field ] The generated field
# File lib/rocket_job/plugins/job/model.rb, line 173 def field(name, options) if (options.delete(:user_editable) == true) && !user_editable_fields.include?(name.to_sym) self.user_editable_fields += [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) && !rocket_job_restart_attributes.include?(name.to_sym) self.rocket_job_restart_attributes += [name.to_sym] end super(name, options) end
Builds this job instance from the supplied properties hash. Overridden by batch to support child objects.
# File lib/rocket_job/plugins/job/model.rb, line 193 def from_properties(properties) new(properties) end
Returns [String] the human readable name for this job class
Example:
job = DataStudyJob.new job.human_name # => "Data Study"
# File lib/rocket_job/plugins/job/model.rb, line 121 def human_name @human_name ||= name.sub(/Job$/, "").titleize end
Allow the human readable job name for this job class to be overridden
# File lib/rocket_job/plugins/job/model.rb, line 126 def human_name=(human_name) @human_name = human_name end
Scope for queued jobs that can run now I.e. Queued jobs excluding scheduled jobs
# File lib/rocket_job/plugins/job/model.rb, line 152 def queued_now queued.and(RocketJob::Job.where(run_at: nil).or(:run_at.lte => Time.now)) end
Scope for jobs scheduled to run in the future
# File lib/rocket_job/plugins/job/model.rb, line 146 def scheduled queued.where(:run_at.gt => Time.now) end
Returns [String] the singular name for this job class
Example:
job = DataStudyJob.new job.underscore_name # => "data_study"
# File lib/rocket_job/plugins/job/model.rb, line 106 def underscore_name @underscore_name ||= name.sub(/Job$/, "").underscore end
Allow the collective name for this job class to be overridden
# File lib/rocket_job/plugins/job/model.rb, line 111 def underscore_name=(underscore_name) @underscore_name = underscore_name end