daybreak 0.2.2 → 0.2.3
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/lib/daybreak/serializer.rb +31 -21
- data/lib/daybreak/version.rb +1 -1
- data/test/test.rb +16 -0
- metadata +16 -15
data/lib/daybreak/serializer.rb
CHANGED
@@ -1,14 +1,43 @@
|
|
1
1
|
module Daybreak
|
2
2
|
module Serializer
|
3
|
+
# Serializer which only encodes key in binary
|
4
|
+
# @api public
|
5
|
+
class None
|
6
|
+
# (see Daybreak::Serializer::Default#key_for)
|
7
|
+
if ''.respond_to? :force_encoding
|
8
|
+
def key_for(key)
|
9
|
+
if key.encoding != Encoding::BINARY
|
10
|
+
key = key.dup if key.frozen?
|
11
|
+
key.force_encoding(Encoding::BINARY)
|
12
|
+
end
|
13
|
+
key
|
14
|
+
end
|
15
|
+
else
|
16
|
+
def key_for(key)
|
17
|
+
key
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
# (see Daybreak::Serializer::Default#dump)
|
22
|
+
def dump(value)
|
23
|
+
value
|
24
|
+
end
|
25
|
+
|
26
|
+
# (see Daybreak::Serializer::Default#load)
|
27
|
+
def load(value)
|
28
|
+
value
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
3
32
|
# Default serializer which converts
|
4
33
|
# keys to strings and marshalls values
|
5
34
|
# @api public
|
6
|
-
class Default
|
35
|
+
class Default < None
|
7
36
|
# Transform the key to a string
|
8
37
|
# @param [Object] key
|
9
38
|
# @return [String] key transformed to string
|
10
39
|
def key_for(key)
|
11
|
-
key.to_s
|
40
|
+
super(key.to_s)
|
12
41
|
end
|
13
42
|
|
14
43
|
# Serialize a value
|
@@ -25,24 +54,5 @@ module Daybreak
|
|
25
54
|
Marshal.load(value)
|
26
55
|
end
|
27
56
|
end
|
28
|
-
|
29
|
-
# Serializer which does nothing
|
30
|
-
# @api public
|
31
|
-
class None
|
32
|
-
# (see Daybreak::Serializer::Default#key_for)
|
33
|
-
def key_for(key)
|
34
|
-
key
|
35
|
-
end
|
36
|
-
|
37
|
-
# (see Daybreak::Serializer::Default#dump)
|
38
|
-
def dump(value)
|
39
|
-
value
|
40
|
-
end
|
41
|
-
|
42
|
-
# (see Daybreak::Serializer::Default#load)
|
43
|
-
def load(value)
|
44
|
-
value
|
45
|
-
end
|
46
|
-
end
|
47
57
|
end
|
48
58
|
end
|
data/lib/daybreak/version.rb
CHANGED
data/test/test.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# encoding: utf-8
|
1
2
|
require 'minitest/autorun'
|
2
3
|
require 'minitest/benchmark'
|
3
4
|
|
@@ -21,6 +22,13 @@ describe Daybreak::DB do
|
|
21
22
|
assert_equal @db.length, 1
|
22
23
|
end
|
23
24
|
|
25
|
+
it 'should support frozen key' do
|
26
|
+
key = 'key'
|
27
|
+
key.freeze
|
28
|
+
@db[key] = 'value'
|
29
|
+
assert_equal @db[key], 'value'
|
30
|
+
end
|
31
|
+
|
24
32
|
it 'should support batch inserts' do
|
25
33
|
@db.update(1 => :a, 2 => :b)
|
26
34
|
assert_equal @db[1], :a
|
@@ -388,6 +396,14 @@ describe Daybreak::DB do
|
|
388
396
|
assert @db.bytesize > 0
|
389
397
|
end
|
390
398
|
|
399
|
+
it 'should accept utf-8 keys' do
|
400
|
+
@db['🌎'] = '🌎'
|
401
|
+
@db.flush
|
402
|
+
db = Daybreak::DB.new DB_PATH
|
403
|
+
assert_equal db['🌎'], '🌎'
|
404
|
+
db.close
|
405
|
+
end
|
406
|
+
|
391
407
|
after do
|
392
408
|
@db.clear
|
393
409
|
@db.close
|
metadata
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: daybreak
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.2
|
5
4
|
prerelease:
|
5
|
+
version: 0.2.3
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Jeff Larson
|
@@ -10,40 +10,40 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-01-
|
13
|
+
date: 2013-01-21 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
|
-
|
17
|
-
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
16
|
+
version_requirements: !ruby/object:Gem::Requirement
|
19
17
|
requirements:
|
20
18
|
- - ! '>='
|
21
19
|
- !ruby/object:Gem::Version
|
22
20
|
version: '0'
|
21
|
+
none: false
|
22
|
+
name: rake
|
23
23
|
type: :development
|
24
24
|
prerelease: false
|
25
|
-
|
26
|
-
none: false
|
25
|
+
requirement: !ruby/object:Gem::Requirement
|
27
26
|
requirements:
|
28
27
|
- - ! '>='
|
29
28
|
- !ruby/object:Gem::Version
|
30
29
|
version: '0'
|
31
|
-
- !ruby/object:Gem::Dependency
|
32
|
-
name: minitest
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
34
30
|
none: false
|
31
|
+
- !ruby/object:Gem::Dependency
|
32
|
+
version_requirements: !ruby/object:Gem::Requirement
|
35
33
|
requirements:
|
36
34
|
- - ! '>='
|
37
35
|
- !ruby/object:Gem::Version
|
38
36
|
version: '0'
|
37
|
+
none: false
|
38
|
+
name: minitest
|
39
39
|
type: :development
|
40
40
|
prerelease: false
|
41
|
-
|
42
|
-
none: false
|
41
|
+
requirement: !ruby/object:Gem::Requirement
|
43
42
|
requirements:
|
44
43
|
- - ! '>='
|
45
44
|
- !ruby/object:Gem::Version
|
46
45
|
version: '0'
|
46
|
+
none: false
|
47
47
|
description: Incredibly fast pure-ruby key-value store
|
48
48
|
email:
|
49
49
|
- thejefflarson@gmail.com
|
@@ -83,20 +83,20 @@ rdoc_options: []
|
|
83
83
|
require_paths:
|
84
84
|
- lib
|
85
85
|
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
86
|
requirements:
|
88
87
|
- - ! '>='
|
89
88
|
- !ruby/object:Gem::Version
|
90
89
|
version: '0'
|
91
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
92
90
|
none: false
|
91
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
93
92
|
requirements:
|
94
93
|
- - ! '>='
|
95
94
|
- !ruby/object:Gem::Version
|
96
95
|
version: '0'
|
96
|
+
none: false
|
97
97
|
requirements: []
|
98
98
|
rubyforge_project:
|
99
|
-
rubygems_version: 1.8.
|
99
|
+
rubygems_version: 1.8.23
|
100
100
|
signing_key:
|
101
101
|
specification_version: 3
|
102
102
|
summary: Daybreak provides an incredibly fast pure-ruby in memory key-value store,
|
@@ -105,3 +105,4 @@ test_files:
|
|
105
105
|
- test/prof.rb
|
106
106
|
- test/test.rb
|
107
107
|
- test/test_helper.rb
|
108
|
+
has_rdoc:
|