Module: Moneta
- Defined in:
- lib/moneta.rb,
lib/moneta/net.rb,
lib/moneta/base.rb,
lib/moneta/lock.rb,
lib/moneta/cache.rb,
lib/moneta/proxy.rb,
lib/moneta/stack.rb,
lib/moneta/logger.rb,
lib/moneta/mixins.rb,
lib/moneta/server.rb,
lib/moneta/shared.rb,
lib/moneta/builder.rb,
lib/moneta/expires.rb,
lib/moneta/version.rb,
lib/moneta/wrapper.rb,
lib/moneta/transformer.rb,
lib/moneta/adapters/dbm.rb,
lib/moneta/adapters/fog.rb,
lib/moneta/optionmerger.rb,
lib/moneta/adapters/file.rb,
lib/moneta/adapters/gdbm.rb,
lib/moneta/adapters/null.rb,
lib/moneta/adapters/riak.rb,
lib/moneta/adapters/sdbm.rb,
lib/moneta/adapters/yaml.rb,
lib/moneta/adapters/couch.rb,
lib/moneta/adapters/hbase.rb,
lib/moneta/adapters/mongo.rb,
lib/moneta/adapters/redis.rb,
lib/moneta/adapters/client.rb,
lib/moneta/adapters/cookie.rb,
lib/moneta/adapters/memory.rb,
lib/moneta/adapters/pstore.rb,
lib/moneta/adapters/sequel.rb,
lib/moneta/adapters/sqlite.rb,
lib/moneta/adapters/leveldb.rb,
lib/moneta/adapters/lruhash.rb,
lib/moneta/adapters/cassandra.rb,
lib/moneta/adapters/memcached.rb,
lib/moneta/transformer/config.rb,
lib/moneta/transformer/helper.rb,
lib/moneta/adapters/datamapper.rb,
lib/moneta/adapters/activerecord.rb,
lib/moneta/adapters/tokyocabinet.rb,
lib/moneta/adapters/localmemcache.rb,
lib/moneta/adapters/memcached/dalli.rb,
lib/moneta/adapters/memcached/native.rb
Defined Under Namespace
Modules: Adapters, Mixins, Net Classes: Base, Builder, Cache, Expires, Lock, Logger, OptionMerger, Proxy, Server, Shared, Stack, Transformer, Wrapper
Constant Summary collapse
- VERSION =
Moneta version number
'0.7.1'
Class Method Summary collapse
-
.build(&block) ⇒ Moneta store
Configure your own Moneta proxy stack!.
-
.new(name, options = {}) ⇒ Moneta store
Create new Moneta store with default proxies.
Class Method Details
.build(&block) ⇒ Moneta store
Configure your own Moneta proxy stack!
137 138 139 |
# File 'lib/moneta.rb', line 137 def self.build(&block) Builder.new(&block).build.last end |
.new(name, options = {}) ⇒ Moneta store
Create new Moneta store with default proxies
This works in most cases if you don’t want fine control over the proxy stack. It uses Marshal on the keys and values. Use Moneta#build if you want to have fine control!
Supported adapters:
-
:HashFile (Store which spreads the entries using a md5 hash, e.g. cache/42/391dd7535aebef91b823286ac67fcd)
-
:File (normal file store)
-
:Memcached (Memcached store)
-
… (All other adapters from Moneta::Adapters)
77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 |
# File 'lib/moneta.rb', line 77 def self.new(name, = {}) expires = .delete(:expires) logger = .delete(:logger) threadsafe = .delete(:threadsafe) compress = .delete(:compress) serializer = .include?(:serializer) ? .delete(:serializer) : :marshal key_serializer = .include?(:key_serializer) ? .delete(:key_serializer) : serializer value_serializer = .include?(:value_serializer) ? .delete(:value_serializer) : serializer transformer = { :key => [key_serializer, :prefix], :value => [value_serializer], :prefix => .delete(:prefix) } transformer[:value] << (Symbol === compress ? compress : :zlib) if compress raise ArgumentError, 'Name must be Symbol' unless Symbol === name case name when :Sequel, :ActiveRecord, :Couch, :DataMapper # Sequel accept only base64 keys and values # FIXME: Couch should work only with :marshal but this raises an error on 1.9 transformer[:key] << :base64 transformer[:value] << :base64 when :Riak # Riak accepts only utf-8 keys over the http interface # We use base64 encoding therefore. transformer[:key] << :base64 when :Memcached, :MemcachedDalli, :MemcachedNative # Memcached supports expires already [:expires] = expires if Integer === expires expires = false when :PStore, :YAML, :Null # For PStore and YAML only the key has to be a string transformer.delete(:value) if transformer[:value] == [:marshal] when :HashFile # Use spreading hashes transformer[:key] << :md5 << :spread name = :File when :File # Use escaping transformer[:key] << :escape when :Cassandra, :Redis # Expires already supported [:expires] = expires if Integer === expires expires = false end build do use :Logger, Hash === logger ? logger : {} if logger use :Expires, :expires => (Integer === expires ? expires : nil) if expires use :Transformer, transformer use :Lock if threadsafe adapter name, end end |