Module: CurlyMustache::Adapters

Defined in:
lib/curly_mustache/adapters.rb,
lib/curly_mustache/adapters/abstract.rb,
lib/curly_mustache/adapters/cassandra.rb,
lib/curly_mustache/adapters/memcached.rb

Overview

Adapters are how CurlyMustache talks to various data stores.

You define new adapters by subclassing CurlyMustache::Adapters::Abstract and then calling CurlyMustache::Adapters.register. At a bare minimum, you need to implement initialize, get, put, delete.

Ex:

class MyFunkyAdapter < CurlyMustache::Adapters::Abstract

  # config is the same hash that is passed to #establish_connection.
  def initialize(config)
    @client = FunkyDataStoreClient.new(config)
  end

  def get(key)
    @client.retrieve(key)
  end

  def put(key, value)
    @client.store(key, value)
  end

  def delete(key)
    @client.destroy(key)
  end
end

# Now we register the adapter so we can use it in #establish_connection.
CurlyMustache::Adapters.register(MyFunkyAdapter)

# We can see a list of registered adapters.
CurlyMustache::Adapters.list # => { :my_funky_adapter => MyFunkyAdapter }

# The hash passed to #establish_connection is passed as config to #initialize.
CurlyMustache::Base.establish_connection :adapter => :my_funky_adapter, :server => "localhost", :option1 => "blah"

Defined Under Namespace

Classes: Abstract, Cassandra, Memcached

Class Method Summary collapse

Class Method Details

.get(name) ⇒ Object

Get an adapter by registered name.

Raises:

  • (ArgumentError)


54
55
56
57
58
# File 'lib/curly_mustache/adapters.rb', line 54

def self.get(name)
  name = name.to_sym
  raise ArgumentError, "adapter #{name} is not registered" unless @registered_adapters.has_key?(name)
  @registered_adapters[name]
end

.listObject

Returns of hash of all registered adapters where the keys are the registered names.



49
50
51
# File 'lib/curly_mustache/adapters.rb', line 49

def self.list
  @registered_adapters.dup
end

.register(klass) ⇒ Object

Register an adapter class so it can be referenced by name by establish_connection. If the class you are registering is MyModule::MyClass then the name it will be registered under will simply be :my_class.



43
44
45
46
# File 'lib/curly_mustache/adapters.rb', line 43

def self.register(klass)
  @registered_adapters ||= {}
  @registered_adapters[klass.name.split("::").last.underscore.to_sym] = klass
end