juno 0.1.1 → 0.2.0

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.
Files changed (161) hide show
  1. data/.gitignore +2 -1
  2. data/.travis.yml +6 -0
  3. data/Gemfile +16 -9
  4. data/README.md +92 -34
  5. data/Rakefile +23 -5
  6. data/benchmarks/run.rb +19 -22
  7. data/juno.gemspec +0 -3
  8. data/lib/juno/adapters/activerecord.rb +58 -0
  9. data/lib/juno/adapters/cassandra.rb +47 -0
  10. data/lib/juno/adapters/couch.rb +43 -0
  11. data/lib/juno/adapters/datamapper.rb +64 -0
  12. data/lib/juno/adapters/dbm.rb +17 -0
  13. data/lib/juno/adapters/file.rb +58 -0
  14. data/lib/juno/adapters/fog.rb +42 -0
  15. data/lib/juno/adapters/gdbm.rb +17 -0
  16. data/lib/juno/adapters/localmemcache.rb +18 -0
  17. data/lib/juno/adapters/memcached.rb +11 -0
  18. data/lib/juno/adapters/memcached_dalli.rb +46 -0
  19. data/lib/juno/adapters/memcached_native.rb +47 -0
  20. data/lib/juno/adapters/memory.rb +30 -0
  21. data/lib/juno/adapters/mongo.rb +43 -0
  22. data/lib/juno/adapters/null.rb +28 -0
  23. data/lib/juno/adapters/pstore.rb +51 -0
  24. data/lib/juno/adapters/redis.rb +43 -0
  25. data/lib/juno/adapters/riak.rb +46 -0
  26. data/lib/juno/adapters/sdbm.rb +27 -0
  27. data/lib/juno/adapters/sequel.rb +50 -0
  28. data/lib/juno/adapters/sqlite.rb +52 -0
  29. data/lib/juno/adapters/tokyocabinet.rb +33 -0
  30. data/lib/juno/adapters/yaml.rb +13 -0
  31. data/lib/juno/base.rb +11 -89
  32. data/lib/juno/builder.rb +30 -0
  33. data/lib/juno/cache.rb +64 -0
  34. data/lib/juno/expires.rb +6 -10
  35. data/lib/juno/proxy.rb +62 -3
  36. data/lib/juno/stack.rb +27 -11
  37. data/lib/juno/transformer.rb +106 -0
  38. data/lib/juno/version.rb +1 -1
  39. data/lib/juno.rb +81 -29
  40. data/spec/adapter_activerecord_spec.rb +41 -0
  41. data/spec/adapter_cassandra_spec.rb +27 -0
  42. data/spec/adapter_couch_spec.rb +27 -0
  43. data/spec/adapter_datamapper_spec.rb +61 -0
  44. data/spec/adapter_dbm_spec.rb +27 -0
  45. data/spec/adapter_file_spec.rb +27 -0
  46. data/spec/adapter_fog_spec.rb +35 -0
  47. data/spec/adapter_gdbm_spec.rb +27 -0
  48. data/spec/adapter_localmemcache_spec.rb +27 -0
  49. data/spec/adapter_memcached_dalli_spec.rb +28 -0
  50. data/spec/adapter_memcached_native_spec.rb +28 -0
  51. data/spec/adapter_memcached_spec.rb +28 -0
  52. data/spec/adapter_memory_spec.rb +42 -0
  53. data/spec/adapter_mongo_spec.rb +27 -0
  54. data/spec/adapter_pstore_spec.rb +30 -0
  55. data/spec/adapter_redis_spec.rb +28 -0
  56. data/spec/adapter_riak_spec.rb +31 -0
  57. data/spec/adapter_sdbm_spec.rb +27 -0
  58. data/spec/adapter_sequel_spec.rb +27 -0
  59. data/spec/adapter_sqlite_spec.rb +27 -0
  60. data/spec/adapter_tokyocabinet_spec.rb +27 -0
  61. data/spec/adapter_yaml_spec.rb +30 -0
  62. data/spec/cache_file_memory_spec.rb +50 -0
  63. data/spec/cache_memory_null_spec.rb +39 -0
  64. data/spec/expires_file_spec.rb +82 -0
  65. data/spec/expires_memory_spec.rb +59 -0
  66. data/spec/generate.rb +736 -0
  67. data/spec/helper.rb +39 -0
  68. data/spec/junospecs.rb +1540 -0
  69. data/spec/null_adapter_spec.rb +33 -0
  70. data/spec/proxy_expires_memory_spec.rb +63 -0
  71. data/spec/proxy_redis_spec.rb +38 -0
  72. data/spec/simple_activerecord_spec.rb +52 -0
  73. data/spec/simple_cassandra_spec.rb +53 -0
  74. data/spec/simple_couch_spec.rb +52 -0
  75. data/spec/simple_datamapper_spec.rb +54 -0
  76. data/spec/simple_datamapper_with_repository_spec.rb +54 -0
  77. data/spec/simple_dbm_spec.rb +52 -0
  78. data/spec/simple_file_spec.rb +52 -0
  79. data/spec/simple_fog_spec.rb +60 -0
  80. data/spec/simple_gdbm_spec.rb +52 -0
  81. data/spec/simple_hashfile_spec.rb +52 -0
  82. data/spec/simple_localmemcache_spec.rb +52 -0
  83. data/spec/simple_memcached_dalli_spec.rb +53 -0
  84. data/spec/simple_memcached_native_spec.rb +53 -0
  85. data/spec/simple_memcached_spec.rb +53 -0
  86. data/spec/simple_memory_spec.rb +52 -0
  87. data/spec/simple_mongo_spec.rb +52 -0
  88. data/spec/simple_null_spec.rb +43 -0
  89. data/spec/simple_pstore_spec.rb +52 -0
  90. data/spec/simple_redis_spec.rb +53 -0
  91. data/spec/simple_riak_spec.rb +56 -0
  92. data/spec/simple_sdbm_spec.rb +52 -0
  93. data/spec/simple_sequel_spec.rb +52 -0
  94. data/spec/simple_sqlite_spec.rb +52 -0
  95. data/spec/simple_tokyocabinet_spec.rb +52 -0
  96. data/spec/simple_yaml_spec.rb +52 -0
  97. data/spec/stack_file_memory_spec.rb +43 -0
  98. data/spec/stack_memory_file_spec.rb +42 -0
  99. data/spec/transformer_bson_spec.rb +44 -0
  100. data/spec/transformer_json_spec.rb +44 -0
  101. data/spec/transformer_marshal_base64_spec.rb +60 -0
  102. data/spec/transformer_marshal_escape_spec.rb +60 -0
  103. data/spec/transformer_marshal_md5_spec.rb +60 -0
  104. data/spec/transformer_marshal_md5_spread_spec.rb +60 -0
  105. data/spec/transformer_msgpack_spec.rb +44 -0
  106. data/spec/transformer_yaml_spec.rb +59 -0
  107. metadata +164 -108
  108. data/lib/juno/activerecord.rb +0 -55
  109. data/lib/juno/cassandra.rb +0 -45
  110. data/lib/juno/couch.rb +0 -43
  111. data/lib/juno/datamapper.rb +0 -63
  112. data/lib/juno/dbm.rb +0 -15
  113. data/lib/juno/file.rb +0 -62
  114. data/lib/juno/fog.rb +0 -48
  115. data/lib/juno/gdbm.rb +0 -15
  116. data/lib/juno/hashfile.rb +0 -12
  117. data/lib/juno/localmemcache.rb +0 -16
  118. data/lib/juno/memcached.rb +0 -7
  119. data/lib/juno/memcached_dalli.rb +0 -55
  120. data/lib/juno/memcached_native.rb +0 -56
  121. data/lib/juno/memory.rb +0 -7
  122. data/lib/juno/mongodb.rb +0 -43
  123. data/lib/juno/null.rb +0 -23
  124. data/lib/juno/pstore.rb +0 -49
  125. data/lib/juno/redis.rb +0 -46
  126. data/lib/juno/riak.rb +0 -45
  127. data/lib/juno/sdbm.rb +0 -15
  128. data/lib/juno/sequel.rb +0 -48
  129. data/lib/juno/sqlite.rb +0 -50
  130. data/lib/juno/tokyocabinet.rb +0 -36
  131. data/lib/juno/yaml.rb +0 -9
  132. data/test/helper.rb +0 -212
  133. data/test/test_activerecord.rb +0 -33
  134. data/test/test_cassandra.rb +0 -13
  135. data/test/test_couch.rb +0 -13
  136. data/test/test_datamapper.rb +0 -64
  137. data/test/test_dbm.rb +0 -13
  138. data/test/test_expires.rb +0 -9
  139. data/test/test_file.rb +0 -9
  140. data/test/test_fog.rb +0 -17
  141. data/test/test_gdbm.rb +0 -13
  142. data/test/test_hashfile.rb +0 -9
  143. data/test/test_localmemcache.rb +0 -13
  144. data/test/test_memcached.rb +0 -14
  145. data/test/test_memcached_dalli.rb +0 -14
  146. data/test/test_memcached_native.rb +0 -14
  147. data/test/test_memory.rb +0 -9
  148. data/test/test_mongodb.rb +0 -13
  149. data/test/test_null.rb +0 -9
  150. data/test/test_proxy.rb +0 -9
  151. data/test/test_pstore.rb +0 -9
  152. data/test/test_redis.rb +0 -13
  153. data/test/test_riak.rb +0 -13
  154. data/test/test_sdbm.rb +0 -13
  155. data/test/test_sequel.rb +0 -13
  156. data/test/test_sqlite.rb +0 -13
  157. data/test/test_stack.rb +0 -10
  158. data/test/test_tokyocabinet.rb +0 -13
  159. data/test/test_yaml.rb +0 -9
  160. data/unsupported/test_tokyotyrant.rb +0 -13
  161. data/unsupported/tokyotyrant.rb +0 -29
data/lib/juno/fog.rb DELETED
@@ -1,48 +0,0 @@
1
- require 'fog'
2
-
3
- module Juno
4
- class Fog < Base
5
- def initialize(options = {})
6
- raise 'No option :dir specified' unless dir = options.delete(:dir)
7
- storage = ::Fog::Storage.new(options)
8
- @directory = storage.directories.create(:key => dir)
9
- end
10
-
11
- def key?(key, options = {})
12
- !!@directory.files.head(key_for(key))
13
- end
14
-
15
- def [](key)
16
- if value = get(key)
17
- deserialize(value.body)
18
- end
19
- end
20
-
21
- def delete(key, options = {})
22
- value = get(key)
23
- if value
24
- body = deserialize(value.body)
25
- value.destroy
26
- body
27
- end
28
- end
29
-
30
- def store(key, value, options = {})
31
- @directory.files.create(:key => key_for(key), :body => serialize(value))
32
- value
33
- end
34
-
35
- def clear(options = {})
36
- @directory.files.all.each do |file|
37
- file.destroy
38
- end
39
- nil
40
- end
41
-
42
- private
43
-
44
- def get(key)
45
- @directory.files.get(key_for(key))
46
- end
47
- end
48
- end
data/lib/juno/gdbm.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'gdbm'
2
-
3
- module Juno
4
- class GDBM < Base
5
- def initialize(options = {})
6
- raise 'No option :file specified' unless options[:file]
7
- @store = ::GDBM.new(options[:file])
8
- end
9
-
10
- def close
11
- @store.close
12
- nil
13
- end
14
- end
15
- end
data/lib/juno/hashfile.rb DELETED
@@ -1,12 +0,0 @@
1
- require 'digest/md5'
2
-
3
- module Juno
4
- class HashFile < Juno::File
5
- protected
6
-
7
- def store_path(key)
8
- hash = Digest::MD5.hexdigest(key_for(key))
9
- ::File.join(@dir, hash[0..1], hash[2..-1])
10
- end
11
- end
12
- end
@@ -1,16 +0,0 @@
1
- require 'localmemcache'
2
-
3
- module Juno
4
- class LocalMemCache < Base
5
- def initialize(options = {})
6
- raise 'No option :file specified' unless options[:file]
7
- @store = ::LocalMemCache.new(:filename => options[:file])
8
- end
9
-
10
- def delete(key, options = {})
11
- value = self[key]
12
- @store.delete(key_for(key))
13
- value
14
- end
15
- end
16
- end
@@ -1,7 +0,0 @@
1
- module Juno
2
- begin
3
- Memcached = MemcachedNative
4
- rescue LoadError
5
- Memcached = MemcachedDalli
6
- end
7
- end
@@ -1,55 +0,0 @@
1
- require 'dalli'
2
-
3
- module Juno
4
- class MemcachedDalli < Base
5
- def initialize(options = {})
6
- server = options.delete(:server) || 'localhost:11211'
7
- @cache = ::Dalli::Client.new(server, options)
8
- end
9
-
10
- def key?(key, options = {})
11
- !!@cache.get(key_for(key))
12
- end
13
-
14
- def fetch(key, value = nil, options = {})
15
- result = super
16
- if result && options.include?(:expires)
17
- store(key, result, options)
18
- else
19
- result
20
- end
21
- end
22
-
23
- def [](key)
24
- deserialize(@cache.get(key_for(key)))
25
- end
26
-
27
- def store(key, value, options = {})
28
- @cache.set(key_for(key), serialize(value), options[:expires])
29
- value
30
- end
31
-
32
- def delete(key, options = {})
33
- key = key_for(key)
34
- value = deserialize(@cache.get(key))
35
- @cache.delete(key)
36
- value
37
- end
38
-
39
- def clear(options = {})
40
- @cache.flush_all
41
- nil
42
- end
43
-
44
- def close
45
- @cache.close
46
- nil
47
- end
48
-
49
- private
50
-
51
- def key_for(key)
52
- [super].pack('m').strip
53
- end
54
- end
55
- end
@@ -1,56 +0,0 @@
1
- require 'memcached'
2
-
3
- module Juno
4
- class MemcachedNative < Base
5
- def initialize(options = {})
6
- server = options.delete(:server) || 'localhost:11211'
7
- @cache = ::Memcached.new(server, options)
8
- end
9
-
10
- def key?(key, options = {})
11
- @cache.get(key_for(key), false)
12
- true
13
- rescue ::Memcached::NotFound
14
- false
15
- end
16
-
17
- def fetch(key, value = nil, options = {})
18
- result = super
19
- if result && options.include?(:expires)
20
- store(key, result, options)
21
- else
22
- result
23
- end
24
- end
25
-
26
- def [](key)
27
- deserialize(@cache.get(key_for(key), false))
28
- rescue ::Memcached::NotFound
29
- end
30
-
31
- def delete(key, options = {})
32
- key = key_for(key)
33
- value = deserialize(@cache.get(key, false))
34
- @cache.delete(key)
35
- value
36
- rescue ::Memcached::NotFound
37
- end
38
-
39
- def store(key, value, options = {})
40
- ttl = options[:expires] || ::Memcached::DEFAULTS[:default_ttl]
41
- @cache.set(key_for(key), serialize(value), ttl, false)
42
- value
43
- end
44
-
45
- def clear(options = {})
46
- @cache.flush
47
- nil
48
- end
49
-
50
- private
51
-
52
- def key_for(key)
53
- [super].pack('m').strip
54
- end
55
- end
56
- end
data/lib/juno/memory.rb DELETED
@@ -1,7 +0,0 @@
1
- module Juno
2
- class Memory < Base
3
- def initialize(options = {})
4
- @store = {}
5
- end
6
- end
7
- end
data/lib/juno/mongodb.rb DELETED
@@ -1,43 +0,0 @@
1
- require 'mongo'
2
- require 'uri'
3
-
4
- module Juno
5
- class MongoDB < Base
6
- def initialize(options = {})
7
- collection = options.delete(:collection) || 'juno'
8
- host = options.delete(:host) || 'localhost'
9
- port = options.delete(:port) || Mongo::Connection::DEFAULT_PORT
10
- db = options.delete(:db) || 'juno'
11
- connection = Mongo::Connection.new(host, port, options)
12
- @store = connection.db(db).collection(collection)
13
- end
14
-
15
- def key?(key, options = {})
16
- !!self[key]
17
- end
18
-
19
- def [](key)
20
- value = @store.find_one('_id' => key_for(key))
21
- value ? deserialize(value['data']) : nil
22
- end
23
-
24
- def delete(key, options = {})
25
- value = self[key]
26
- @store.remove('_id' => key_for(key)) if value
27
- value
28
- end
29
-
30
- def store(key, value, options = {})
31
- key = key_for(key)
32
- @store.update({ '_id' => key },
33
- { '_id' => key, 'data' => serialize(value) },
34
- { :upsert => true })
35
- value
36
- end
37
-
38
- def clear(options = {})
39
- @store.remove
40
- nil
41
- end
42
- end
43
- end
data/lib/juno/null.rb DELETED
@@ -1,23 +0,0 @@
1
- module Juno
2
- class Null < Base
3
- def key?(key, options = {})
4
- false
5
- end
6
-
7
- def [](key)
8
- nil
9
- end
10
-
11
- def store(key, value, options = {})
12
- value
13
- end
14
-
15
- def delete(key, options = {})
16
- nil
17
- end
18
-
19
- def clear(options = {})
20
- nil
21
- end
22
- end
23
- end
data/lib/juno/pstore.rb DELETED
@@ -1,49 +0,0 @@
1
- require 'pstore'
2
-
3
- module Juno
4
- class PStore < Base
5
- def initialize(options = {})
6
- raise 'No option :file specified' unless options[:file]
7
- FileUtils.mkpath(::File.dirname(options[:file]))
8
- @store = new_store(options)
9
- end
10
-
11
- def key?(key, options = {})
12
- @store.transaction(true) { @store.root?(key_for(key)) }
13
- end
14
-
15
- def [](key)
16
- @store.transaction(true) { @store[key_for(key)] }
17
- end
18
-
19
- def delete(key, options = {})
20
- @store.transaction { @store.delete(key_for(key)) }
21
- end
22
-
23
- def store(key, value, options = {})
24
- @store.transaction { @store[key_for(key)] = value }
25
- end
26
-
27
- def clear(options = {})
28
- @store.transaction do
29
- @store.roots.each do |key|
30
- @store.delete(key)
31
- end
32
- end
33
- nil
34
- end
35
-
36
- protected
37
-
38
- if RUBY_VERSION > '1.9'
39
- def new_store(options)
40
- # Create a thread-safe pstore by default
41
- ::PStore.new(options[:file], options.include?(:thread_safe) ? options[:thread_safe] : true)
42
- end
43
- else
44
- def new_store(options)
45
- ::PStore.new(options[:file])
46
- end
47
- end
48
- end
49
- end
data/lib/juno/redis.rb DELETED
@@ -1,46 +0,0 @@
1
- require 'redis'
2
-
3
- module Juno
4
- class Redis < Base
5
- def initialize(options = {})
6
- @store = ::Redis.new(options)
7
- end
8
-
9
- def key?(key, options = {})
10
- @store.exists(key_for(key))
11
- end
12
-
13
- def fetch(key, value = nil, options = {})
14
- result = super
15
- if result && expires = options[:expires]
16
- @store.expire(key_for(key), expires)
17
- end
18
- result
19
- end
20
-
21
- def [](key)
22
- deserialize(@store.get(key_for(key)))
23
- end
24
-
25
- def delete(key, options = {})
26
- string_key = key_for(key)
27
- value = self[key]
28
- @store.del(string_key) if value
29
- value
30
- end
31
-
32
- def store(key, value, options = {})
33
- key = key_for(key)
34
- @store.set(key, serialize(value))
35
- if expires = options[:expires]
36
- @store.expire(key, expires)
37
- end
38
- value
39
- end
40
-
41
- def clear(options = {})
42
- @store.flushdb
43
- nil
44
- end
45
- end
46
- end
data/lib/juno/riak.rb DELETED
@@ -1,45 +0,0 @@
1
- # Copyright: 2011 TMX Credit
2
- # Author: Potapov Sergey (aka Blake)
3
-
4
- require 'ripple'
5
-
6
- module Juno
7
- class Riak < Base
8
- def initialize(options = {})
9
- bucket_name = options.delete(:bucket) || 'juno'
10
- client = ::Riak::Client.new(options)
11
- @bucket = client.bucket(bucket_name)
12
- end
13
-
14
- def key?(key, options = {})
15
- !!self[key]
16
- end
17
-
18
- def [](key)
19
- deserialize(@bucket[key_for(key)].data)
20
- rescue ::Riak::HTTPFailedRequest => err
21
- nil
22
- end
23
-
24
- def delete(key, options = {})
25
- value = self[key]
26
- @bucket.delete(key_for(key))
27
- value
28
- end
29
-
30
- def store(key, value, options = {})
31
- obj = ::Riak::RObject.new(@bucket, key_for(key))
32
- obj.content_type = 'text/plain'
33
- obj.data = serialize(value)
34
- obj.store
35
- value
36
- end
37
-
38
- def clear(options = {})
39
- @bucket.keys(:reload => true) do |keys|
40
- keys.each{|key| @bucket.delete(key) }
41
- end
42
- nil
43
- end
44
- end
45
- end
data/lib/juno/sdbm.rb DELETED
@@ -1,15 +0,0 @@
1
- require 'sdbm'
2
-
3
- module Juno
4
- class SDBM < Base
5
- def initialize(options = {})
6
- raise 'No option :file specified' unless options[:file]
7
- @store = ::SDBM.new(options[:file])
8
- end
9
-
10
- def close
11
- @store.close
12
- nil
13
- end
14
- end
15
- end
data/lib/juno/sequel.rb DELETED
@@ -1,48 +0,0 @@
1
- require 'sequel'
2
-
3
- module Juno
4
- class Sequel < Base
5
- def initialize(options = {})
6
- raise 'No option :db specified' unless db = options.delete(:db)
7
- @table = options.delete(:table) || :juno
8
- @db = ::Sequel.connect(db, options)
9
- @db.create_table?(@table) do
10
- primary_key :k
11
- blob :k
12
- blob :v
13
- end
14
- end
15
-
16
- def key?(key, options = {})
17
- !!sequel_table[:k => key_for(key)]
18
- end
19
-
20
- def [](key)
21
- result = sequel_table[:k => key_for(key)]
22
- result ? deserialize(result[:v]) : nil
23
- end
24
-
25
- def store(key, value, options = {})
26
- sequel_table.insert(:k => key_for(key), :v => serialize(value))
27
- value
28
- end
29
-
30
- def delete(key, options = {})
31
- if value = self[key]
32
- sequel_table.filter(:k => key_for(key)).delete
33
- value
34
- end
35
- end
36
-
37
- def clear(options = {})
38
- sequel_table.delete
39
- nil
40
- end
41
-
42
- private
43
-
44
- def sequel_table
45
- @sequel_table ||= @db[@table]
46
- end
47
- end
48
- end
data/lib/juno/sqlite.rb DELETED
@@ -1,50 +0,0 @@
1
- require 'sqlite3'
2
-
3
- module Juno
4
- class Sqlite < Base
5
- def initialize(options = {})
6
- raise 'No option :file specified' unless options[:file]
7
- table = options[:table] || 'juno'
8
- @db = ::SQLite3::Database.new(options[:file])
9
- @db.execute("create table if not exists #{table} (key string primary key, value string)")
10
- @select = @db.prepare("select value from #{table} where key = ?")
11
- @insert = @db.prepare("insert into #{table} values (?, ?)")
12
- @delete = @db.prepare("delete from #{table} where key = ?")
13
- @clear = @db.prepare("delete from #{table}")
14
- end
15
-
16
- def key?(key, options = {})
17
- !@select.execute!(key_for(key)).empty?
18
- end
19
-
20
- def [](key)
21
- rows = @select.execute!(key_for(key))
22
- rows.empty? ? nil : deserialize(rows.first.first)
23
- end
24
-
25
- def store(key, value, options = {})
26
- @insert.execute!(key_for(key), serialize(value))
27
- value
28
- end
29
-
30
- def delete(key, options = {})
31
- value = self[key]
32
- @delete.execute!(key_for(key))
33
- value
34
- end
35
-
36
- def clear(options = {})
37
- @clear.execute!
38
- nil
39
- end
40
-
41
- def close
42
- @select.close
43
- @insert.close
44
- @delete.close
45
- @clear.close
46
- @db.close
47
- nil
48
- end
49
- end
50
- end
@@ -1,36 +0,0 @@
1
- require 'tokyocabinet'
2
-
3
- module Juno
4
- class TokyoCabinet < Base
5
- def initialize(options = {})
6
- file = options[:file]
7
- raise 'No option :file specified' unless options[:file]
8
- @store = ::TokyoCabinet::HDB.new
9
- unless @store.open(file, ::TokyoCabinet::HDB::OWRITER | ::TokyoCabinet::HDB::OCREAT)
10
- raise @store.errmsg(@store.ecode)
11
- end
12
- end
13
-
14
- def key?(key, options = {})
15
- !!self[key]
16
- end
17
-
18
- def delete(key, options = {})
19
- value = self[key]
20
- if value
21
- @store.delete(key_for(key))
22
- value
23
- end
24
- end
25
-
26
- def clear(options = {})
27
- @store.clear
28
- nil
29
- end
30
-
31
- def close
32
- @store.close
33
- nil
34
- end
35
- end
36
- end
data/lib/juno/yaml.rb DELETED
@@ -1,9 +0,0 @@
1
- require 'yaml/store'
2
-
3
- module Juno
4
- class YAML < Juno::PStore
5
- def new_store(options)
6
- ::YAML::Store.new(options[:file])
7
- end
8
- end
9
- end