delegate_all_for 0.0.7 → 0.0.8

Sign up to get free protection for your applications and to get access to all the features.
@@ -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