moneta 0.7.0 → 0.7.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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 })
|