juno 0.3.1 → 0.4.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 (176) hide show
  1. data/README.md +2 -277
  2. data/juno.gemspec +6 -5
  3. data/lib/juno.rb +3 -122
  4. metadata +23 -307
  5. data/.gitignore +0 -6
  6. data/.travis.yml +0 -30
  7. data/Gemfile +0 -56
  8. data/LICENSE +0 -20
  9. data/Rakefile +0 -33
  10. data/SPEC.md +0 -71
  11. data/benchmarks/run.rb +0 -180
  12. data/lib/juno/adapters/activerecord.rb +0 -74
  13. data/lib/juno/adapters/cassandra.rb +0 -89
  14. data/lib/juno/adapters/cookie.rb +0 -35
  15. data/lib/juno/adapters/couch.rb +0 -57
  16. data/lib/juno/adapters/datamapper.rb +0 -76
  17. data/lib/juno/adapters/dbm.rb +0 -25
  18. data/lib/juno/adapters/file.rb +0 -60
  19. data/lib/juno/adapters/fog.rb +0 -51
  20. data/lib/juno/adapters/gdbm.rb +0 -25
  21. data/lib/juno/adapters/hbase.rb +0 -64
  22. data/lib/juno/adapters/leveldb.rb +0 -35
  23. data/lib/juno/adapters/localmemcache.rb +0 -26
  24. data/lib/juno/adapters/lruhash.rb +0 -83
  25. data/lib/juno/adapters/memcached.rb +0 -11
  26. data/lib/juno/adapters/memcached_dalli.rb +0 -51
  27. data/lib/juno/adapters/memcached_native.rb +0 -52
  28. data/lib/juno/adapters/memory.rb +0 -32
  29. data/lib/juno/adapters/mongo.rb +0 -50
  30. data/lib/juno/adapters/null.rb +0 -30
  31. data/lib/juno/adapters/pstore.rb +0 -58
  32. data/lib/juno/adapters/redis.rb +0 -56
  33. data/lib/juno/adapters/riak.rb +0 -57
  34. data/lib/juno/adapters/sdbm.rb +0 -35
  35. data/lib/juno/adapters/sequel.rb +0 -67
  36. data/lib/juno/adapters/sqlite.rb +0 -61
  37. data/lib/juno/adapters/tokyocabinet.rb +0 -41
  38. data/lib/juno/adapters/yaml.rb +0 -15
  39. data/lib/juno/base.rb +0 -62
  40. data/lib/juno/builder.rb +0 -39
  41. data/lib/juno/cache.rb +0 -78
  42. data/lib/juno/expires.rb +0 -47
  43. data/lib/juno/lock.rb +0 -44
  44. data/lib/juno/logger.rb +0 -86
  45. data/lib/juno/proxy.rb +0 -72
  46. data/lib/juno/stack.rb +0 -72
  47. data/lib/juno/transformer.rb +0 -176
  48. data/lib/juno/version.rb +0 -5
  49. data/lib/rack/cache/juno.rb +0 -93
  50. data/lib/rack/juno_cookies.rb +0 -64
  51. data/lib/rack/session/juno.rb +0 -63
  52. data/spec/generate.rb +0 -1068
  53. data/spec/helper.rb +0 -78
  54. data/spec/juno/adapter_activerecord_spec.rb +0 -27
  55. data/spec/juno/adapter_cassandra_spec.rb +0 -13
  56. data/spec/juno/adapter_cookie_spec.rb +0 -13
  57. data/spec/juno/adapter_couch_spec.rb +0 -13
  58. data/spec/juno/adapter_datamapper_spec.rb +0 -44
  59. data/spec/juno/adapter_dbm_spec.rb +0 -13
  60. data/spec/juno/adapter_file_spec.rb +0 -13
  61. data/spec/juno/adapter_fog_spec.rb +0 -18
  62. data/spec/juno/adapter_gdbm_spec.rb +0 -13
  63. data/spec/juno/adapter_hbase_spec.rb +0 -13
  64. data/spec/juno/adapter_leveldb_spec.rb +0 -13
  65. data/spec/juno/adapter_localmemcache_spec.rb +0 -13
  66. data/spec/juno/adapter_lruhash_spec.rb +0 -26
  67. data/spec/juno/adapter_memcached_dalli_spec.rb +0 -14
  68. data/spec/juno/adapter_memcached_native_spec.rb +0 -14
  69. data/spec/juno/adapter_memcached_spec.rb +0 -14
  70. data/spec/juno/adapter_memory_spec.rb +0 -34
  71. data/spec/juno/adapter_mongo_spec.rb +0 -13
  72. data/spec/juno/adapter_pstore_spec.rb +0 -16
  73. data/spec/juno/adapter_redis_spec.rb +0 -14
  74. data/spec/juno/adapter_riak_spec.rb +0 -17
  75. data/spec/juno/adapter_sdbm_spec.rb +0 -13
  76. data/spec/juno/adapter_sequel_spec.rb +0 -13
  77. data/spec/juno/adapter_sqlite_spec.rb +0 -13
  78. data/spec/juno/adapter_tokyocabinet_bdb_spec.rb +0 -13
  79. data/spec/juno/adapter_tokyocabinet_hdb_spec.rb +0 -13
  80. data/spec/juno/adapter_yaml_spec.rb +0 -16
  81. data/spec/juno/cache_file_memory_spec.rb +0 -29
  82. data/spec/juno/cache_memory_null_spec.rb +0 -18
  83. data/spec/juno/expires_file_spec.rb +0 -71
  84. data/spec/juno/expires_memory_spec.rb +0 -49
  85. data/spec/juno/lock_spec.rb +0 -37
  86. data/spec/juno/null_adapter_spec.rb +0 -22
  87. data/spec/juno/proxy_expires_memory_spec.rb +0 -51
  88. data/spec/juno/proxy_redis_spec.rb +0 -18
  89. data/spec/juno/simple_activerecord_spec.rb +0 -45
  90. data/spec/juno/simple_activerecord_with_expires_spec.rb +0 -46
  91. data/spec/juno/simple_cassandra_spec.rb +0 -46
  92. data/spec/juno/simple_couch_spec.rb +0 -45
  93. data/spec/juno/simple_couch_with_expires_spec.rb +0 -46
  94. data/spec/juno/simple_datamapper_spec.rb +0 -47
  95. data/spec/juno/simple_datamapper_with_expires_spec.rb +0 -48
  96. data/spec/juno/simple_datamapper_with_repository_spec.rb +0 -47
  97. data/spec/juno/simple_dbm_spec.rb +0 -45
  98. data/spec/juno/simple_dbm_with_expires_spec.rb +0 -46
  99. data/spec/juno/simple_file_spec.rb +0 -45
  100. data/spec/juno/simple_file_with_expires_spec.rb +0 -46
  101. data/spec/juno/simple_fog_spec.rb +0 -50
  102. data/spec/juno/simple_fog_with_expires_spec.rb +0 -52
  103. data/spec/juno/simple_gdbm_spec.rb +0 -45
  104. data/spec/juno/simple_gdbm_with_expires_spec.rb +0 -46
  105. data/spec/juno/simple_hashfile_spec.rb +0 -45
  106. data/spec/juno/simple_hashfile_with_expires_spec.rb +0 -46
  107. data/spec/juno/simple_hbase_spec.rb +0 -45
  108. data/spec/juno/simple_hbase_with_expires_spec.rb +0 -46
  109. data/spec/juno/simple_leveldb_spec.rb +0 -45
  110. data/spec/juno/simple_leveldb_with_expires_spec.rb +0 -46
  111. data/spec/juno/simple_localmemcache_spec.rb +0 -45
  112. data/spec/juno/simple_localmemcache_with_expires_spec.rb +0 -46
  113. data/spec/juno/simple_lruhash_spec.rb +0 -45
  114. data/spec/juno/simple_lruhash_with_expires_spec.rb +0 -46
  115. data/spec/juno/simple_memcached_dalli_spec.rb +0 -46
  116. data/spec/juno/simple_memcached_native_spec.rb +0 -46
  117. data/spec/juno/simple_memcached_spec.rb +0 -46
  118. data/spec/juno/simple_memory_spec.rb +0 -45
  119. data/spec/juno/simple_memory_with_compress_spec.rb +0 -45
  120. data/spec/juno/simple_memory_with_expires_spec.rb +0 -46
  121. data/spec/juno/simple_memory_with_json_key_serializer_spec.rb +0 -32
  122. data/spec/juno/simple_memory_with_json_md5_key_serializer_spec.rb +0 -32
  123. data/spec/juno/simple_memory_with_json_serializer_spec.rb +0 -22
  124. data/spec/juno/simple_memory_with_json_value_serializer_spec.rb +0 -29
  125. data/spec/juno/simple_memory_with_prefix_spec.rb +0 -45
  126. data/spec/juno/simple_memory_with_quicklz_compress_spec.rb +0 -45
  127. data/spec/juno/simple_mongo_spec.rb +0 -45
  128. data/spec/juno/simple_mongo_with_expires_spec.rb +0 -46
  129. data/spec/juno/simple_null_spec.rb +0 -32
  130. data/spec/juno/simple_pstore_spec.rb +0 -45
  131. data/spec/juno/simple_pstore_with_expires_spec.rb +0 -46
  132. data/spec/juno/simple_redis_spec.rb +0 -46
  133. data/spec/juno/simple_riak_spec.rb +0 -49
  134. data/spec/juno/simple_riak_with_expires_spec.rb +0 -50
  135. data/spec/juno/simple_sdbm_spec.rb +0 -45
  136. data/spec/juno/simple_sdbm_with_expires_spec.rb +0 -46
  137. data/spec/juno/simple_sequel_spec.rb +0 -45
  138. data/spec/juno/simple_sequel_with_expires_spec.rb +0 -46
  139. data/spec/juno/simple_sqlite_spec.rb +0 -45
  140. data/spec/juno/simple_sqlite_with_expires_spec.rb +0 -46
  141. data/spec/juno/simple_tokyocabinet_spec.rb +0 -45
  142. data/spec/juno/simple_tokyocabinet_with_expires_spec.rb +0 -46
  143. data/spec/juno/simple_yaml_spec.rb +0 -44
  144. data/spec/juno/simple_yaml_with_expires_spec.rb +0 -45
  145. data/spec/juno/stack_file_memory_spec.rb +0 -20
  146. data/spec/juno/stack_memory_file_spec.rb +0 -19
  147. data/spec/juno/transformer_bencode_spec.rb +0 -25
  148. data/spec/juno/transformer_bert_spec.rb +0 -25
  149. data/spec/juno/transformer_bson_spec.rb +0 -25
  150. data/spec/juno/transformer_bzip2_spec.rb +0 -22
  151. data/spec/juno/transformer_json_spec.rb +0 -25
  152. data/spec/juno/transformer_lzma_spec.rb +0 -22
  153. data/spec/juno/transformer_lzo_spec.rb +0 -22
  154. data/spec/juno/transformer_marshal_base64_spec.rb +0 -48
  155. data/spec/juno/transformer_marshal_escape_spec.rb +0 -48
  156. data/spec/juno/transformer_marshal_hmac_spec.rb +0 -48
  157. data/spec/juno/transformer_marshal_md5_spec.rb +0 -48
  158. data/spec/juno/transformer_marshal_md5_spread_spec.rb +0 -48
  159. data/spec/juno/transformer_marshal_prefix_spec.rb +0 -48
  160. data/spec/juno/transformer_marshal_rmd160_spec.rb +0 -48
  161. data/spec/juno/transformer_marshal_sha1_spec.rb +0 -48
  162. data/spec/juno/transformer_marshal_sha256_spec.rb +0 -48
  163. data/spec/juno/transformer_marshal_sha384_spec.rb +0 -48
  164. data/spec/juno/transformer_marshal_sha512_spec.rb +0 -48
  165. data/spec/juno/transformer_marshal_uuencode_spec.rb +0 -48
  166. data/spec/juno/transformer_msgpack_spec.rb +0 -25
  167. data/spec/juno/transformer_ox_spec.rb +0 -46
  168. data/spec/juno/transformer_quicklz_spec.rb +0 -22
  169. data/spec/juno/transformer_snappy_spec.rb +0 -22
  170. data/spec/juno/transformer_tnet_spec.rb +0 -25
  171. data/spec/juno/transformer_yaml_spec.rb +0 -46
  172. data/spec/juno/transformer_zlib_spec.rb +0 -22
  173. data/spec/junospecs.rb +0 -2284
  174. data/spec/rack/cache_juno_spec.rb +0 -355
  175. data/spec/rack/juno_cookies_spec.rb +0 -81
  176. data/spec/rack/session_juno_spec.rb +0 -305
@@ -1,89 +0,0 @@
1
- # Copyright: 2011 TMX Credit
2
- # Author: Potapov Sergey (aka Blake)
3
-
4
- require 'cassandra'
5
-
6
- module Juno
7
- module Adapters
8
- # Cassandra backend
9
- # @api public
10
- class Cassandra < Base
11
- # Constructor
12
- #
13
- # @param [Hash] options
14
- #
15
- # Options:
16
- # * :keyspace - Cassandra keyspace (default 'juno')
17
- # * :column_family - Cassandra column family (default 'juno')
18
- # * :host - Server host name (default 127.0.0.1)
19
- # * :port - Server port (default 9160)
20
- def initialize(options = {})
21
- options[:host] ||= '127.0.0.1'
22
- options[:port] ||= 9160
23
- keyspace = (options[:keyspace] ||= 'juno')
24
- @cf = (options[:column_family] || 'juno').to_sym
25
- @client = ::Cassandra.new('system', "#{options[:host]}:#{options[:port]}")
26
- unless @client.keyspaces.include?(keyspace)
27
- cf_def = ::Cassandra::ColumnFamily.new(:keyspace => keyspace, :name => @cf.to_s)
28
- ks_def = ::Cassandra::Keyspace.new(:name => keyspace,
29
- :strategy_class => 'SimpleStrategy',
30
- :strategy_options => { 'replication_factor' => '1' },
31
- :replication_factor => 1,
32
- :cf_defs => [cf_def])
33
- # Wait for keyspace to be created (issue #24)
34
- 10.times do
35
- begin
36
- @client.add_keyspace(ks_def)
37
- rescue Exception => ex
38
- puts "Cassandra: #{ex.message}"
39
- end
40
- break if @client.keyspaces.include?(keyspace)
41
- sleep 0.1
42
- end
43
- end
44
- @client.keyspace = keyspace
45
- end
46
-
47
- def key?(key, options = {})
48
- if @client.exists?(@cf, key)
49
- if options.include?(:expires) && (value = load(key))
50
- store(key, value, options)
51
- end
52
- true
53
- else
54
- false
55
- end
56
- end
57
-
58
- def load(key, options = {})
59
- value = @client.get(@cf, key)
60
- if value
61
- if options.include?(:expires)
62
- store(key, value['value'], options)
63
- else
64
- value['value']
65
- end
66
- end
67
- end
68
-
69
- def delete(key, options = {})
70
- if value = load(key, options)
71
- @client.remove(@cf, key)
72
- value
73
- end
74
- end
75
-
76
- def store(key, value, options = {})
77
- @client.insert(@cf, key, {'value' => value}, :ttl => options[:expires])
78
- value
79
- end
80
-
81
- def clear(options = {})
82
- @client.each_key(@cf) do |key|
83
- delete(key)
84
- end
85
- self
86
- end
87
- end
88
- end
89
- end
@@ -1,35 +0,0 @@
1
- module Juno
2
- module Adapters
3
- class Cookie < Memory
4
- attr_reader :cookies
5
-
6
- def initialize(options = {})
7
- super
8
- @options, @cookies = options, {}
9
- end
10
-
11
- def store(key, value, options = {})
12
- cookie = @options.merge(options)
13
- cookie[:value] = value
14
- cookie[:expires] += Time.now.to_i if cookie[:expires]
15
- @cookies[key] = cookie
16
- super
17
- end
18
-
19
- def delete(key, options = {})
20
- @cookies[key] = nil
21
- super
22
- end
23
-
24
- def clear(options = {})
25
- @memory.each_key { |key| @cookies[key] = nil }
26
- super
27
- self
28
- end
29
-
30
- def reset(cookies)
31
- @cookies, @memory = {}, cookies
32
- end
33
- end
34
- end
35
- end
@@ -1,57 +0,0 @@
1
- require 'couchrest'
2
-
3
- module Juno
4
- module Adapters
5
- # CouchDB backend
6
- # @api public
7
- class Couch < Base
8
- # Constructor
9
- #
10
- # @param [Hash] options
11
- #
12
- # Options:
13
- # * :db - Couch database
14
- def initialize(options = {})
15
- raise ArgumentError, 'Option :db is required' unless options[:db]
16
- @db = ::CouchRest.database!(options[:db])
17
- end
18
-
19
- def key?(key, options = {})
20
- @db.get(key) != nil
21
- rescue RestClient::ResourceNotFound
22
- false
23
- end
24
-
25
- def load(key, options = {})
26
- @db.get(key)['value']
27
- rescue RestClient::ResourceNotFound
28
- nil
29
- end
30
-
31
- def store(key, value, options = {})
32
- doc = {'_id' => key, 'value' => value}
33
- begin
34
- doc['_rev'] = @db.get(key)['_rev']
35
- rescue RestClient::ResourceNotFound
36
- end
37
- @db.save_doc(doc)
38
- value
39
- rescue RestClient::RequestFailed
40
- value
41
- end
42
-
43
- def delete(key, options = {})
44
- value = @db.get(key)
45
- @db.delete_doc('_id' => value['_id'], '_rev' => value['_rev'])
46
- value['value']
47
- rescue RestClient::ResourceNotFound
48
- nil
49
- end
50
-
51
- def clear(options = {})
52
- @db.recreate!
53
- self
54
- end
55
- end
56
- end
57
- end
@@ -1,76 +0,0 @@
1
- require 'dm-core'
2
- require 'dm-migrations'
3
-
4
- module Juno
5
- module Adapters
6
- # Datamapper backend
7
- # @api public
8
- class DataMapper < Base
9
- class Store
10
- include ::DataMapper::Resource
11
- property :k, Text, :key => true
12
- property :v, Text, :lazy => false
13
- end
14
-
15
- # Constructor
16
- #
17
- # @param [Hash] options
18
- #
19
- # Options:
20
- # * :setup - Datamapper setup string
21
- # * :repository - Repository name (default :juno)
22
- # * :table - Table name (default :juno)
23
- def initialize(options = {})
24
- raise ArgumentError, 'Option :setup is required' unless options[:setup]
25
- @repository = options.delete(:repository) || :juno
26
- Store.storage_names[@repository] = (options.delete(:table) || :juno).to_s
27
- ::DataMapper.setup(@repository, options[:setup])
28
- context { Store.auto_upgrade! }
29
- end
30
-
31
- def key?(key, options = {})
32
- context { Store.get(key) != nil }
33
- end
34
-
35
- def load(key, options = {})
36
- context do
37
- record = Store.get(key)
38
- record ? record.v : nil
39
- end
40
- end
41
-
42
- def store(key, value, options = {})
43
- context do
44
- record = Store.get(key)
45
- if record
46
- record.update(:k => key, :v => value)
47
- else
48
- Store.create(:k => key, :v => value)
49
- end
50
- value
51
- end
52
- end
53
-
54
- def delete(key, options = {})
55
- context do
56
- if record = Store.get(key)
57
- value = record.v
58
- record.destroy!
59
- value
60
- end
61
- end
62
- end
63
-
64
- def clear(options = {})
65
- context { Store.all.destroy! }
66
- self
67
- end
68
-
69
- private
70
-
71
- def context
72
- ::DataMapper.repository(@repository) { yield }
73
- end
74
- end
75
- end
76
- end
@@ -1,25 +0,0 @@
1
- require 'dbm'
2
-
3
- module Juno
4
- module Adapters
5
- # DBM backend (Berkeley DB)
6
- # @api public
7
- class DBM < Memory
8
- # Constructor
9
- #
10
- # @param [Hash] options
11
- #
12
- # Options:
13
- # * :file - Database file
14
- def initialize(options = {})
15
- raise ArgumentError, 'Option :file is required' unless options[:file]
16
- @memory = ::DBM.new(options[:file])
17
- end
18
-
19
- def close
20
- @memory.close
21
- nil
22
- end
23
- end
24
- end
25
- end
@@ -1,60 +0,0 @@
1
- require 'fileutils'
2
-
3
- module Juno
4
- module Adapters
5
- # Filesystem backend
6
- # @api public
7
- class File < Base
8
- def initialize(options = {})
9
- raise ArgumentError, 'Option :dir is required' unless @dir = options[:dir]
10
- FileUtils.mkpath(@dir)
11
- raise "#{@dir} is not a directory" unless ::File.directory?(@dir)
12
- end
13
-
14
- def key?(key, options = {})
15
- ::File.exist?(store_path(key))
16
- end
17
-
18
- def load(key, options = {})
19
- ::File.read(store_path(key))
20
- rescue Errno::ENOENT
21
- end
22
-
23
- def store(key, value, options = {})
24
- path = store_path(key)
25
- temp_file = ::File.join(@dir, "value-#{$$}-#{Thread.current.object_id}")
26
- FileUtils.mkpath(::File.dirname(path))
27
- ::File.open(temp_file, 'wb') {|file| file.write(value) }
28
- ::File.unlink(path) if ::File.exist?(path)
29
- ::File.rename(temp_file, path)
30
- value
31
- rescue Errno::ENOENT
32
- ::File.unlink(temp_file) rescue nil
33
- value
34
- end
35
-
36
- def delete(key, options = {})
37
- value = load(key, options)
38
- ::File.unlink(store_path(key))
39
- value
40
- rescue Errno::ENOENT
41
- end
42
-
43
- def clear(options = {})
44
- temp_dir = "#{@dir}-#{$$}-#{Thread.current.object_id}"
45
- ::File.rename(@dir, temp_dir)
46
- FileUtils.mkpath(@dir)
47
- FileUtils.rm_rf(temp_dir)
48
- self
49
- rescue Errno::ENOENT
50
- self
51
- end
52
-
53
- protected
54
-
55
- def store_path(key)
56
- ::File.join(@dir, key)
57
- end
58
- end
59
- end
60
- end
@@ -1,51 +0,0 @@
1
- require 'fog'
2
-
3
- module Juno
4
- module Adapters
5
- # Fog backend (Cloud storage services)
6
- # @api public
7
- class Fog < Base
8
- # Constructor
9
- #
10
- # @param [Hash] options
11
- #
12
- # Options:
13
- # * :dir - Fog directory
14
- # * Other options passed to Fog::Storage#new
15
- def initialize(options = {})
16
- raise ArgumentError, 'Option :dir is required' unless dir = options.delete(:dir)
17
- storage = ::Fog::Storage.new(options)
18
- @directory = storage.directories.create(:key => dir)
19
- end
20
-
21
- def key?(key, options = {})
22
- @directory.files.head(key) != nil
23
- end
24
-
25
- def load(key, options = {})
26
- value = @directory.files.get(key)
27
- value ? value.body : nil
28
- end
29
-
30
- def delete(key, options = {})
31
- if value = @directory.files.get(key)
32
- body = value.body
33
- value.destroy
34
- body
35
- end
36
- end
37
-
38
- def store(key, value, options = {})
39
- @directory.files.create(:key => key, :body => value)
40
- value
41
- end
42
-
43
- def clear(options = {})
44
- @directory.files.all.each do |file|
45
- file.destroy
46
- end
47
- self
48
- end
49
- end
50
- end
51
- end
@@ -1,25 +0,0 @@
1
- require 'gdbm'
2
-
3
- module Juno
4
- module Adapters
5
- # GDBM backend
6
- # @api public
7
- class GDBM < Memory
8
- # Constructor
9
- #
10
- # @param [Hash] options
11
- #
12
- # Options:
13
- # * :file - Database file
14
- def initialize(options = {})
15
- raise ArgumentError, 'Option :file is required' unless options[:file]
16
- @memory = ::GDBM.new(options[:file])
17
- end
18
-
19
- def close
20
- @memory.close
21
- nil
22
- end
23
- end
24
- end
25
- end
@@ -1,64 +0,0 @@
1
- require 'hbaserb'
2
-
3
- module Juno
4
- module Adapters
5
- # HBase thrift backend
6
- # @api public
7
- class HBase < Base
8
- # Constructor
9
- #
10
- # @param [Hash] options
11
- #
12
- # Options:
13
- # * :host - Server host name (default 127.0.0.1)
14
- # * :port - Server port (default 9090)
15
- # * :table - Table name (default juno)
16
- # * :column_family - Column family (default juno)
17
- # * :column - Column (default value)
18
- def initialize(options = {})
19
- options[:host] ||= '127.0.0.1'
20
- options[:port] ||= '9090'
21
- options[:table] ||= 'juno'
22
- options[:column] ||= 'value'
23
- cf = (options[:column_family] || 'juno')
24
- @db = HBaseRb::Client.new(options[:host], options[:port])
25
- @db.create_table(options[:table], cf) unless @db.has_table?(options[:table])
26
- @table = @db.get_table(options[:table])
27
- @column = "#{cf}:#{options[:column]}"
28
- end
29
-
30
- def key?(key, options = {})
31
- @table.get(key, @column).first != nil
32
- end
33
-
34
- def load(key, options = {})
35
- value = @table.get(key, @column).first
36
- value ? value.value : nil
37
- end
38
-
39
- def delete(key, options = {})
40
- if value = load(key, options)
41
- @table.delete_row(key)
42
- value
43
- end
44
- end
45
-
46
- def store(key, value, options = {})
47
- @table.mutate_row(key, @column => value)
48
- value
49
- end
50
-
51
- def clear(options = {})
52
- @table.create_scanner do |row|
53
- @table.delete_row(row.row)
54
- end
55
- self
56
- end
57
-
58
- def close
59
- @db.close
60
- nil
61
- end
62
- end
63
- end
64
- end