Sha256: ba4f17551cf4c98d9e5ee3e34f9c39debfdfa6afb042fc0a3b5b8e1927f918fa

Contents?: true

Size: 522 Bytes

Versions: 67

Compression:

Stored size: 522 Bytes

Contents

module Agilibox::InitializeWith
  extend ActiveSupport::Concern

  class_methods do
    def initialize_with(*attrs)
      attr_reader(*attrs)

      define_method(:initialize) do |*args|
        if attrs.length != args.length
          message = "wrong number of arguments (given #{args.length}, expected #{attrs.length})"
          raise ArgumentError, message
        end

        attrs.length.times do |i|
          instance_variable_set("@#{attrs[i]}", args[i])
        end
      end
    end
  end # class_methods
end

Version data entries

67 entries across 67 versions & 1 rubygems

Version Path
agilibox-2.0.0 app/libs/agilibox/initialize_with.rb
agilibox-1.11.0 app/libs/agilibox/initialize_with.rb
agilibox-1.10.5 app/libs/agilibox/initialize_with.rb
agilibox-1.10.2 app/libs/agilibox/initialize_with.rb
agilibox-1.10.1 app/libs/agilibox/initialize_with.rb
agilibox-1.10.0 app/libs/agilibox/initialize_with.rb
agilibox-1.9.20 app/libs/agilibox/initialize_with.rb
agilibox-1.9.19 app/libs/agilibox/initialize_with.rb
agilibox-1.9.18 app/libs/agilibox/initialize_with.rb
agilibox-1.9.17 app/libs/agilibox/initialize_with.rb
agilibox-1.9.16 app/libs/agilibox/initialize_with.rb
agilibox-1.9.15 app/libs/agilibox/initialize_with.rb
agilibox-1.9.14 app/libs/agilibox/initialize_with.rb
agilibox-1.9.13 app/libs/agilibox/initialize_with.rb
agilibox-1.9.12 app/libs/agilibox/initialize_with.rb
agilibox-1.9.11 app/libs/agilibox/initialize_with.rb
agilibox-1.9.10 app/libs/agilibox/initialize_with.rb
agilibox-1.9.9 app/libs/agilibox/initialize_with.rb
agilibox-1.9.8 app/libs/agilibox/initialize_with.rb
agilibox-1.9.7 app/libs/agilibox/initialize_with.rb