Sha256: 5854b1b62a024db5cb728d0c8cca21ad1dea2310833b9328dfb3fd890dc2a439

Contents?: true

Size: 934 Bytes

Versions: 12

Compression:

Stored size: 934 Bytes

Contents

require_relative 'builder/enum'
require_relative 'builder/period'

module Torque
  module PostgreSQL
    module Attributes
      module Builder
        def self.include_on(klass, method_name, builder_klass, **extra, &block)
          klass.define_singleton_method(method_name) do |*args, **options|
            return unless connection.table_exists?(table_name)

            args.each do |attribute|
              begin
                # Generate methods on self class
                builder = builder_klass.new(self, attribute, extra.merge(options))
                builder.conflicting?
                builder.build

                # Additional settings for the builder
                instance_exec(builder, &block) if block.present?
              rescue Interrupt
                # Not able to build the attribute, maybe pending migrations
              end
            end
          end
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
torque-postgresql-1.1.8 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.7 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.0.3 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.0.2 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.6 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.5 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.0.1 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-2.0.0 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.4 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.3 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.2 lib/torque/postgresql/attributes/builder.rb
torque-postgresql-1.1.1 lib/torque/postgresql/attributes/builder.rb