Sha256: 544b9cf448e21e704c775105ce0be8799c0c1dd4bbfe4877e1439b4869189d39

Contents?: true

Size: 561 Bytes

Versions: 6

Compression:

Stored size: 561 Bytes

Contents

require 'singleton'
require 'peddler/errors/error'

module Peddler
  module Errors
    # @api private
    class Builder
      include Singleton

      def self.build(name)
        instance.build(name)
      end

      def initialize
        @mutex = Mutex.new
      end

      def build(name)
        with_mutex do
          return Errors.const_get(name) if Errors.const_defined?(name)
          Errors.const_set(name, Class.new(Error))
        end
      end

      private

      def with_mutex
        @mutex.synchronize { yield }
      end
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
peddler-1.6.3 lib/peddler/errors/builder.rb
peddler-1.6.2 lib/peddler/errors/builder.rb
peddler-1.6.1 lib/peddler/errors/builder.rb
peddler-1.6.0 lib/peddler/errors/builder.rb
peddler-1.5.0 lib/peddler/errors/builder.rb
peddler-1.4.1 lib/peddler/errors/builder.rb