Sha256: 7a0e6d88de4d55b8eca0d6f1054db6bcf3a56a6a55b80e26691774b2172f73b7

Contents?: true

Size: 1.57 KB

Versions: 7

Compression:

Stored size: 1.57 KB

Contents

require 'json'

# Job public methods get turned into Lambda functions.
#
# 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
  class Base < Jets::Lambda::Functions
    include Dsl

    # non-DSL methods
    include Helpers::KinesisEventHelper
    include Helpers::LogEventHelper
    include Helpers::S3EventHelper
    include Helpers::SnsEventHelper
    include Helpers::SqsEventHelper
    prepend Jets::ExceptionReporting::Process

    # Tracks bucket each time an s3_event is declared
    # Map of bucket_name => stack_name (nested part)
    cattr_accessor :s3_events # dont want this to be inheritable intentionally
    self.s3_events = {}

    class << self
      def process(event, context, meth)
        job = new(event, context, meth)
        job.send(meth)
      end

      def perform_now(meth, event={}, context={})
        process(event, context, meth)
      end

      def perform_later(meth, event={}, context={})
        if on_lambda?
          function_name = "#{self.to_s.underscore}-#{meth}"
          call = Jets::Commands::Call::Caller.new(function_name, JSON.dump(event), invocation_type: "Event")
          call.run
        else
          Jets.logger.info "INFO: Not on AWS Lambda. In local mode perform_later executes the job with perform_now instead."
          perform_now(meth, event, context)
        end
      end

    private
      def on_lambda?
        !!ENV['AWS_LAMBDA_FUNCTION_NAME']
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
jets-5.0.7 lib/jets/job/base.rb
jets-5.0.6 lib/jets/job/base.rb
jets-5.0.5 lib/jets/job/base.rb
jets-5.0.4 lib/jets/job/base.rb
jets-5.0.3 lib/jets/job/base.rb
jets-5.0.2 lib/jets/job/base.rb
jets-5.0.1 lib/jets/job/base.rb