active_hash 0.9.11 → 0.9.12
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/CHANGELOG +3 -0
- data/README.md +1 -1
- data/lib/active_hash/base.rb +19 -14
- data/lib/active_hash/version.rb +1 -1
- metadata +13 -41
data/CHANGELOG
CHANGED
data/README.md
CHANGED
|
@@ -339,7 +339,7 @@ Records can be accessed by looking up the field constant:
|
|
|
339
339
|
>> Country::CANADA
|
|
340
340
|
=> #<Country:0x10229fb28 @attributes={:name=>"Canada", :id=>2}
|
|
341
341
|
|
|
342
|
-
Constants are formed by first stripping all non-word characters and then upcasing the result. This means strings like "Blazing Saddles", "ReBar", "Mike & Ike" and "Ho! Ho! Ho!" become
|
|
342
|
+
Constants are formed by first stripping all non-word characters and then upcasing the result. This means strings like "Blazing Saddles", "ReBar", "Mike & Ike" and "Ho! Ho! Ho!" become BLAZING_SADDLES, REBAR, MIKE_IKE and HO_HO_HO.
|
|
343
343
|
|
|
344
344
|
The field specified as the _enum_accessor_ must contain unique data values.
|
|
345
345
|
|
data/lib/active_hash/base.rb
CHANGED
|
@@ -11,8 +11,6 @@ module ActiveHash
|
|
|
11
11
|
|
|
12
12
|
class Base
|
|
13
13
|
|
|
14
|
-
require 'set'
|
|
15
|
-
|
|
16
14
|
if respond_to?(:class_attribute)
|
|
17
15
|
class_attribute :_data, :dirty
|
|
18
16
|
else
|
|
@@ -59,7 +57,7 @@ module ActiveHash
|
|
|
59
57
|
def data=(array_of_hashes)
|
|
60
58
|
mark_dirty
|
|
61
59
|
@records = nil
|
|
62
|
-
|
|
60
|
+
reset_record_index
|
|
63
61
|
self._data = array_of_hashes
|
|
64
62
|
if array_of_hashes
|
|
65
63
|
auto_assign_fields(array_of_hashes)
|
|
@@ -75,7 +73,7 @@ module ActiveHash
|
|
|
75
73
|
validate_unique_id(record) if dirty
|
|
76
74
|
mark_dirty
|
|
77
75
|
|
|
78
|
-
|
|
76
|
+
add_to_record_index({ record.id.to_s => @records.length })
|
|
79
77
|
@records << record
|
|
80
78
|
end
|
|
81
79
|
|
|
@@ -88,20 +86,26 @@ module ActiveHash
|
|
|
88
86
|
end
|
|
89
87
|
end
|
|
90
88
|
|
|
91
|
-
def
|
|
92
|
-
@
|
|
89
|
+
def record_index
|
|
90
|
+
@record_index ||= {}
|
|
91
|
+
end
|
|
92
|
+
|
|
93
|
+
private :record_index
|
|
94
|
+
|
|
95
|
+
def reset_record_index
|
|
96
|
+
record_index.clear
|
|
93
97
|
end
|
|
94
98
|
|
|
95
|
-
private :
|
|
99
|
+
private :reset_record_index
|
|
96
100
|
|
|
97
|
-
def
|
|
98
|
-
|
|
101
|
+
def add_to_record_index(entry)
|
|
102
|
+
record_index.merge!(entry)
|
|
99
103
|
end
|
|
100
104
|
|
|
101
|
-
private :
|
|
105
|
+
private :add_to_record_index
|
|
102
106
|
|
|
103
107
|
def validate_unique_id(record)
|
|
104
|
-
raise IdError.new("Duplicate Id found for record #{record.attributes}") if
|
|
108
|
+
raise IdError.new("Duplicate Id found for record #{record.attributes}") if record_index.has_key?(record.id.to_s)
|
|
105
109
|
end
|
|
106
110
|
|
|
107
111
|
private :validate_unique_id
|
|
@@ -148,7 +152,7 @@ module ActiveHash
|
|
|
148
152
|
|
|
149
153
|
def delete_all
|
|
150
154
|
mark_dirty
|
|
151
|
-
|
|
155
|
+
reset_record_index
|
|
152
156
|
@records = []
|
|
153
157
|
end
|
|
154
158
|
|
|
@@ -168,7 +172,8 @@ module ActiveHash
|
|
|
168
172
|
end
|
|
169
173
|
|
|
170
174
|
def find_by_id(id)
|
|
171
|
-
|
|
175
|
+
index = record_index[id.to_s]
|
|
176
|
+
index and @records[index]
|
|
172
177
|
end
|
|
173
178
|
|
|
174
179
|
delegate :first, :last, :to => :all
|
|
@@ -326,7 +331,7 @@ module ActiveHash
|
|
|
326
331
|
end
|
|
327
332
|
|
|
328
333
|
def reload
|
|
329
|
-
|
|
334
|
+
reset_record_index
|
|
330
335
|
self.data = _data
|
|
331
336
|
mark_clean
|
|
332
337
|
end
|
data/lib/active_hash/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_hash
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.9.
|
|
4
|
+
version: 0.9.12
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -26,11 +26,11 @@ authors:
|
|
|
26
26
|
autorequire:
|
|
27
27
|
bindir: bin
|
|
28
28
|
cert_chain: []
|
|
29
|
-
date: 2012-01-18 00:00:00.
|
|
29
|
+
date: 2012-01-18 00:00:00.000000000Z
|
|
30
30
|
dependencies:
|
|
31
31
|
- !ruby/object:Gem::Dependency
|
|
32
32
|
name: activesupport
|
|
33
|
-
requirement: !ruby/object:Gem::Requirement
|
|
33
|
+
requirement: &70291036455660 !ruby/object:Gem::Requirement
|
|
34
34
|
none: false
|
|
35
35
|
requirements:
|
|
36
36
|
- - ! '>='
|
|
@@ -38,15 +38,10 @@ dependencies:
|
|
|
38
38
|
version: 2.2.2
|
|
39
39
|
type: :runtime
|
|
40
40
|
prerelease: false
|
|
41
|
-
version_requirements:
|
|
42
|
-
none: false
|
|
43
|
-
requirements:
|
|
44
|
-
- - ! '>='
|
|
45
|
-
- !ruby/object:Gem::Version
|
|
46
|
-
version: 2.2.2
|
|
41
|
+
version_requirements: *70291036455660
|
|
47
42
|
- !ruby/object:Gem::Dependency
|
|
48
43
|
name: rspec
|
|
49
|
-
requirement: !ruby/object:Gem::Requirement
|
|
44
|
+
requirement: &70291036454000 !ruby/object:Gem::Requirement
|
|
50
45
|
none: false
|
|
51
46
|
requirements:
|
|
52
47
|
- - ~>
|
|
@@ -54,15 +49,10 @@ dependencies:
|
|
|
54
49
|
version: 2.2.0
|
|
55
50
|
type: :development
|
|
56
51
|
prerelease: false
|
|
57
|
-
version_requirements:
|
|
58
|
-
none: false
|
|
59
|
-
requirements:
|
|
60
|
-
- - ~>
|
|
61
|
-
- !ruby/object:Gem::Version
|
|
62
|
-
version: 2.2.0
|
|
52
|
+
version_requirements: *70291036454000
|
|
63
53
|
- !ruby/object:Gem::Dependency
|
|
64
54
|
name: sqlite3
|
|
65
|
-
requirement: !ruby/object:Gem::Requirement
|
|
55
|
+
requirement: &70291036451580 !ruby/object:Gem::Requirement
|
|
66
56
|
none: false
|
|
67
57
|
requirements:
|
|
68
58
|
- - ! '>='
|
|
@@ -70,15 +60,10 @@ dependencies:
|
|
|
70
60
|
version: '0'
|
|
71
61
|
type: :development
|
|
72
62
|
prerelease: false
|
|
73
|
-
version_requirements:
|
|
74
|
-
none: false
|
|
75
|
-
requirements:
|
|
76
|
-
- - ! '>='
|
|
77
|
-
- !ruby/object:Gem::Version
|
|
78
|
-
version: '0'
|
|
63
|
+
version_requirements: *70291036451580
|
|
79
64
|
- !ruby/object:Gem::Dependency
|
|
80
65
|
name: activerecord
|
|
81
|
-
requirement: !ruby/object:Gem::Requirement
|
|
66
|
+
requirement: &70291036450320 !ruby/object:Gem::Requirement
|
|
82
67
|
none: false
|
|
83
68
|
requirements:
|
|
84
69
|
- - ! '>='
|
|
@@ -86,15 +71,10 @@ dependencies:
|
|
|
86
71
|
version: 2.2.2
|
|
87
72
|
type: :development
|
|
88
73
|
prerelease: false
|
|
89
|
-
version_requirements:
|
|
90
|
-
none: false
|
|
91
|
-
requirements:
|
|
92
|
-
- - ! '>='
|
|
93
|
-
- !ruby/object:Gem::Version
|
|
94
|
-
version: 2.2.2
|
|
74
|
+
version_requirements: *70291036450320
|
|
95
75
|
- !ruby/object:Gem::Dependency
|
|
96
76
|
name: appraisal
|
|
97
|
-
requirement: !ruby/object:Gem::Requirement
|
|
77
|
+
requirement: &70291036449280 !ruby/object:Gem::Requirement
|
|
98
78
|
none: false
|
|
99
79
|
requirements:
|
|
100
80
|
- - ! '>='
|
|
@@ -102,12 +82,7 @@ dependencies:
|
|
|
102
82
|
version: '0'
|
|
103
83
|
type: :development
|
|
104
84
|
prerelease: false
|
|
105
|
-
version_requirements:
|
|
106
|
-
none: false
|
|
107
|
-
requirements:
|
|
108
|
-
- - ! '>='
|
|
109
|
-
- !ruby/object:Gem::Version
|
|
110
|
-
version: '0'
|
|
85
|
+
version_requirements: *70291036449280
|
|
111
86
|
description:
|
|
112
87
|
email: jeff@zilkey.com
|
|
113
88
|
executables: []
|
|
@@ -147,9 +122,6 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
147
122
|
- - ! '>='
|
|
148
123
|
- !ruby/object:Gem::Version
|
|
149
124
|
version: '0'
|
|
150
|
-
segments:
|
|
151
|
-
- 0
|
|
152
|
-
hash: 4063226138811375373
|
|
153
125
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
154
126
|
none: false
|
|
155
127
|
requirements:
|
|
@@ -158,7 +130,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
158
130
|
version: '0'
|
|
159
131
|
requirements: []
|
|
160
132
|
rubyforge_project:
|
|
161
|
-
rubygems_version: 1.8.
|
|
133
|
+
rubygems_version: 1.8.10
|
|
162
134
|
signing_key:
|
|
163
135
|
specification_version: 3
|
|
164
136
|
summary: An ActiveRecord-like model that uses a hash or file as a datasource
|