method_man 2.1.3 → 2.1.4

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4fdbcefd427794328ed76138ee1ae3c40652be07
4
- data.tar.gz: f7a19bd8d6a86ff56c293e31eaa80e0696139b86
3
+ metadata.gz: 81b47336f9cc1310f47c3c8b1bcdac7710594f81
4
+ data.tar.gz: 36486a9aee423f69cb5e405a046c2ab5f31dd34e
5
5
  SHA512:
6
- metadata.gz: 1a12a8183393dc8401035a3f8d0da9c3f5a45d1d0ac5a525198e5130c7c0af0b644ba47091c4654a7d9fa027195a339f195a883f951fb6464a76990cb7cdab9b
7
- data.tar.gz: 98b2d6d7287be407b4a27c910b20527426167415ad91d4b1daff6916986c5f2c1a3286fbd4d89e2ee8d2a50d04e30143ff7b3e8c919ae844b96b1a67840035fd
6
+ metadata.gz: 0ebe52a266f21791980166006d113ea8e2fafadf26780075fed51f48996e82b8cc207d0d7e2e0b7449a4ec11b9e28138b84a101f7f930e367b6120a71a8ddddd
7
+ data.tar.gz: b7470917710d58ac6002e5868ea97a824c841b248dae462afaf0b40a9acc1b7335b58121464c363dd5d1be5ede93fd7c156e1c30db3b87dcb13f41ceff8185cb
data/CHANGELOG.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # Change log
2
2
 
3
+ ## 2.1.4
4
+ Fix bug with delegating to assignment methods like `foo=`.
5
+
3
6
  ## 2.1.1
4
7
  Fix bug preventing arguments from being forwarded to delegated methods.
5
8
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class MethodObject
4
- VERSION = '2.1.3'
4
+ VERSION = '2.1.4'
5
5
  end
data/lib/method_object.rb CHANGED
@@ -66,12 +66,20 @@ class MethodObject
66
66
 
67
67
  def define_delegated_method(delegate)
68
68
  self.class.class_eval(
69
- <<-RUBY
70
- def #{delegate.delegated_method}(*args, &block)
71
- #{delegate.attribute}
72
- .#{delegate.method_to_call_on_delegate}(*args, &block)
73
- end
74
- RUBY
69
+ if delegate.method_to_call_on_delegate.to_s.end_with?('=')
70
+ <<-RUBY
71
+ def #{delegate.delegated_method}(arg)
72
+ #{delegate.attribute}.#{delegate.method_to_call_on_delegate}(arg)
73
+ end
74
+ RUBY
75
+ else
76
+ <<-RUBY
77
+ def #{delegate.delegated_method}(*args, &block)
78
+ #{delegate.attribute}
79
+ .#{delegate.method_to_call_on_delegate}(*args, &block)
80
+ end
81
+ RUBY
82
+ end
75
83
  )
76
84
  end
77
85
 
@@ -25,6 +25,8 @@ RSpec.describe(MethodObject) do
25
25
  attrs(:company, :user)
26
26
 
27
27
  def call
28
+ self.name = 'New Company Name'
29
+ self.company_name = 'New Company Name 2'
28
30
  {
29
31
  address: address,
30
32
  respond_to_address: respond_to_missing?(:address),
@@ -58,10 +60,11 @@ RSpec.describe(MethodObject) do
58
60
  let(:company_name) { 'Periscope Data' }
59
61
  let(:user) { double('user', name: user_name) }
60
62
  let(:user_name) { 'Woody' }
61
-
62
63
  let(:result) { subject.call(company: company, user: user) }
63
64
 
64
65
  specify do
66
+ expect(company).to receive(:name=).ordered.with('New Company Name')
67
+ expect(company).to receive(:name=).ordered.with('New Company Name 2')
65
68
  expect(result).to eq(
66
69
  address: company_address,
67
70
  respond_to_address: true,
@@ -173,7 +176,8 @@ RSpec.describe(MethodObject) do
173
176
  end
174
177
 
175
178
  specify do
176
- expect(subject.call(company: company)).to eq([company_name, company_name])
179
+ expect(subject.call(company: company))
180
+ .to eq([company_name, company_name])
177
181
  end
178
182
  end
179
183
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: method_man
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.3
4
+ version: 2.1.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clay Shentrup