Sha256: 2189ccbdfc6dd5ab3e579c6136eaa7ef42f93ae64eb837997243e1e83a8e5fe7

Contents?: true

Size: 592 Bytes

Versions: 4

Compression:

Stored size: 592 Bytes

Contents

# frozen_string_literal: true

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

4 entries across 4 versions & 1 rubygems

Version Path
peddler-1.6.7 lib/peddler/errors/builder.rb
peddler-1.6.6 lib/peddler/errors/builder.rb
peddler-1.6.5 lib/peddler/errors/builder.rb
peddler-1.6.4 lib/peddler/errors/builder.rb