Sha256: cb46f95553680771a680ad3105dc0e1720f8a1b9f9ad4f7bd264142b41e5963d

Contents?: true

Size: 1.04 KB

Versions: 9

Compression:

Stored size: 1.04 KB

Contents

require "alephant/broker/component_meta"
require "alephant/broker/errors/content_not_found"
require "alephant/broker/error_component"
require "alephant/logger"

module Alephant
  module Broker
    class ComponentFactory
      include Logger

      def initialize(load_strategy)
        @load_strategy = load_strategy
      end

      def create(id, batch_id, options)
        component_meta = ComponentMeta.new(id, batch_id, options)
        Component.new(
          component_meta,
          @load_strategy.load(component_meta)
        )
      rescue Alephant::Broker::Errors::ContentNotFound => e
        logger.warn "Broker.ComponentFactory.create: Exception raised (ContentNotFound) for #{component_meta.component_key}"
        logger.metric "ContentNotFound"
        ErrorComponent.new(component_meta, 404, e)
      rescue => e
        logger.warn "Broker.ComponentFactory.create: Exception raised (#{e.message}, #{e.backtrace.join('\n')})"
        logger.metric "ExceptionRaised"
        ErrorComponent.new(component_meta, 500, e)
      end
    end
  end
end

Version data entries

9 entries across 9 versions & 1 rubygems

Version Path
alephant-broker-3.18.0 lib/alephant/broker/component_factory.rb
alephant-broker-3.17.0 lib/alephant/broker/component_factory.rb
alephant-broker-3.16.2 lib/alephant/broker/component_factory.rb
alephant-broker-3.16.1 lib/alephant/broker/component_factory.rb
alephant-broker-3.16.0 lib/alephant/broker/component_factory.rb
alephant-broker-3.15.2 lib/alephant/broker/component_factory.rb
alephant-broker-3.15.1 lib/alephant/broker/component_factory.rb
alephant-broker-3.15.0 lib/alephant/broker/component_factory.rb
alephant-broker-3.14.0 lib/alephant/broker/component_factory.rb