active_hash 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/CHANGELOG +18 -16
- data/active_hash.gemspec +4 -3
- data/lib/active_hash/base.rb +24 -12
- data/spec/active_hash/base_spec.rb +5 -0
- metadata +5 -4
data/CHANGELOG
CHANGED
|
@@ -1,11 +1,14 @@
|
|
|
1
|
+
2010-12-08
|
|
2
|
+
- ruby 1.9.2 compatibility
|
|
3
|
+
|
|
1
4
|
2010-12-06
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
5
|
+
- added dependency on ActiveModel
|
|
6
|
+
- add persisted? method to ActiveHash::Base
|
|
7
|
+
- ActiveHash::Base#save takes *args to be compatible with ActiveModel
|
|
8
|
+
- ActiveHash::Base#to_param returns nil if the object hasn't been saved
|
|
6
9
|
|
|
7
10
|
2010-11-09
|
|
8
|
-
|
|
11
|
+
- Use Ruby's definition of "word character" (numbers, underscores) when forming ActiveHash::Enum constants (tstuart)
|
|
9
12
|
|
|
10
13
|
2010-11-07
|
|
11
14
|
- Get ActiveHash::Associations to return a scope for has_many active record relationships (mocoso)
|
|
@@ -14,23 +17,23 @@
|
|
|
14
17
|
- Allow find_by_* methods to accept an options hash, so rails associations don't blow up
|
|
15
18
|
|
|
16
19
|
2010-10-07
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
+
- Add conditions to ActiveHash#all (Ryan Garver)
|
|
21
|
+
- Add #cache_key to ActiveHash::Base (Tom Stuart)
|
|
22
|
+
- Add banged dynamic finder support to ActiveHash::Base (Tom Stuart)
|
|
20
23
|
|
|
21
24
|
2010-09-16
|
|
22
|
-
|
|
23
|
-
|
|
25
|
+
- Enum format now uses underscores instead of removing all characters
|
|
26
|
+
- Removed test dependency on acts_as_fu
|
|
24
27
|
|
|
25
28
|
2010-05-26
|
|
26
|
-
|
|
29
|
+
- Silence metaclass deprecation warnings in active support 2.3.8
|
|
27
30
|
|
|
28
31
|
2010-05-04
|
|
29
|
-
|
|
32
|
+
- When calling ActiveFile::Base.reload do not actually perform the reload if nothing has been modified unless you call reload(true) to force (Michael Schubert)
|
|
30
33
|
|
|
31
34
|
2010-04-25
|
|
32
|
-
|
|
33
|
-
|
|
35
|
+
- When ActiveRecord model belongs_to an ActiveHash and the associated id is nil, returns nil instead of raising RecordNotFound (Jeremy Weiskotten)
|
|
36
|
+
- Merged Nakajima's "add" alias for "create" - gotta save those ASCII characters :)
|
|
34
37
|
|
|
35
38
|
2010-03-01
|
|
36
39
|
- Removed "extend"-related deprecations - they didn't play well with rails class loading
|
|
@@ -45,8 +48,7 @@
|
|
|
45
48
|
- Calling #belongs_to now creates the underlying field if it's not already there (belongs_to :city will create the :city_id field)
|
|
46
49
|
|
|
47
50
|
2009-12-10
|
|
48
|
-
- Fixed a bug where belongs_to associations would raise an error instead of returning
|
|
49
|
-
nil when the parent object didn't exist.
|
|
51
|
+
- Fixed a bug where belongs_to associations would raise an error instead of returning nil when the parent object didn't exist.
|
|
50
52
|
- Added #[] and #[]= accessors for more ActiveRecord-esque-ness. (Pat Nakajima & Dave Yeu)
|
|
51
53
|
|
|
52
54
|
2009-12-01
|
data/active_hash.gemspec
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Gem::Specification.new do |s|
|
|
4
4
|
s.name = %q{active_hash}
|
|
5
|
-
s.version = "0.9.
|
|
5
|
+
s.version = "0.9.1"
|
|
6
6
|
|
|
7
7
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
|
8
8
|
s.authors = [
|
|
@@ -18,9 +18,10 @@ Gem::Specification.new do |s|
|
|
|
18
18
|
"Jeremy Weiskotten",
|
|
19
19
|
"Ryan Garver",
|
|
20
20
|
"Tom Stuart",
|
|
21
|
-
"Joel Chippindale"
|
|
21
|
+
"Joel Chippindale",
|
|
22
|
+
"Kevin Olsen"
|
|
22
23
|
]
|
|
23
|
-
s.date = %q{2010-12-
|
|
24
|
+
s.date = %q{2010-12-08}
|
|
24
25
|
s.email = %q{jeff@zilkey.com}
|
|
25
26
|
s.extra_rdoc_files = [
|
|
26
27
|
"LICENSE",
|
data/lib/active_hash/base.rb
CHANGED
|
@@ -173,7 +173,7 @@ module ActiveHash
|
|
|
173
173
|
private :configuration_for_custom_finder
|
|
174
174
|
|
|
175
175
|
def define_getter_method(field, default_value)
|
|
176
|
-
unless
|
|
176
|
+
unless has_instance_method?(field)
|
|
177
177
|
define_method(field) do
|
|
178
178
|
attributes[field].nil? ? default_value : attributes[field]
|
|
179
179
|
end
|
|
@@ -184,7 +184,7 @@ module ActiveHash
|
|
|
184
184
|
|
|
185
185
|
def define_setter_method(field)
|
|
186
186
|
method_name = "#{field}="
|
|
187
|
-
unless
|
|
187
|
+
unless has_instance_method?(method_name)
|
|
188
188
|
define_method(method_name) do |new_val|
|
|
189
189
|
attributes[field] = new_val
|
|
190
190
|
end
|
|
@@ -194,8 +194,8 @@ module ActiveHash
|
|
|
194
194
|
private :define_setter_method
|
|
195
195
|
|
|
196
196
|
def define_interrogator_method(field)
|
|
197
|
-
method_name = "#{field}?"
|
|
198
|
-
unless
|
|
197
|
+
method_name = :"#{field}?"
|
|
198
|
+
unless has_instance_method?(method_name)
|
|
199
199
|
define_method(method_name) do
|
|
200
200
|
send(field).present?
|
|
201
201
|
end
|
|
@@ -205,8 +205,8 @@ module ActiveHash
|
|
|
205
205
|
private :define_interrogator_method
|
|
206
206
|
|
|
207
207
|
def define_custom_find_method(field_name)
|
|
208
|
-
method_name = "find_by_#{field_name}"
|
|
209
|
-
unless
|
|
208
|
+
method_name = :"find_by_#{field_name}"
|
|
209
|
+
unless has_singleton_method?(method_name)
|
|
210
210
|
the_meta_class.instance_eval do
|
|
211
211
|
define_method(method_name) do |*args|
|
|
212
212
|
options = args.extract_options!
|
|
@@ -220,8 +220,8 @@ module ActiveHash
|
|
|
220
220
|
private :define_custom_find_method
|
|
221
221
|
|
|
222
222
|
def define_custom_find_all_method(field_name)
|
|
223
|
-
method_name = "find_all_by_#{field_name}"
|
|
224
|
-
unless
|
|
223
|
+
method_name = :"find_all_by_#{field_name}"
|
|
224
|
+
unless has_singleton_method?(method_name)
|
|
225
225
|
the_meta_class.instance_eval do
|
|
226
226
|
unless singleton_methods.include?(method_name)
|
|
227
227
|
define_method(method_name) do |*args|
|
|
@@ -276,14 +276,26 @@ module ActiveHash
|
|
|
276
276
|
|
|
277
277
|
private :mark_clean
|
|
278
278
|
|
|
279
|
+
def has_instance_method?(name)
|
|
280
|
+
instance_methods.map{|method| method.to_sym}.include?(name)
|
|
281
|
+
end
|
|
282
|
+
|
|
283
|
+
private :has_instance_method?
|
|
284
|
+
|
|
285
|
+
def has_singleton_method?(name)
|
|
286
|
+
singleton_methods.map{|method| method.to_sym}.include?(name)
|
|
287
|
+
end
|
|
288
|
+
|
|
289
|
+
private :has_singleton_method?
|
|
290
|
+
|
|
279
291
|
end
|
|
280
292
|
|
|
281
293
|
attr_reader :attributes
|
|
282
294
|
|
|
283
|
-
def initialize(
|
|
284
|
-
|
|
285
|
-
@attributes =
|
|
286
|
-
|
|
295
|
+
def initialize(attributes = {})
|
|
296
|
+
attributes.symbolize_keys!
|
|
297
|
+
@attributes = attributes
|
|
298
|
+
attributes.dup.each do |key, value|
|
|
287
299
|
send "#{key}=", value
|
|
288
300
|
end
|
|
289
301
|
end
|
|
@@ -692,6 +692,11 @@ describe ActiveHash, "Base" do
|
|
|
692
692
|
end
|
|
693
693
|
end
|
|
694
694
|
|
|
695
|
+
Country.find_by_name("foo").should == "find_by_name defined manually"
|
|
696
|
+
Country.find_all_by_name("foo").should == "find_all_by_name defined manually"
|
|
697
|
+
Country.new.name.should == "name defined manually"
|
|
698
|
+
Country.new.name?.should == "name? defined manually"
|
|
699
|
+
|
|
695
700
|
Country.data = [
|
|
696
701
|
{:name => "foo"}
|
|
697
702
|
]
|
metadata
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: active_hash
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
hash:
|
|
4
|
+
hash: 57
|
|
5
5
|
prerelease: false
|
|
6
6
|
segments:
|
|
7
7
|
- 0
|
|
8
8
|
- 9
|
|
9
|
-
-
|
|
10
|
-
version: 0.9.
|
|
9
|
+
- 1
|
|
10
|
+
version: 0.9.1
|
|
11
11
|
platform: ruby
|
|
12
12
|
authors:
|
|
13
13
|
- Jeff Dean
|
|
@@ -23,11 +23,12 @@ authors:
|
|
|
23
23
|
- Ryan Garver
|
|
24
24
|
- Tom Stuart
|
|
25
25
|
- Joel Chippindale
|
|
26
|
+
- Kevin Olsen
|
|
26
27
|
autorequire:
|
|
27
28
|
bindir: bin
|
|
28
29
|
cert_chain: []
|
|
29
30
|
|
|
30
|
-
date: 2010-12-
|
|
31
|
+
date: 2010-12-08 00:00:00 -07:00
|
|
31
32
|
default_executable:
|
|
32
33
|
dependencies:
|
|
33
34
|
- !ruby/object:Gem::Dependency
|