module Moneta::Defaults::ClassMethods

@api private

Public Instance Methods

features() click to toggle source

Returns features list

@return [Array<Symbol>] list of features

# File lib/moneta/defaults.rb, line 12
def features
  @features ||= superclass.respond_to?(:features) ? superclass.features : [].freeze
end
not_supports(*features) click to toggle source

Declares that this adapter does not support the given feature, and adds a stub method that raises a NotImplementedError. Useful when inheriting from another adapter.

@example

class MyAdapter < OtherAdapterWithCreate
  include Moneta::Defaults
  not_supports :create
end
# File lib/moneta/defaults.rb, line 39
def not_supports(*features)
  features.each do |feature|
    define_method(feature) do
      raise ::NotImplementedError, "#{feature} not supported"
    end
  end

  @features = (self.features - features).freeze
end
supports(*features) click to toggle source

Declares that this adapter supports the given feature.

@example

class MyAdapter
  include Moneta::Defaults
  supports :create
  def create(key, value, options = {})
    # implement create!
  end
end
# File lib/moneta/defaults.rb, line 26
def supports(*features)
  @features = (self.features | features).freeze
end