Sha256: a74df4c0192686fe9dce442a608bba5b31fff28150c8ef3181e04c69ee030bfb

Contents?: true

Size: 1.84 KB

Versions: 21

Compression:

Stored size: 1.84 KB

Contents

# Jets::Job::Base < Jets::Lambda::Functions
# Both Jets::Job::Base and Jets::Lambda::Functions have Dsl modules included.
# So the Jets::Job::Dsl overrides some of the Jets::Lambda::Functions behavior.
module Jets::Job::Dsl
  extend ActiveSupport::Concern

  included do
    class << self
      def rate(expression)
        @rate = expression
      end

      def cron(expression)
        @cron = expression
      end

      # Explicitly disable scheduling for the function
      def disable(value)
        @disable = value
      end

      # This is a property of the AWS::Events::Rule not the Lambda function
      def state(value)
        @state = value
      end

      # Override register_task.
      # A Job::Task is a Lambda::Task with some added DSL methods like
      # rate and cron.
      def register_task(meth, lang=:ruby)
        if @rate || @cron || @disable
          # Job lambda function.
          all_tasks[meth] = Jets::Job::Task.new(self.name, meth,
            rate: @rate,
            cron: @cron,
            state: @state,
            properties: @properties,
            lang: lang)
          true
        else
          task_name = "#{name}##{meth}" # IE: HardJob#dig
          puts "[WARNING] #{task_name} created without a rate or cron expression. " \
            "Add a rate or cron expression above the method definition if you want this method to be scheduled. " \
            "If #{task_name} is not meant to be a scheduled lambda function, you can put the method under after a private keyword to get rid of this warning. " \
            "#{task_name} defined at #{caller[1].inspect}."
          false
        end
        # Done storing options, clear out for the next added method.
        clear_properties
      end

      def clear_properties
        super
        @rate, @cron, @state, @disable = nil, nil, nil, nil
      end
    end
  end
end

Version data entries

21 entries across 21 versions & 1 rubygems

Version Path
jets-0.7.1 lib/jets/job/dsl.rb
jets-0.7.0 lib/jets/job/dsl.rb
jets-0.6.9 lib/jets/job/dsl.rb
jets-0.6.8 lib/jets/job/dsl.rb
jets-0.6.7 lib/jets/job/dsl.rb
jets-0.6.6 lib/jets/job/dsl.rb
jets-0.6.5 lib/jets/job/dsl.rb
jets-0.6.4 lib/jets/job/dsl.rb
jets-0.6.3 lib/jets/job/dsl.rb
jets-0.6.2 lib/jets/job/dsl.rb
jets-0.6.1 lib/jets/job/dsl.rb
jets-0.6.0 lib/jets/job/dsl.rb
jets-0.5.8 lib/jets/job/dsl.rb
jets-0.5.7 lib/jets/job/dsl.rb
jets-0.5.6 lib/jets/job/dsl.rb
jets-0.5.5 lib/jets/job/dsl.rb
jets-0.5.4 lib/jets/job/dsl.rb
jets-0.5.3 lib/jets/job/dsl.rb
jets-0.5.2 lib/jets/job/dsl.rb
jets-0.5.1 lib/jets/job/dsl.rb