Sha256: 419046e5eefb1b7960951bb18c0246f50c7ed4fb89f5cfe5efeeab6abdb36c53

Contents?: true

Size: 1.32 KB

Versions: 7

Compression:

Stored size: 1.32 KB

Contents

# frozen_string_literal: true

module Opera
  module Operation
    class Config
      DEVELOPMENT_MODE = :development
      PRODUCTION_MODE = :production

      attr_accessor :transaction_class, :transaction_method, :transaction_options, :reporter, :mode

      def initialize
        @transaction_class = self.class.transaction_class
        @transaction_method = self.class.transaction_method || :transaction
        @transaction_options = self.class.transaction_options
        @mode = self.class.mode || DEVELOPMENT_MODE
        @reporter = custom_reporter || self.class.reporter

        validate!
      end

      def configure
        yield self
      end

      def custom_reporter
        Rails.application.config.x.reporter.presence if defined?(Rails)
      end

      private

      def validate!
        unless [DEVELOPMENT_MODE, PRODUCTION_MODE].include?(mode)
          raise ArgumentError, 'Mode is incorrect. Can be either: development or production' 
        end
      end

      class << self
        attr_accessor :transaction_class, :transaction_method, :transaction_options, :reporter, :mode

        def configure
          yield self
        end

        def development_mode?
          mode == DEFAULT_MODE
        end

        def production_mode?
          mode == PRODUCTION_MODE
        end
      end
    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
opera-0.3.3 lib/opera/operation/config.rb
opera-0.3.2 lib/opera/operation/config.rb
opera-0.3.1 lib/opera/operation/config.rb
opera-0.3.0 lib/opera/operation/config.rb
opera-0.2.18 lib/opera/operation/config.rb
opera-0.2.17 lib/opera/operation/config.rb
opera-0.2.16 lib/opera/operation/config.rb