active_pstore 0.5.1 → 0.5.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/active_pstore/attribute_methods.rb +2 -2
- data/lib/active_pstore/base.rb +1 -1
- data/lib/active_pstore/collection.rb +1 -1
- data/lib/active_pstore/dynamic_matchers.rb +1 -1
- data/lib/active_pstore/persistence.rb +2 -2
- data/lib/active_pstore/query_methods.rb +40 -14
- data/lib/active_pstore/version.rb +1 -1
- metadata +4 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2b31a128f4714a2baa5e88e43c445f2c7743cd1e
|
4
|
+
data.tar.gz: d1ae729a41b8cc014d7b3a1a2c4141f72dda6622
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29dbecffbc7d6c10dee23113e43fc31391c1fb73382bcdb9ef4d6b5377eee32532d2fe3774d2a8b324a075b1c077dcb2e698a2336a874c4b58e55d1983616fda
|
7
|
+
data.tar.gz: 166d03edf976f0feb8bd9fd24a8698ecc8e219acf46bbc5745d37a88d0311efbd6fe940d548bc5bbab357492f86163884a36f8ce09c347345ad759f3791403ee
|
@@ -2,7 +2,7 @@ module ActivePStore
|
|
2
2
|
module AttributeMethods
|
3
3
|
def [](attr)
|
4
4
|
if respond_to? attr.to_sym
|
5
|
-
self.
|
5
|
+
self.public_send(attr.to_sym)
|
6
6
|
else
|
7
7
|
raise "undefined method `#{attr}'"
|
8
8
|
end
|
@@ -10,7 +10,7 @@ module ActivePStore
|
|
10
10
|
|
11
11
|
def []=(attr, value)
|
12
12
|
if respond_to? "#{attr}=".to_sym
|
13
|
-
self.
|
13
|
+
self.public_send("#{attr}=".to_sym, value)
|
14
14
|
else
|
15
15
|
raise "undefined method `#{attr}='"
|
16
16
|
end
|
data/lib/active_pstore/base.rb
CHANGED
@@ -39,14 +39,14 @@ module ActivePStore
|
|
39
39
|
end
|
40
40
|
|
41
41
|
def update_attribute(attr_name, attr_value)
|
42
|
-
self.
|
42
|
+
self.public_send("#{attr_name}=", attr_value)
|
43
43
|
|
44
44
|
save
|
45
45
|
end
|
46
46
|
|
47
47
|
def update(attrs)
|
48
48
|
attrs.each do |attr_name, attr_value|
|
49
|
-
self.
|
49
|
+
self.public_send("#{attr_name}=", attr_value)
|
50
50
|
end
|
51
51
|
|
52
52
|
save
|
@@ -1,22 +1,48 @@
|
|
1
1
|
module ActivePStore
|
2
2
|
module QueryMethods
|
3
|
-
|
4
|
-
|
3
|
+
class WhereChain
|
4
|
+
def initialize(scope)
|
5
|
+
@scope = scope
|
6
|
+
end
|
7
|
+
|
8
|
+
def not(conditions)
|
9
|
+
WhereDecider.new(@scope).decide(conditions, :reject)
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
class WhereDecider
|
14
|
+
def initialize(scope)
|
15
|
+
@scope = scope
|
16
|
+
end
|
5
17
|
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
18
|
+
def decide(conditions, method)
|
19
|
+
raise 'Illegal method error.' unless %i(reject select).include? method
|
20
|
+
|
21
|
+
return @scope if conditions.empty?
|
22
|
+
|
23
|
+
conditions.each do |key, value|
|
24
|
+
@scope = @scope.public_send(method) {|obj|
|
25
|
+
case value
|
26
|
+
when Array, Range
|
27
|
+
value.include?(obj.public_send(key))
|
28
|
+
else
|
29
|
+
obj.public_send(key) == value
|
30
|
+
end
|
31
|
+
}
|
32
|
+
end
|
33
|
+
|
34
|
+
ActivePStore::Collection.new(@scope)
|
17
35
|
end
|
36
|
+
end
|
18
37
|
|
19
|
-
|
38
|
+
def where(conditions = :chain)
|
39
|
+
ret = all
|
40
|
+
|
41
|
+
if conditions == :chain
|
42
|
+
WhereChain.new(ret)
|
43
|
+
else
|
44
|
+
WhereDecider.new(ret).decide(conditions, :select)
|
45
|
+
end
|
20
46
|
end
|
21
47
|
end
|
22
48
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: active_pstore
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.5.
|
4
|
+
version: 0.5.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Koichi ITO
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-05-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -133,8 +133,9 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|
135
135
|
rubyforge_project:
|
136
|
-
rubygems_version: 2.
|
136
|
+
rubygems_version: 2.6.4
|
137
137
|
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: This library has Active Record like interface. Use pstore to store data.
|
140
140
|
test_files: []
|
141
|
+
has_rdoc:
|