doeskeyvalue 0.9.0 → 0.9.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/Gemfile +1 -1
- data/Gemfile.lock +2 -2
- data/VERSION +1 -1
- data/doeskeyvalue.gemspec +5 -5
- data/lib/doeskeyvalue/accessors.rb +4 -4
- data/spec/doeskeyvalue/column_storage_spec.rb +15 -8
- data/spec/doeskeyvalue/table_storage_spec.rb +12 -13
- metadata +5 -5
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
rdoc
|
26
26
|
json (1.7.5)
|
27
27
|
multi_json (1.3.6)
|
28
|
-
rake (0.
|
28
|
+
rake (10.0.3)
|
29
29
|
rdoc (3.12)
|
30
30
|
json (~> 1.4)
|
31
31
|
rspec (2.11.0)
|
@@ -45,7 +45,7 @@ PLATFORMS
|
|
45
45
|
DEPENDENCIES
|
46
46
|
activerecord (~> 3.2.0)
|
47
47
|
activesupport (~> 3.2.0)
|
48
|
-
bundler (~> 1.1
|
48
|
+
bundler (~> 1.2.1)
|
49
49
|
hashie (~> 1.2.0)
|
50
50
|
jeweler (~> 1.8.4)
|
51
51
|
rdoc (~> 3.12)
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.1
|
data/doeskeyvalue.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "doeskeyvalue"
|
8
|
-
s.version = "0.9.
|
8
|
+
s.version = "0.9.1"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Awexome Labs"]
|
12
|
-
s.date = "
|
12
|
+
s.date = "2013-01-16"
|
13
13
|
s.description = "NoSQL-like key value stores in SQL-backed ActiveRecord objects. Arbitrary keys behave like dynamic, indexable, searchable first-order attributes."
|
14
14
|
s.email = "engineering@awexomelabs.com"
|
15
15
|
s.extra_rdoc_files = [
|
@@ -52,7 +52,7 @@ Gem::Specification.new do |s|
|
|
52
52
|
s.add_runtime_dependency(%q<activesupport>, ["~> 3.2.0"])
|
53
53
|
s.add_runtime_dependency(%q<activerecord>, ["~> 3.2.0"])
|
54
54
|
s.add_runtime_dependency(%q<hashie>, ["~> 1.2.0"])
|
55
|
-
s.add_development_dependency(%q<bundler>, ["~> 1.1
|
55
|
+
s.add_development_dependency(%q<bundler>, ["~> 1.2.1"])
|
56
56
|
s.add_development_dependency(%q<jeweler>, ["~> 1.8.4"])
|
57
57
|
s.add_development_dependency(%q<rdoc>, ["~> 3.12"])
|
58
58
|
s.add_development_dependency(%q<rspec>, [">= 2.11.0"])
|
@@ -61,7 +61,7 @@ Gem::Specification.new do |s|
|
|
61
61
|
s.add_dependency(%q<activesupport>, ["~> 3.2.0"])
|
62
62
|
s.add_dependency(%q<activerecord>, ["~> 3.2.0"])
|
63
63
|
s.add_dependency(%q<hashie>, ["~> 1.2.0"])
|
64
|
-
s.add_dependency(%q<bundler>, ["~> 1.1
|
64
|
+
s.add_dependency(%q<bundler>, ["~> 1.2.1"])
|
65
65
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
66
66
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
67
67
|
s.add_dependency(%q<rspec>, [">= 2.11.0"])
|
@@ -71,7 +71,7 @@ Gem::Specification.new do |s|
|
|
71
71
|
s.add_dependency(%q<activesupport>, ["~> 3.2.0"])
|
72
72
|
s.add_dependency(%q<activerecord>, ["~> 3.2.0"])
|
73
73
|
s.add_dependency(%q<hashie>, ["~> 1.2.0"])
|
74
|
-
s.add_dependency(%q<bundler>, ["~> 1.1
|
74
|
+
s.add_dependency(%q<bundler>, ["~> 1.2.1"])
|
75
75
|
s.add_dependency(%q<jeweler>, ["~> 1.8.4"])
|
76
76
|
s.add_dependency(%q<rdoc>, ["~> 3.12"])
|
77
77
|
s.add_dependency(%q<rspec>, [">= 2.11.0"])
|
@@ -45,7 +45,7 @@ module DoesKeyValue
|
|
45
45
|
|
46
46
|
value = blob.send(key_name)
|
47
47
|
|
48
|
-
return value
|
48
|
+
return value unless value.nil?
|
49
49
|
return key_default_value
|
50
50
|
end
|
51
51
|
|
@@ -69,11 +69,11 @@ module DoesKeyValue
|
|
69
69
|
if key_indexed
|
70
70
|
|
71
71
|
# With scope:
|
72
|
-
scope "with_#{key_name}", lambda {|value|
|
72
|
+
scope "with_#{key_name}", lambda {|value|
|
73
73
|
DoesKeyValue::Index.find_objects(self, key_name, value)
|
74
74
|
}
|
75
75
|
DoesKeyValue.log("Scope with_#{key_name} added for indexed key #{key_name}")
|
76
|
-
|
76
|
+
|
77
77
|
# Update the index after save:
|
78
78
|
if column_storage?
|
79
79
|
define_method("update_index_for_#{key_name}") do
|
@@ -124,7 +124,7 @@ module DoesKeyValue
|
|
124
124
|
DoesKeyValue::State.instance.options_for_key(self, key_name)
|
125
125
|
end
|
126
126
|
|
127
|
-
|
127
|
+
|
128
128
|
private
|
129
129
|
|
130
130
|
# Define a new key for a class:
|
@@ -7,7 +7,7 @@ require File.expand_path(File.dirname(__FILE__)+"/../spec_helper")
|
|
7
7
|
# Create schema for sample User model for testing column-based storage:
|
8
8
|
ActiveRecord::Base.connection.drop_table(:users) if ActiveRecord::Base.connection.table_exists?(:users)
|
9
9
|
ActiveRecord::Base.connection.create_table(:users) do |t|
|
10
|
-
t.string :name
|
10
|
+
t.string :name
|
11
11
|
t.string :email
|
12
12
|
t.text :settings
|
13
13
|
t.timestamps
|
@@ -42,6 +42,8 @@ class User < ActiveRecord::Base
|
|
42
42
|
has_key :bool_key, :type=>:boolean
|
43
43
|
has_key :date_key, :type=>:datetime
|
44
44
|
has_key :default_val_key, :default=>"The Default"
|
45
|
+
has_key :default_val_key_bool_true, :type=>:boolean, :default=>true
|
46
|
+
has_key :default_val_key_bool_false, :type=>:boolean, :default=>false
|
45
47
|
has_key :indexless_key, :index=>false
|
46
48
|
end
|
47
49
|
|
@@ -78,6 +80,11 @@ describe "column_storage" do
|
|
78
80
|
@user.default_val_key.should == "The Default"
|
79
81
|
end
|
80
82
|
|
83
|
+
it "returns default value for boolean keys" do
|
84
|
+
@user.default_val_key_bool_true.should be_true
|
85
|
+
@user.default_val_key_bool_false.should be_false
|
86
|
+
end
|
87
|
+
|
81
88
|
it "saves and returns the same value for keys" do
|
82
89
|
@user.string_key = "Ron Swanson"
|
83
90
|
@user.save
|
@@ -85,31 +92,31 @@ describe "column_storage" do
|
|
85
92
|
@user.string_key.should == "Ron Swanson"
|
86
93
|
end
|
87
94
|
|
88
|
-
it "sets a string value when assigned" do
|
95
|
+
it "sets a string value when assigned" do
|
89
96
|
@user.string_key = "Hello"
|
90
97
|
@user.string_key.should == "Hello"
|
91
98
|
end
|
92
99
|
|
93
|
-
it "sets an integer value when assigned" do
|
100
|
+
it "sets an integer value when assigned" do
|
94
101
|
@user.integer_key = 123
|
95
102
|
@user.integer_key.should == 123
|
96
103
|
@user.integer_key.class.should == Fixnum
|
97
104
|
end
|
98
|
-
|
99
|
-
it "sets a decimal value when assigned" do
|
105
|
+
|
106
|
+
it "sets a decimal value when assigned" do
|
100
107
|
@user.decimal_key = 12.21
|
101
108
|
@user.decimal_key.should == 12.21
|
102
109
|
@user.decimal_key.class.should == Float
|
103
110
|
end
|
104
|
-
|
105
|
-
it "sets a boolean value when assigned" do
|
111
|
+
|
112
|
+
it "sets a boolean value when assigned" do
|
106
113
|
@user.bool_key = true
|
107
114
|
@user.bool_key.should be_true
|
108
115
|
@user.bool_key = false
|
109
116
|
@user.bool_key.should be_false
|
110
117
|
end
|
111
118
|
|
112
|
-
it "sets a datetime value when assigned" do
|
119
|
+
it "sets a datetime value when assigned" do
|
113
120
|
d0 = DateTime.now
|
114
121
|
@user.date_key = d0
|
115
122
|
@user.date_key.should == d0
|
@@ -8,7 +8,7 @@
|
|
8
8
|
ActiveRecord::Base.connection.drop_table(:posts) if ActiveRecord::Base.connection.table_exists?(:posts)
|
9
9
|
ActiveRecord::Base.connection.create_table(:posts) do |t|
|
10
10
|
t.integer :user_id
|
11
|
-
t.string :title
|
11
|
+
t.string :title
|
12
12
|
t.text :body
|
13
13
|
t.timestamps
|
14
14
|
end
|
@@ -86,35 +86,34 @@ describe "table_storage" do
|
|
86
86
|
@post.string_key.should == "Ron Swanson"
|
87
87
|
end
|
88
88
|
|
89
|
-
it "sets a string value when assigned" do
|
89
|
+
it "sets a string value when assigned" do
|
90
90
|
@post.string_key = "Hello"
|
91
91
|
@post.string_key.should == "Hello"
|
92
92
|
end
|
93
93
|
|
94
|
-
it "sets an integer value when assigned" do
|
94
|
+
it "sets an integer value when assigned" do
|
95
95
|
@post.integer_key = 123
|
96
96
|
@post.integer_key.should == 123
|
97
97
|
@post.integer_key.class.should == Fixnum
|
98
98
|
end
|
99
|
-
|
100
|
-
it "sets a decimal value when assigned" do
|
99
|
+
|
100
|
+
it "sets a decimal value when assigned" do
|
101
101
|
@post.decimal_key = 12.21
|
102
102
|
@post.decimal_key.should == 12.21
|
103
|
-
@post.decimal_key.class.should == Float
|
103
|
+
# DB implementation dependent: @post.decimal_key.class.should == Float
|
104
104
|
end
|
105
|
-
|
106
|
-
it "sets a boolean value when assigned" do
|
105
|
+
|
106
|
+
it "sets a boolean value when assigned" do
|
107
107
|
@post.bool_key = true
|
108
108
|
@post.bool_key.should be_true
|
109
109
|
@post.bool_key = false
|
110
110
|
@post.bool_key.should be_false
|
111
111
|
end
|
112
112
|
|
113
|
-
it "sets a datetime value when assigned" do
|
114
|
-
d0 =
|
113
|
+
it "sets a datetime value when assigned" do
|
114
|
+
d0 = Time.now
|
115
115
|
@post.date_key = d0
|
116
116
|
@post.date_key.should == d0
|
117
|
-
@post.date_key.class.should == DateTime
|
118
117
|
end
|
119
118
|
|
120
119
|
it "defines with_ scope for indexed keys" do
|
@@ -130,8 +129,8 @@ describe "table_storage" do
|
|
130
129
|
it "finds objects via the scope and index" do
|
131
130
|
@post.string_key = "Champion"
|
132
131
|
@post.save
|
133
|
-
find_results =
|
134
|
-
find_results.
|
132
|
+
find_results = Post.with_string_key("Champion")
|
133
|
+
find_results.count.should == 1
|
135
134
|
find_results.first.should == @post
|
136
135
|
end
|
137
136
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: doeskeyvalue
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.9.
|
4
|
+
version: 0.9.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2013-01-16 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: activesupport
|
@@ -66,7 +66,7 @@ dependencies:
|
|
66
66
|
requirements:
|
67
67
|
- - ~>
|
68
68
|
- !ruby/object:Gem::Version
|
69
|
-
version: 1.1
|
69
|
+
version: 1.2.1
|
70
70
|
type: :development
|
71
71
|
prerelease: false
|
72
72
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -74,7 +74,7 @@ dependencies:
|
|
74
74
|
requirements:
|
75
75
|
- - ~>
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: 1.1
|
77
|
+
version: 1.2.1
|
78
78
|
- !ruby/object:Gem::Dependency
|
79
79
|
name: jeweler
|
80
80
|
requirement: !ruby/object:Gem::Requirement
|
@@ -184,7 +184,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
184
184
|
version: '0'
|
185
185
|
segments:
|
186
186
|
- 0
|
187
|
-
hash:
|
187
|
+
hash: 2437457673402321684
|
188
188
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
189
189
|
none: false
|
190
190
|
requirements:
|