Sha256: 091fe88636ba91b8f29eb648ce7be9629e4abe5d88d52053ceec8888f6289908

Contents?: true

Size: 759 Bytes

Versions: 1

Compression:

Stored size: 759 Bytes

Contents

require "virtus"

module Undo
  class Config
    include Virtus.model

    attribute :mutator_methods, Array[Symbol], default: [:update, :delete, :destroy]

    attribute :uuid_generator, Proc, default: ->(config, _) {
      require "securerandom"
      ->(object) { SecureRandom.uuid }
    }
    attribute :storage, Object, default: ->(config, _) {
      require "undo/storage/memory_adapter"
      Undo::Storage::MemoryAdapter.new
    }
    attribute :serializer, Object, default: ->(config, _) {
      require "undo/serializer/simple"
      Undo::Serializer::Simple.new
    }

    def with(attribute_updates = {}, &block)
      return self if attribute_updates.empty?
      self.class.new attribute_set.get(self).merge(attribute_updates)
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
undo-0.0.1 lib/undo/config.rb