delegate_all_for 0.0.7 → 0.0.8

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.
@@ -1,3 +1,3 @@
1
1
  module DelegateAllFor
2
- VERSION = "0.0.7"
2
+ VERSION = "0.0.8"
3
3
  end
@@ -41,20 +41,7 @@ module DelegateAllFor
41
41
  class_eval <<-eoruby, __FILE__, __LINE__ + 1
42
42
  delegate :#{method}, #{delegate_opts}
43
43
  delegate :#{method}?, #{delegate_opts}
44
- eoruby
45
-
46
- # Create the setter with support for using nested attributes to set it if the delegated object is not present
47
- exception = %(raise "#{self}##{method_prefix}#{method} delegated to #{to}.#{method}, but #{to} is nil: \#{self.inspect}")
48
- class_eval <<-eoruby, __FILE__, __LINE__ + 1
49
- def #{method_prefix}#{method}=(*args, &block) # def customer_name(*args, &block)
50
- if #{to} || #{to}.respond_to?(:#{method}) # if client || client.respond_to?(:name)
51
- #{to}.__send__(:#{method}=, *args, &block) # client.__send__(:name, *args, &block)
52
- elsif self.respond_to?(:#{to}_attributes=) # elsif self.respond_to?(:client_attributes=)
53
- self.__send__(:#{to}_attributes=, :#{method} => args.first, &block) # self.__send__(:client_attributes=, :name => args.first, &block)
54
- else # else
55
- #{exception} # # add helpful exception
56
- end # end
57
- end # end
44
+ delegate :#{method}=, #{delegate_opts.merge(allow_nil: false)} # allow_nil true leads to unintuitive behavior
58
45
  eoruby
59
46
  end
60
47
  else
@@ -42,6 +42,9 @@ describe DelegateAllFor do
42
42
  describe ':allow_nil option' do
43
43
  subject { Parent.new }
44
44
  its(:four) { should be_nil }
45
+ it 'does not set allow_nil on setters' do
46
+ lambda { subject.four = 'FOUR' }.should raise_error RuntimeError
47
+ end
45
48
  end
46
49
 
47
50
  describe 'delegates to child attributes' do
@@ -55,29 +58,6 @@ describe DelegateAllFor do
55
58
  it 'does not delegate to timestamp attributes' do
56
59
  lambda { subject.created_at }.should raise_error NoMethodError
57
60
  end
58
-
59
- describe 'writer' do
60
- it 'sets the value using delegation if child is set' do
61
- subject.child.should be_an_instance_of(Child)
62
- subject.four = 'FOUR'
63
- subject.four.should == 'FOUR'
64
- subject.child.four.should == 'FOUR'
65
- end
66
-
67
- it 'sets the value using nested attributes if child is not set and nested attributes are supported' do
68
- class NestedParent < Parent; accepts_nested_attributes_for :child end
69
- subject = NestedParent.new
70
- subject.four = 'FOUR'
71
- subject.child.should be_an_instance_of(Child)
72
- subject.four.should == 'FOUR'
73
- subject.child.four.should == 'FOUR'
74
- end
75
-
76
- it 'raises an exception if child is not set' do
77
- subject = Parent.new
78
- lambda { subject.four = 'FOUR' }.should raise_error RuntimeError
79
- end
80
- end
81
61
  end
82
62
 
83
63
  describe 'guards against user error' do
metadata CHANGED
@@ -1,67 +1,89 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: delegate_all_for
3
- version: !ruby/object:Gem::Version
4
- version: 0.0.7
5
- prerelease:
3
+ version: !ruby/object:Gem::Version
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 0
8
+ - 8
9
+ version: 0.0.8
6
10
  platform: ruby
7
- authors:
11
+ authors:
8
12
  - Jason Rust
9
13
  autorequire:
10
14
  bindir: bin
11
15
  cert_chain: []
12
- date: 2012-05-09 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
16
+
17
+ date: 2012-05-09 00:00:00 -07:00
18
+ default_executable:
19
+ dependencies:
20
+ - !ruby/object:Gem::Dependency
15
21
  name: activerecord
16
- requirement: &70148514385220 !ruby/object:Gem::Requirement
17
- none: false
18
- requirements:
22
+ prerelease: false
23
+ requirement: &id001 !ruby/object:Gem::Requirement
24
+ requirements:
19
25
  - - ~>
20
- - !ruby/object:Gem::Version
26
+ - !ruby/object:Gem::Version
27
+ segments:
28
+ - 3
29
+ - 2
30
+ - 3
21
31
  version: 3.2.3
22
32
  type: :runtime
23
- prerelease: false
24
- version_requirements: *70148514385220
25
- - !ruby/object:Gem::Dependency
33
+ version_requirements: *id001
34
+ - !ruby/object:Gem::Dependency
26
35
  name: rake
27
- requirement: &70148514384040 !ruby/object:Gem::Requirement
28
- none: false
29
- requirements:
36
+ prerelease: false
37
+ requirement: &id002 !ruby/object:Gem::Requirement
38
+ requirements:
30
39
  - - ~>
31
- - !ruby/object:Gem::Version
40
+ - !ruby/object:Gem::Version
41
+ segments:
42
+ - 0
43
+ - 9
44
+ - 2
45
+ - 2
32
46
  version: 0.9.2.2
33
47
  type: :development
34
- prerelease: false
35
- version_requirements: *70148514384040
36
- - !ruby/object:Gem::Dependency
48
+ version_requirements: *id002
49
+ - !ruby/object:Gem::Dependency
37
50
  name: rspec
38
- requirement: &70148514383580 !ruby/object:Gem::Requirement
39
- none: false
40
- requirements:
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
53
+ requirements:
41
54
  - - ~>
42
- - !ruby/object:Gem::Version
55
+ - !ruby/object:Gem::Version
56
+ segments:
57
+ - 2
58
+ - 9
59
+ - 0
43
60
  version: 2.9.0
44
61
  type: :development
45
- prerelease: false
46
- version_requirements: *70148514383580
47
- - !ruby/object:Gem::Dependency
62
+ version_requirements: *id003
63
+ - !ruby/object:Gem::Dependency
48
64
  name: sqlite3
49
- requirement: &70148514383080 !ruby/object:Gem::Requirement
50
- none: false
51
- requirements:
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
67
+ requirements:
52
68
  - - ~>
53
- - !ruby/object:Gem::Version
69
+ - !ruby/object:Gem::Version
70
+ segments:
71
+ - 1
72
+ - 3
73
+ - 6
54
74
  version: 1.3.6
55
75
  type: :development
56
- prerelease: false
57
- version_requirements: *70148514383080
76
+ version_requirements: *id004
58
77
  description: Easy delegation of all columns of an ActiveRecord association
59
- email:
78
+ email:
60
79
  - jason@lessonplanet.com
61
80
  executables: []
81
+
62
82
  extensions: []
83
+
63
84
  extra_rdoc_files: []
64
- files:
85
+
86
+ files:
65
87
  - .gitignore
66
88
  - .rspec
67
89
  - Gemfile
@@ -74,31 +96,37 @@ files:
74
96
  - spec/delegate_all_for/delegate_all_for_spec.rb
75
97
  - spec/spec_helper.rb
76
98
  - spec/support/active_record.rb
99
+ has_rdoc: true
77
100
  homepage: https://github.com/LessonPlanet/delegate_all_for
78
101
  licenses: []
102
+
79
103
  post_install_message:
80
104
  rdoc_options: []
81
- require_paths:
105
+
106
+ require_paths:
82
107
  - lib
83
- required_ruby_version: !ruby/object:Gem::Requirement
84
- none: false
85
- requirements:
86
- - - ! '>='
87
- - !ruby/object:Gem::Version
88
- version: '0'
89
- required_rubygems_version: !ruby/object:Gem::Requirement
90
- none: false
91
- requirements:
92
- - - ! '>='
93
- - !ruby/object:Gem::Version
94
- version: '0'
108
+ required_ruby_version: !ruby/object:Gem::Requirement
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ segments:
113
+ - 0
114
+ version: "0"
115
+ required_rubygems_version: !ruby/object:Gem::Requirement
116
+ requirements:
117
+ - - ">="
118
+ - !ruby/object:Gem::Version
119
+ segments:
120
+ - 0
121
+ version: "0"
95
122
  requirements: []
123
+
96
124
  rubyforge_project:
97
- rubygems_version: 1.8.17
125
+ rubygems_version: 1.3.6
98
126
  signing_key:
99
127
  specification_version: 3
100
128
  summary: Easy delegation of all columns of an ActiveRecord association
101
- test_files:
129
+ test_files:
102
130
  - spec/delegate_all_for/delegate_all_for_spec.rb
103
131
  - spec/spec_helper.rb
104
132
  - spec/support/active_record.rb