Sha256: c97ae3f4e90858ab9f98d64e2688ed4f711762e0824ed05ba894e77e5153d6ac

Contents?: true

Size: 721 Bytes

Versions: 34

Compression:

Stored size: 721 Bytes

Contents

module Agilibox::SetupJobConcern
  extend ActiveSupport::Concern

  def perform(*args)
    setup(*args)
    call
  end

  def call
    raise NotImplementedError
  end

  class_methods do
    def setup_with(*attrs)
      attr_reader(*attrs)

      define_method(:setup) do |*args|
        if attrs.length != args.length
          message = "wrong number of arguments (given #{args.length}, expected #{attrs.length})"
          raise ArgumentError, message
        end

        attrs.length.times do |i|
          instance_variable_set("@#{attrs[i]}", args[i])
        end
      end
    end

    private :setup_with

    def setup(*args)
      new.tap { |instance| instance.setup(*args) }
    end
  end # class_methods
end

Version data entries

34 entries across 34 versions & 1 rubygems

Version Path
agilibox-1.9.6 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.9.5 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.9.4 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.9.3 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.9.1 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.9.0 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.8.0 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.7.4 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.7.3 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.7.2 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.7.1 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.7.0 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.6.2 app/jobs/concerns/agilibox/setup_job_concern.rb
agilibox-1.6.1 app/jobs/concerns/agilibox/setup_job_concern.rb