moneta 0.7.0 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +4 -0
- data/.travis.yml +39 -6
- data/CHANGES +18 -0
- data/README.md +69 -31
- data/Rakefile +1 -1
- data/SPEC.md +6 -0
- data/benchmarks/run.rb +235 -133
- data/lib/active_support/cache/moneta_store.rb +1 -0
- data/lib/moneta.rb +29 -19
- data/lib/moneta/adapters/activerecord.rb +18 -26
- data/lib/moneta/adapters/cassandra.rb +5 -7
- data/lib/moneta/adapters/client.rb +3 -5
- data/lib/moneta/adapters/cookie.rb +2 -0
- data/lib/moneta/adapters/couch.rb +1 -3
- data/lib/moneta/adapters/datamapper.rb +4 -6
- data/lib/moneta/adapters/dbm.rb +1 -3
- data/lib/moneta/adapters/file.rb +4 -0
- data/lib/moneta/adapters/fog.rb +2 -4
- data/lib/moneta/adapters/gdbm.rb +1 -3
- data/lib/moneta/adapters/hbase.rb +5 -7
- data/lib/moneta/adapters/leveldb.rb +2 -4
- data/lib/moneta/adapters/localmemcache.rb +1 -3
- data/lib/moneta/adapters/lruhash.rb +1 -3
- data/lib/moneta/adapters/memcached.rb +2 -2
- data/lib/moneta/adapters/{memcached_dalli.rb → memcached/dalli.rb} +4 -6
- data/lib/moneta/adapters/{memcached_native.rb → memcached/native.rb} +8 -7
- data/lib/moneta/adapters/mongo.rb +8 -9
- data/lib/moneta/adapters/pstore.rb +1 -3
- data/lib/moneta/adapters/redis.rb +2 -4
- data/lib/moneta/adapters/riak.rb +3 -5
- data/lib/moneta/adapters/sdbm.rb +1 -13
- data/lib/moneta/adapters/sequel.rb +3 -5
- data/lib/moneta/adapters/sqlite.rb +2 -4
- data/lib/moneta/adapters/tokyocabinet.rb +2 -4
- data/lib/moneta/base.rb +22 -2
- data/lib/moneta/builder.rb +3 -3
- data/lib/moneta/cache.rb +1 -1
- data/lib/moneta/expires.rb +27 -35
- data/lib/moneta/lock.rb +1 -3
- data/lib/moneta/logger.rb +3 -5
- data/lib/moneta/net.rb +7 -3
- data/lib/moneta/proxy.rb +2 -1
- data/lib/moneta/server.rb +33 -21
- data/lib/moneta/shared.rb +11 -7
- data/lib/moneta/stack.rb +1 -1
- data/lib/moneta/transformer.rb +15 -13
- data/lib/moneta/transformer/config.rb +33 -31
- data/lib/moneta/version.rb +1 -1
- data/lib/rack/cache/moneta.rb +6 -0
- data/lib/rack/moneta_cookies.rb +1 -0
- data/lib/rack/session/moneta.rb +1 -0
- data/moneta.gemspec +1 -1
- data/spec/generate.rb +403 -232
- data/spec/helper.rb +23 -2
- data/spec/moneta/adapter_activerecord_spec.rb +3 -2
- data/spec/moneta/adapter_cassandra_spec.rb +4 -3
- data/spec/moneta/adapter_client_spec.rb +4 -3
- data/spec/moneta/adapter_cookie_spec.rb +3 -2
- data/spec/moneta/adapter_couch_spec.rb +3 -2
- data/spec/moneta/adapter_datamapper_spec.rb +3 -2
- data/spec/moneta/adapter_dbm_spec.rb +3 -2
- data/spec/moneta/adapter_file_spec.rb +3 -2
- data/spec/moneta/adapter_fog_spec.rb +3 -2
- data/spec/moneta/adapter_gdbm_spec.rb +3 -2
- data/spec/moneta/adapter_hbase_spec.rb +3 -2
- data/spec/moneta/adapter_leveldb_spec.rb +3 -2
- data/spec/moneta/adapter_localmemcache_spec.rb +3 -2
- data/spec/moneta/adapter_lruhash_spec.rb +3 -2
- data/spec/moneta/adapter_memcached_dalli_spec.rb +4 -3
- data/spec/moneta/adapter_memcached_native_spec.rb +4 -3
- data/spec/moneta/adapter_memcached_spec.rb +4 -3
- data/spec/moneta/adapter_memory_spec.rb +50 -1
- data/spec/moneta/adapter_mongo_spec.rb +3 -2
- data/spec/moneta/adapter_pstore_spec.rb +124 -4
- data/spec/moneta/adapter_redis_spec.rb +4 -3
- data/spec/moneta/adapter_riak_spec.rb +3 -2
- data/spec/moneta/adapter_sdbm_spec.rb +3 -2
- data/spec/moneta/adapter_sequel_spec.rb +3 -2
- data/spec/moneta/adapter_sqlite_spec.rb +3 -2
- data/spec/moneta/adapter_tokyocabinet_bdb_spec.rb +3 -2
- data/spec/moneta/adapter_tokyocabinet_hdb_spec.rb +3 -2
- data/spec/moneta/adapter_yaml_spec.rb +32 -5
- data/spec/moneta/cache_file_memory_spec.rb +3 -2
- data/spec/moneta/cache_memory_null_spec.rb +3 -2
- data/spec/moneta/expires_file_spec.rb +23 -41
- data/spec/moneta/expires_memory_spec.rb +69 -13
- data/spec/moneta/lock_spec.rb +50 -1
- data/spec/moneta/null_adapter_spec.rb +26 -0
- data/spec/moneta/proxy_expires_memory_spec.rb +51 -12
- data/spec/moneta/proxy_redis_spec.rb +4 -3
- data/spec/moneta/shared_spec.rb +4 -3
- data/spec/moneta/simple_activerecord_spec.rb +105 -12
- data/spec/moneta/simple_activerecord_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_cassandra_spec.rb +106 -13
- data/spec/moneta/simple_client_tcp_spec.rb +106 -13
- data/spec/moneta/simple_client_unix_spec.rb +106 -14
- data/spec/moneta/simple_couch_spec.rb +105 -12
- data/spec/moneta/simple_couch_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_datamapper_spec.rb +105 -12
- data/spec/moneta/simple_datamapper_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_datamapper_with_repository_spec.rb +105 -12
- data/spec/moneta/simple_dbm_spec.rb +105 -12
- data/spec/moneta/simple_dbm_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_file_spec.rb +105 -12
- data/spec/moneta/simple_file_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_fog_spec.rb +105 -12
- data/spec/moneta/simple_fog_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_gdbm_spec.rb +105 -12
- data/spec/moneta/simple_gdbm_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_hashfile_spec.rb +105 -12
- data/spec/moneta/simple_hashfile_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_hbase_spec.rb +105 -12
- data/spec/moneta/simple_hbase_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_leveldb_spec.rb +105 -12
- data/spec/moneta/simple_leveldb_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_localmemcache_spec.rb +105 -12
- data/spec/moneta/simple_localmemcache_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_lruhash_spec.rb +70 -12
- data/spec/moneta/simple_lruhash_with_expires_spec.rb +71 -13
- data/spec/moneta/simple_memcached_dalli_spec.rb +106 -13
- data/spec/moneta/simple_memcached_native_spec.rb +106 -13
- data/spec/moneta/simple_memcached_spec.rb +106 -13
- data/spec/moneta/simple_memory_spec.rb +70 -12
- data/spec/moneta/simple_memory_with_compress_spec.rb +70 -12
- data/spec/moneta/simple_memory_with_expires_spec.rb +71 -13
- data/spec/moneta/simple_memory_with_json_key_serializer_spec.rb +41 -15
- data/spec/moneta/simple_memory_with_json_serializer_spec.rb +24 -11
- data/spec/moneta/simple_memory_with_json_value_serializer_spec.rb +45 -14
- data/spec/moneta/simple_memory_with_prefix_spec.rb +70 -12
- data/spec/moneta/simple_memory_with_snappy_compress_spec.rb +70 -12
- data/spec/moneta/simple_mongo_spec.rb +105 -12
- data/spec/moneta/simple_mongo_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_null_spec.rb +36 -1
- data/spec/moneta/simple_pstore_spec.rb +105 -12
- data/spec/moneta/simple_pstore_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_redis_spec.rb +106 -13
- data/spec/moneta/simple_riak_spec.rb +105 -12
- data/spec/moneta/simple_riak_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_sdbm_spec.rb +105 -12
- data/spec/moneta/simple_sdbm_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_sequel_spec.rb +105 -12
- data/spec/moneta/simple_sequel_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_sqlite_spec.rb +105 -12
- data/spec/moneta/simple_sqlite_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_tokyocabinet_spec.rb +105 -12
- data/spec/moneta/simple_tokyocabinet_with_expires_spec.rb +106 -13
- data/spec/moneta/simple_yaml_spec.rb +104 -11
- data/spec/moneta/simple_yaml_with_expires_spec.rb +105 -12
- data/spec/moneta/stack_file_memory_spec.rb +3 -2
- data/spec/moneta/stack_memory_file_spec.rb +3 -1
- data/spec/moneta/transformer_bencode_spec.rb +23 -10
- data/spec/moneta/transformer_bert_spec.rb +23 -10
- data/spec/moneta/transformer_bson_spec.rb +23 -10
- data/spec/moneta/transformer_bzip2_spec.rb +13 -3
- data/spec/moneta/transformer_json_spec.rb +23 -10
- data/spec/moneta/transformer_lzma_spec.rb +13 -3
- data/spec/moneta/transformer_lzo_spec.rb +13 -3
- data/spec/moneta/transformer_marshal_base64_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_escape_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_hmac_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_md5_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_md5_spread_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_prefix_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_rmd160_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_sha1_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_sha256_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_sha384_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_sha512_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_truncate_spec.rb +70 -12
- data/spec/moneta/transformer_marshal_uuencode_spec.rb +70 -12
- data/spec/moneta/transformer_msgpack_spec.rb +23 -10
- data/spec/moneta/transformer_ox_spec.rb +67 -9
- data/spec/moneta/transformer_quicklz_spec.rb +13 -3
- data/spec/moneta/transformer_snappy_spec.rb +13 -3
- data/spec/moneta/transformer_tnet_spec.rb +23 -10
- data/spec/moneta/transformer_yaml_spec.rb +67 -9
- data/spec/moneta/transformer_zlib_spec.rb +13 -3
- data/spec/monetaspecs.rb +4649 -1096
- metadata +8 -5
data/lib/moneta.rb
CHANGED
@@ -31,8 +31,8 @@ module Moneta
|
|
31
31
|
autoload :LocalMemCache, 'moneta/adapters/localmemcache'
|
32
32
|
autoload :LRUHash, 'moneta/adapters/lruhash'
|
33
33
|
autoload :Memcached, 'moneta/adapters/memcached'
|
34
|
-
autoload :MemcachedDalli, 'moneta/adapters/
|
35
|
-
autoload :MemcachedNative, 'moneta/adapters/
|
34
|
+
autoload :MemcachedDalli, 'moneta/adapters/memcached/dalli'
|
35
|
+
autoload :MemcachedNative, 'moneta/adapters/memcached/native'
|
36
36
|
autoload :Memory, 'moneta/adapters/memory'
|
37
37
|
autoload :Mongo, 'moneta/adapters/mongo'
|
38
38
|
autoload :Null, 'moneta/adapters/null'
|
@@ -47,30 +47,33 @@ module Moneta
|
|
47
47
|
end
|
48
48
|
|
49
49
|
# Create new Moneta store with default proxies
|
50
|
-
#
|
51
|
-
#
|
50
|
+
#
|
51
|
+
# This works in most cases if you don't want fine
|
52
|
+
# control over the proxy stack. It uses Marshal on the
|
52
53
|
# keys and values. Use Moneta#build if you want to have fine control!
|
53
54
|
#
|
54
55
|
# @param [Symbol] name Name of adapter (See Moneta::Adapters)
|
55
56
|
# @param [Hash] options
|
56
|
-
#
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
61
|
-
#
|
62
|
-
#
|
63
|
-
#
|
64
|
-
#
|
65
|
-
#
|
66
|
-
#
|
67
|
-
#
|
57
|
+
# @return [Moneta store] newly created Moneta store
|
58
|
+
# @option options [Boolean/Integer] :expires Ensure that store supports expiration by inserting
|
59
|
+
# `Moneta::Expires` if the underlying adapter doesn't support it natively
|
60
|
+
# and set default expiration time
|
61
|
+
# @option options [Boolean] :threadsafe (false) Ensure that the store is thread safe by inserting Moneta::Lock
|
62
|
+
# @option options [Boolean/Hash] :logger (false) Add logger to proxy stack (Hash is passed to logger as options)
|
63
|
+
# @option options [Boolean/Symbol] :compress (false) If true, compress value with zlib, or specify custom compress, e.g. :quicklz
|
64
|
+
# @option options [Symbol] :serializer (:marshal) Serializer used for key and value, disable with nil
|
65
|
+
# @option options [Symbol] :key_serializer (options[:serializer]) Serializer used for key, disable with nil
|
66
|
+
# @option options [Symbol] :value_serializer (options[:serializer]) Serializer used for value, disable with nil
|
67
|
+
# @option options [String] :prefix Key prefix used for namespacing (default none)
|
68
|
+
# @option options All other options passed to the adapter
|
68
69
|
#
|
69
70
|
# Supported adapters:
|
70
71
|
# * :HashFile (Store which spreads the entries using a md5 hash, e.g. cache/42/391dd7535aebef91b823286ac67fcd)
|
71
72
|
# * :File (normal file store)
|
72
73
|
# * :Memcached (Memcached store)
|
73
74
|
# * ... (All other adapters from Moneta::Adapters)
|
75
|
+
#
|
76
|
+
# @api public
|
74
77
|
def self.new(name, options = {})
|
75
78
|
expires = options.delete(:expires)
|
76
79
|
logger = options.delete(:logger)
|
@@ -88,11 +91,14 @@ module Moneta
|
|
88
91
|
# FIXME: Couch should work only with :marshal but this raises an error on 1.9
|
89
92
|
transformer[:key] << :base64
|
90
93
|
transformer[:value] << :base64
|
94
|
+
when :Riak
|
95
|
+
# Riak accepts only utf-8 keys over the http interface
|
96
|
+
# We use base64 encoding therefore.
|
97
|
+
transformer[:key] << :base64
|
91
98
|
when :Memcached, :MemcachedDalli, :MemcachedNative
|
92
|
-
# Memcached
|
99
|
+
# Memcached supports expires already
|
93
100
|
options[:expires] = expires if Integer === expires
|
94
101
|
expires = false
|
95
|
-
transformer[:key] << :base64
|
96
102
|
when :PStore, :YAML, :Null
|
97
103
|
# For PStore and YAML only the key has to be a string
|
98
104
|
transformer.delete(:value) if transformer[:value] == [:marshal]
|
@@ -117,13 +123,17 @@ module Moneta
|
|
117
123
|
end
|
118
124
|
end
|
119
125
|
|
120
|
-
#
|
126
|
+
# Configure your own Moneta proxy stack!
|
127
|
+
#
|
128
|
+
# @return [Moneta store] newly created Moneta store
|
121
129
|
#
|
122
130
|
# @example Moneta builder
|
123
131
|
# Moneta.build do
|
124
132
|
# use :Expires
|
125
133
|
# adapter :Memory
|
126
134
|
# end
|
135
|
+
#
|
136
|
+
# @api public
|
127
137
|
def self.build(&block)
|
128
138
|
Builder.new(&block).build.last
|
129
139
|
end
|
@@ -14,10 +14,8 @@ module Moneta
|
|
14
14
|
# Constructor
|
15
15
|
#
|
16
16
|
# @param [Hash] options
|
17
|
-
#
|
18
|
-
#
|
19
|
-
# * :table - Table name (default moneta)
|
20
|
-
# * :connection - ActiveRecord connection
|
17
|
+
# @option options [String] :table ('moneta') Table name
|
18
|
+
# @option options [Hash] :connection ActiveRecord connection configuration
|
21
19
|
def initialize(options = {})
|
22
20
|
table = options[:table] || 'moneta'
|
23
21
|
@table = self.class.tables[table] ||=
|
@@ -43,39 +41,33 @@ module Moneta
|
|
43
41
|
end
|
44
42
|
|
45
43
|
def load(key, options = {})
|
46
|
-
record = @table.where(:k => key).first
|
44
|
+
record = @table.select(:v).where(:k => key).first
|
47
45
|
record && record.v
|
48
46
|
end
|
49
47
|
|
50
48
|
def store(key, value, options = {})
|
51
|
-
@table.
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
end
|
49
|
+
record = @table.select(:k).where(:k => key).first_or_initialize
|
50
|
+
record.v = value
|
51
|
+
record.save
|
52
|
+
value
|
56
53
|
end
|
57
54
|
|
58
55
|
def delete(key, options = {})
|
59
|
-
@table.
|
60
|
-
|
61
|
-
|
62
|
-
record.v
|
63
|
-
end
|
56
|
+
if record = @table.where(:k => key).first
|
57
|
+
record.destroy
|
58
|
+
record.v
|
64
59
|
end
|
65
60
|
end
|
66
61
|
|
67
62
|
def increment(key, amount = 1, options = {})
|
68
|
-
@table.
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
record.save!
|
77
|
-
intvalue
|
78
|
-
end
|
63
|
+
record = @table.where(:k => key).lock.first_or_initialize
|
64
|
+
value = record.v
|
65
|
+
intvalue = value.to_i
|
66
|
+
raise 'Tried to increment non integer value' unless value == nil || intvalue.to_s == value.to_s
|
67
|
+
intvalue += amount
|
68
|
+
record.v = intvalue.to_s
|
69
|
+
record.save
|
70
|
+
intvalue
|
79
71
|
end
|
80
72
|
|
81
73
|
def clear(options = {})
|
@@ -11,13 +11,11 @@ module Moneta
|
|
11
11
|
# Constructor
|
12
12
|
#
|
13
13
|
# @param [Hash] options
|
14
|
-
#
|
15
|
-
#
|
16
|
-
#
|
17
|
-
#
|
18
|
-
#
|
19
|
-
# * :port - Server port (default 9160)
|
20
|
-
# * :expires - Default expiration time (default none)
|
14
|
+
# @option options [String] :keyspace ('moneta') Cassandra keyspace
|
15
|
+
# @option options [String] :column_family ('moneta') Cassandra column family
|
16
|
+
# @option options [String] :host ('127.0.0.1') Server host name
|
17
|
+
# @option options [Integer] :port (9160) Server port
|
18
|
+
# @option options [String] :expires Default expiration time
|
21
19
|
def initialize(options = {})
|
22
20
|
options[:host] ||= '127.0.0.1'
|
23
21
|
options[:port] ||= 9160
|
@@ -10,11 +10,9 @@ module Moneta
|
|
10
10
|
# Constructor
|
11
11
|
#
|
12
12
|
# @param [Hash] options
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
# * :host - Hostname (default empty)
|
17
|
-
# * :file - Unix socket file name (default none)
|
13
|
+
# @option options [Integer] :port (9000) TCP port
|
14
|
+
# @option options [String] :host ('127.0.0.1') Hostname
|
15
|
+
# @option options [String] :file Unix socket file name as alternative to `:port` and `:host`
|
18
16
|
def initialize(options = {})
|
19
17
|
@socket = options[:file] ? UNIXSocket.open(options[:file]) :
|
20
18
|
TCPSocket.open(options[:host] || '127.0.0.1', options[:port] || DEFAULT_PORT)
|
@@ -8,9 +8,7 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
# Options:
|
13
|
-
# * :db - Couch database (default moneta)
|
11
|
+
# @option options [String] :db ('moneta') Couch database
|
14
12
|
def initialize(options = {})
|
15
13
|
options[:db] ||= 'moneta'
|
16
14
|
@db = ::CouchRest.database!(options[:db])
|
@@ -15,14 +15,12 @@ module Moneta
|
|
15
15
|
# Constructor
|
16
16
|
#
|
17
17
|
# @param [Hash] options
|
18
|
-
#
|
19
|
-
#
|
20
|
-
#
|
21
|
-
# * :repository - Repository name (default :moneta)
|
22
|
-
# * :table - Table name (default :moneta)
|
18
|
+
# @option options [String] :setup Datamapper setup string
|
19
|
+
# @option options [String/Symbol] :repository (:moneta) Repository name
|
20
|
+
# @option options [String/Symbol] :table (:moneta) Table name
|
23
21
|
def initialize(options = {})
|
24
22
|
raise ArgumentError, 'Option :setup is required' unless options[:setup]
|
25
|
-
@repository = options.delete(:repository) || :moneta
|
23
|
+
@repository = (options.delete(:repository) || :moneta).to_sym
|
26
24
|
Store.storage_names[@repository] = (options.delete(:table) || :moneta).to_s
|
27
25
|
::DataMapper.setup(@repository, options[:setup])
|
28
26
|
context { Store.auto_upgrade! }
|
data/lib/moneta/adapters/dbm.rb
CHANGED
@@ -8,9 +8,7 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
# Options:
|
13
|
-
# * :file - Database file
|
11
|
+
# @option options [String] :file Database file
|
14
12
|
def initialize(options = {})
|
15
13
|
raise ArgumentError, 'Option :file is required' unless options[:file]
|
16
14
|
@hash = ::DBM.new(options[:file])
|
data/lib/moneta/adapters/file.rb
CHANGED
@@ -7,6 +7,10 @@ module Moneta
|
|
7
7
|
class File < Base
|
8
8
|
include Mixins::IncrementSupport
|
9
9
|
|
10
|
+
# Constructor
|
11
|
+
#
|
12
|
+
# @param [Hash] options
|
13
|
+
# @option options [String] :dir Directory where files will be stored
|
10
14
|
def initialize(options = {})
|
11
15
|
raise ArgumentError, 'Option :dir is required' unless @dir = options[:dir]
|
12
16
|
FileUtils.mkpath(@dir)
|
data/lib/moneta/adapters/fog.rb
CHANGED
@@ -8,10 +8,8 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# * :dir - Fog directory
|
14
|
-
# * Other options passed to Fog::Storage#new
|
11
|
+
# @option options [String] :dir Fog directory
|
12
|
+
# @option options Other options passed to `Fog::Storage#new`
|
15
13
|
def initialize(options = {})
|
16
14
|
raise ArgumentError, 'Option :dir is required' unless dir = options.delete(:dir)
|
17
15
|
storage = ::Fog::Storage.new(options)
|
data/lib/moneta/adapters/gdbm.rb
CHANGED
@@ -8,9 +8,7 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
# Options:
|
13
|
-
# * :file - Database file
|
11
|
+
# @option options [String] :file Database file
|
14
12
|
def initialize(options = {})
|
15
13
|
raise ArgumentError, 'Option :file is required' unless options[:file]
|
16
14
|
@hash = ::GDBM.new(options[:file])
|
@@ -8,13 +8,11 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
#
|
16
|
-
# * :column_family - Column family (default moneta)
|
17
|
-
# * :column - Column (default value)
|
11
|
+
# @option options [String] :host ('127.0.0.1') Server host name
|
12
|
+
# @option options [Integer] :port (9090) Server port
|
13
|
+
# @option options [String] :table ('moneta') Table name
|
14
|
+
# @option options [String] :column_family ('moneta') Column family
|
15
|
+
# @option options [String] :column ('value') Column
|
18
16
|
def initialize(options = {})
|
19
17
|
options[:host] ||= '127.0.0.1'
|
20
18
|
options[:port] ||= '9090'
|
@@ -8,10 +8,8 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
#
|
13
|
-
# * :dir - Database path
|
14
|
-
# * All other options passed to LevelDB::DB#new
|
11
|
+
# @option options [String] :dir - Database path
|
12
|
+
# @option options All other options passed to `LevelDB::DB#new`
|
15
13
|
def initialize(options = {})
|
16
14
|
raise ArgumentError, 'Option :dir is required' unless options[:dir]
|
17
15
|
@hash = ::LevelDB::DB.new(options[:dir])
|
@@ -10,9 +10,7 @@ module Moneta
|
|
10
10
|
# Constructor
|
11
11
|
#
|
12
12
|
# @param [Hash] options
|
13
|
-
#
|
14
|
-
# Options:
|
15
|
-
# * :file - Database file
|
13
|
+
# @option options [String] :file Database file
|
16
14
|
def initialize(options = {})
|
17
15
|
raise ArgumentError, 'Option :file is required' unless options[:file]
|
18
16
|
@hash = ::LocalMemCache.new(:filename => options[:file])
|
@@ -11,9 +11,7 @@ module Moneta
|
|
11
11
|
# Constructor
|
12
12
|
#
|
13
13
|
# @param [Hash] options
|
14
|
-
#
|
15
|
-
# Options:
|
16
|
-
# * :max_size - Maximum byte size of hash values (default 1024000)
|
14
|
+
# @option options [Integer] :max_size (1024000) Maximum total byte size of hash values
|
17
15
|
def initialize(options = {})
|
18
16
|
@max_size = options[:max_size] || 1024000
|
19
17
|
clear
|
@@ -1,10 +1,10 @@
|
|
1
1
|
module Moneta
|
2
2
|
module Adapters
|
3
3
|
begin
|
4
|
-
require 'moneta/adapters/
|
4
|
+
require 'moneta/adapters/memcached/native'
|
5
5
|
Memcached = MemcachedNative
|
6
6
|
rescue LoadError
|
7
|
-
require 'moneta/adapters/
|
7
|
+
require 'moneta/adapters/memcached/dalli'
|
8
8
|
Memcached = MemcachedDalli
|
9
9
|
end
|
10
10
|
end
|
@@ -8,14 +8,12 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
# * :expires - Default expiration time (default none)
|
15
|
-
# * Other options passed to Dalli::Client#new
|
11
|
+
# @option options [String] :server ('127.0.0.1:11211') Memcached server
|
12
|
+
# @option options [String] :expires Default expiration time
|
13
|
+
# @option options Other options passed to `Dalli::Client#new`
|
16
14
|
def initialize(options = {})
|
17
15
|
options[:expires_in] = options.delete(:expires)
|
18
|
-
server = options.delete(:server) || '
|
16
|
+
server = options.delete(:server) || '127.0.0.1:11211'
|
19
17
|
@cache = ::Dalli::Client.new(server, options)
|
20
18
|
end
|
21
19
|
|
@@ -8,16 +8,17 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# * :expires - Default expiration time (default 604800)
|
16
|
-
# * Other options passed to Memcached#new
|
11
|
+
# @option options [String] :server ('127.0.0.1:11211') Memcached server
|
12
|
+
# @option options [String] :namespace Key namespace
|
13
|
+
# @option options [String] :expires (604800) Default expiration time
|
14
|
+
# @option options Other options passed to `Memcached#new`
|
17
15
|
def initialize(options = {})
|
18
|
-
server = options.delete(:server) || '
|
16
|
+
server = options.delete(:server) || '127.0.0.1:11211'
|
19
17
|
@expires = options.delete(:expires) || 604800
|
20
18
|
options.merge!(:prefix_key => options.delete(:namespace)) if options[:namespace]
|
19
|
+
# We don't want a limitation on the key charset. Therefore we use the binary protocol.
|
20
|
+
# It is also faster.
|
21
|
+
options[:binary_protocol] = true unless options.include?(:binary_protocol)
|
21
22
|
@cache = ::Memcached.new(server, options)
|
22
23
|
end
|
23
24
|
|
@@ -8,15 +8,13 @@ module Moneta
|
|
8
8
|
# Constructor
|
9
9
|
#
|
10
10
|
# @param [Hash] options
|
11
|
-
#
|
12
|
-
#
|
13
|
-
#
|
14
|
-
#
|
15
|
-
# * :port - MongoDB server port (default mongodb default port)
|
16
|
-
# * :db - MongoDB database (default moneta)
|
11
|
+
# @option options [String] :collection ('moneta') MongoDB collection name
|
12
|
+
# @option options [String] :host ('127.0.0.1') MongoDB server host
|
13
|
+
# @option options [Integer] :port (MongoDB default port) MongoDB server port
|
14
|
+
# @option options [String] :db ('moneta') MongoDB database
|
17
15
|
def initialize(options = {})
|
18
16
|
collection = options.delete(:collection) || 'moneta'
|
19
|
-
host = options.delete(:host) || '
|
17
|
+
host = options.delete(:host) || '127.0.0.1'
|
20
18
|
port = options.delete(:port) || ::Mongo::Connection::DEFAULT_PORT
|
21
19
|
db = options.delete(:db) || 'moneta'
|
22
20
|
connection = ::Mongo::Connection.new(host, port, options)
|
@@ -24,17 +22,18 @@ module Moneta
|
|
24
22
|
end
|
25
23
|
|
26
24
|
def load(key, options = {})
|
27
|
-
value = @collection.find_one('_id' => key)
|
25
|
+
value = @collection.find_one('_id' => ::BSON::Binary.new(key))
|
28
26
|
value && value['value'].to_s
|
29
27
|
end
|
30
28
|
|
31
29
|
def delete(key, options = {})
|
32
30
|
value = load(key, options)
|
33
|
-
@collection.remove('_id' => key) if value
|
31
|
+
@collection.remove('_id' => ::BSON::Binary.new(key)) if value
|
34
32
|
value
|
35
33
|
end
|
36
34
|
|
37
35
|
def store(key, value, options = {})
|
36
|
+
key = ::BSON::Binary.new(key)
|
38
37
|
@collection.update({ '_id' => key },
|
39
38
|
{ '_id' => key, 'value' => ::BSON::Binary.new(value) },
|
40
39
|
{ :upsert => true })
|