dumb_delegator 0.5.1 → 0.6.0

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 92d88fb2dc6ea85760c5b7d646349b40bca6dbfe
4
+ data.tar.gz: e457fa632733529197f767f6fc798e35d57db3fe
5
+ SHA512:
6
+ metadata.gz: 6ca10a81f035210ac1b7b45b579e765af3baa14c2c9fa349814fac4aea22bc1a008d888145bef02f53048fbe9bdf43da4b8eb5db9d8f9c002e4d5705c3eba976
7
+ data.tar.gz: a641af0af00a6999fa5d3f5484a742db80d23c47e7b31475673ec66080219f4d0b127158fdbd434f4e16b042f7ff848528358c470e760c93543ef7830ef111a2
data/.travis.yml CHANGED
@@ -2,5 +2,7 @@ language: ruby
2
2
  rvm:
3
3
  - 1.9.2
4
4
  - 1.9.3
5
+ - 2.0.0
6
+ - 2.1.0
5
7
  - jruby-19mode
6
- - rbx-19mode
8
+ - rbx
data/README.md CHANGED
@@ -1,11 +1,10 @@
1
1
  # DumbDelegator
2
2
 
3
- [![Build Status](https://secure.travis-ci.org/highgroove/dumb_delegator.png)](http://travis-ci.org/highgroove/dumb_delegator)
4
- [![Dependency Status](https://gemnasium.com/highgroove/dumb_delegator.png)](https://gemnasium.com/highgroove/dumb_delegator)
3
+ [![Build Status](https://secure.travis-ci.org/stevenharman/dumb_delegator.png)](http://travis-ci.org/stevenharman/dumb_delegator)
4
+ [![Dependency Status](https://gemnasium.com/stevenharman/dumb_delegator.png)](https://gemnasium.com/stevenharman/dumb_delegator)
5
5
 
6
- Ruby provides the `delegate` standard library. However, we found that it is
7
- not appropriate for many use cases that require nearly every call to be
8
- proxied.
6
+ Ruby provides the `delegate` standard library. However, we found that it is not
7
+ appropriate for many use cases that require nearly every call to be proxied.
9
8
 
10
9
  For instance, Rails uses `#class` and `#instance_of?` to introspect on model
11
10
  classes when generating forms and URL helpers. These methods are not forwarded
@@ -2,22 +2,22 @@
2
2
  require File.expand_path('../lib/dumb_delegator/version', __FILE__)
3
3
 
4
4
  Gem::Specification.new do |gem|
5
- gem.authors = ["Andy Lindeman"]
6
- gem.email = ["andy@highgroove.com"]
5
+ gem.authors = ['Andy Lindeman', 'Steven Harman']
6
+ gem.email = ['alindeman@gmail.com', 'steveharman@gmail.com']
7
7
  gem.description = %q{Delegator class that delegates ALL the things}
8
8
  gem.summary = <<-EOD
9
9
  Delegator and SimpleDelegator in Ruby's stdlib are somewhat useful, but they pull in most of Kernel. This is not appropriate for many uses; for instance, delegation to Rails models.
10
10
  EOD
11
- gem.homepage = "https://github.com/highgroove/dumb_delegator"
11
+ gem.homepage = 'https://github.com/stevenharman/dumb_delegator'
12
12
 
13
13
  gem.files = `git ls-files`.split($\)
14
14
  gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
15
15
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
16
- gem.name = "dumb_delegator"
17
- gem.require_paths = ["lib"]
16
+ gem.name = 'dumb_delegator'
17
+ gem.require_paths = ['lib']
18
18
  gem.version = DumbDelegator::VERSION
19
19
 
20
- gem.add_development_dependency 'rspec', '~>2.11.0'
20
+ gem.add_development_dependency 'rspec', '~>2.14'
21
21
  gem.add_development_dependency 'pry'
22
22
  gem.add_development_dependency 'rake'
23
23
  end
@@ -7,21 +7,17 @@ class DumbDelegator < ::BasicObject
7
7
  end
8
8
 
9
9
  kernel = ::Kernel.dup
10
- (kernel.instance_methods - [:dup, :clone]).each do |method|
10
+ (kernel.instance_methods - [:dup, :clone, :respond_to?]).each do |method|
11
11
  kernel.__send__ :undef_method, method
12
12
  end
13
13
  include kernel
14
14
 
15
- NON_DELEGATED_METHODS = ::Set.new([:equal?, :__id__, :__send__, :dup, :clone, :__getobj__,
16
- :__setobj__, :marshal_dump, :marshal_load,
17
- :respond_to?]).freeze
18
-
19
15
  def initialize(target)
20
16
  __setobj__(target)
21
17
  end
22
18
 
23
- def respond_to?(method)
24
- __getobj__.respond_to?(method) || NON_DELEGATED_METHODS.include?(method.to_sym)
19
+ def respond_to?(method, include_all=false)
20
+ __getobj__.respond_to?(method) || super
25
21
  end
26
22
 
27
23
  def method_missing(method, *args, &block)
@@ -1,3 +1,3 @@
1
1
  class DumbDelegator < ::BasicObject
2
- VERSION = "0.5.1"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -1,103 +1,103 @@
1
1
  require "spec_helper"
2
2
 
3
3
  describe DumbDelegator do
4
+ subject(:dummy) { described_class.new(target) }
4
5
  let(:target) { double }
5
- subject { described_class.new(target) }
6
6
 
7
7
  it "delegates to the target object" do
8
- target.should_receive(:foo)
9
- subject.foo
8
+ expect(target).to receive(:foo)
9
+ dummy.foo
10
10
  end
11
11
 
12
12
  it "delegates to the target object with arguments" do
13
- target.should_receive(:foo).with(:bar)
13
+ expect(target).to receive(:foo).with(:bar)
14
14
 
15
- subject.foo(:bar)
15
+ dummy.foo(:bar)
16
16
  end
17
17
 
18
18
  it "delegates to the target object with a block" do
19
19
  bar_block = proc { "bar" }
20
- target.should_receive(:foo) { |&block| block.should == bar_block }
20
+ expect(target).to receive(:foo) { |&block| expect(block).to eq(bar_block) }
21
21
 
22
- subject.foo(&bar_block)
22
+ dummy.foo(&bar_block)
23
23
  end
24
24
 
25
25
  it "does not delegate if the target does not respond_to? the message" do
26
- target.stub(:foo)
27
- target.stub(:respond_to?).with(:foo).and_return(false)
26
+ allow(target).to receive(:foo)
27
+ allow(target).to receive(:respond_to?).with(:foo).and_return(false)
28
28
 
29
29
  expect {
30
- subject.foo
30
+ dummy.foo
31
31
  }.to raise_error(NoMethodError)
32
32
  end
33
33
 
34
34
  it "responds to methods defined by child classes that add behavior" do
35
- target.should_receive(:foo).never
36
- def subject.foo
35
+ expect(target).to receive(:foo).never
36
+ def dummy.foo
37
37
  "bar"
38
38
  end
39
39
 
40
- subject.foo
40
+ dummy.foo
41
41
  end
42
42
 
43
43
  it "delegates methods defined on Object" do
44
- target.should_receive(:class)
45
- subject.class
44
+ expect(target).to receive(:class)
45
+ dummy.class
46
46
  end
47
47
 
48
48
  it "delegates is_a?" do
49
- target.should_receive(:is_a?)
50
- subject.is_a?
49
+ expect(target).to receive(:is_a?)
50
+ dummy.is_a?
51
51
  end
52
52
 
53
53
  it "delegates methods defined on Kernel" do
54
- target.should_receive(:print)
55
- subject.print
54
+ expect(target).to receive(:print)
55
+ dummy.print
56
56
  end
57
57
 
58
58
  it "delegates !" do
59
- target.should_receive(:!)
60
- !subject
59
+ expect(target).to receive(:!)
60
+ !dummy
61
61
  end
62
62
 
63
63
  it "delegates !=" do
64
- target.should_receive(:!=)
65
- subject != 1
64
+ expect(target).to receive(:!=)
65
+ dummy != 1
66
66
  end
67
67
 
68
68
  it "delegates ==" do
69
- target.should_receive(:==)
70
- subject == 1
69
+ expect(target).to receive(:==)
70
+ dummy == 1
71
71
  end
72
72
 
73
73
  it "delegates ==" do
74
- target.should_receive(:==)
75
- subject == 1
74
+ expect(target).to receive(:==)
75
+ dummy == 1
76
76
  end
77
77
 
78
78
  it "delegates instance_eval" do
79
- target.should_receive(:instance_eval)
80
- subject.instance_eval { true }
79
+ expect(target).to receive(:instance_eval)
80
+ dummy.instance_eval { true }
81
81
  end
82
82
 
83
83
  it "delegates instance_exec" do
84
- target.should_receive(:instance_exec)
85
- subject.instance_exec { true }
84
+ expect(target).to receive(:instance_exec)
85
+ dummy.instance_exec { true }
86
86
  end
87
87
 
88
88
  describe "#dup" do
89
89
  it "returns a shallow of itself, the delegator (not the underlying object)", :objectspace => true do
90
- dupped = subject.dup
90
+ dupped = dummy.dup
91
91
 
92
- ObjectSpace.each_object(DumbDelegator).map(&:__id__).should include dupped.__id__
92
+ expect(ObjectSpace.each_object(DumbDelegator).map(&:__id__)).to include dupped.__id__
93
93
  end
94
94
  end
95
95
 
96
96
  describe "#clone" do
97
97
  it "returns a shallow of itself, the delegator (not the underlying object)", :objectspace => true do
98
- cloned = subject.clone
98
+ cloned = dummy.clone
99
99
 
100
- ObjectSpace.each_object(DumbDelegator).map(&:__id__).should include cloned.__id__
100
+ expect(ObjectSpace.each_object(DumbDelegator).map(&:__id__)).to include cloned.__id__
101
101
  end
102
102
  end
103
103
 
@@ -105,36 +105,44 @@ describe DumbDelegator do
105
105
  let(:target) { Object.new }
106
106
 
107
107
  it "marshals and unmarshals itself, the delegator (not the underlying object)", :objectspace => true do
108
- marshaled = Marshal.dump(subject)
108
+ marshaled = Marshal.dump(dummy)
109
109
  unmarshaled = Marshal.load(marshaled)
110
110
 
111
- ObjectSpace.each_object(DumbDelegator).map(&:__id__).should include unmarshaled.__id__
111
+ expect(ObjectSpace.each_object(DumbDelegator).map(&:__id__)).to include unmarshaled.__id__
112
112
  end
113
113
  end
114
114
 
115
115
  describe "#respond_to?" do
116
116
  [:equal?, :__id__, :__send__, :dup, :clone, :__getobj__, :__setobj__, :marshal_dump, :marshal_load, :respond_to?].each do |method|
117
117
  it "responds to #{method}" do
118
- subject.respond_to?(method).should be_true
118
+ expect(dummy.respond_to?(method)).to be_true
119
+ end
120
+ end
121
+
122
+ context "subclasses of DumbDelegator" do
123
+ subject(:dummy) { Class.new(DumbDelegator) { def foobar; end }.new([]) }
124
+
125
+ it "respond to methods defined on the subclass" do
126
+ expect(dummy.respond_to?(:foobar)).to be_true
119
127
  end
120
128
  end
121
129
  end
122
130
 
123
131
  describe "#__getobj__" do
124
132
  it "returns the target object" do
125
- subject.__getobj__.should equal target
133
+ expect(dummy.__getobj__).to equal target
126
134
  end
127
135
  end
128
136
 
129
137
  describe "#__setobj__" do
130
138
  it "resets the target object to a different object" do
131
- target.should_receive(:foo).never
139
+ expect(target).to receive(:foo).never
132
140
 
133
141
  new_target = double
134
- new_target.should_receive(:foo)
142
+ expect(new_target).to receive(:foo)
135
143
 
136
- subject.__setobj__(new_target)
137
- subject.foo
144
+ dummy.__setobj__(new_target)
145
+ dummy.foo
138
146
  end
139
147
  end
140
148
  end
metadata CHANGED
@@ -1,74 +1,69 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dumb_delegator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
5
- prerelease:
4
+ version: 0.6.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Andy Lindeman
8
+ - Steven Harman
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-08-21 00:00:00.000000000 Z
12
+ date: 2014-03-10 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
16
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
17
  requirements:
19
- - - ~>
18
+ - - "~>"
20
19
  - !ruby/object:Gem::Version
21
- version: 2.11.0
20
+ version: '2.14'
22
21
  type: :development
23
22
  prerelease: false
24
23
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
24
  requirements:
27
- - - ~>
25
+ - - "~>"
28
26
  - !ruby/object:Gem::Version
29
- version: 2.11.0
27
+ version: '2.14'
30
28
  - !ruby/object:Gem::Dependency
31
29
  name: pry
32
30
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
31
  requirements:
35
- - - ! '>='
32
+ - - ">="
36
33
  - !ruby/object:Gem::Version
37
34
  version: '0'
38
35
  type: :development
39
36
  prerelease: false
40
37
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
38
  requirements:
43
- - - ! '>='
39
+ - - ">="
44
40
  - !ruby/object:Gem::Version
45
41
  version: '0'
46
42
  - !ruby/object:Gem::Dependency
47
43
  name: rake
48
44
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
45
  requirements:
51
- - - ! '>='
46
+ - - ">="
52
47
  - !ruby/object:Gem::Version
53
48
  version: '0'
54
49
  type: :development
55
50
  prerelease: false
56
51
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
52
  requirements:
59
- - - ! '>='
53
+ - - ">="
60
54
  - !ruby/object:Gem::Version
61
55
  version: '0'
62
56
  description: Delegator class that delegates ALL the things
63
57
  email:
64
- - andy@highgroove.com
58
+ - alindeman@gmail.com
59
+ - steveharman@gmail.com
65
60
  executables: []
66
61
  extensions: []
67
62
  extra_rdoc_files: []
68
63
  files:
69
- - .gitignore
70
- - .rspec
71
- - .travis.yml
64
+ - ".gitignore"
65
+ - ".rspec"
66
+ - ".travis.yml"
72
67
  - Gemfile
73
68
  - LICENSE
74
69
  - README.md
@@ -78,35 +73,28 @@ files:
78
73
  - lib/dumb_delegator/version.rb
79
74
  - spec/dumb_delegator_spec.rb
80
75
  - spec/spec_helper.rb
81
- homepage: https://github.com/highgroove/dumb_delegator
76
+ homepage: https://github.com/stevenharman/dumb_delegator
82
77
  licenses: []
78
+ metadata: {}
83
79
  post_install_message:
84
80
  rdoc_options: []
85
81
  require_paths:
86
82
  - lib
87
83
  required_ruby_version: !ruby/object:Gem::Requirement
88
- none: false
89
84
  requirements:
90
- - - ! '>='
85
+ - - ">="
91
86
  - !ruby/object:Gem::Version
92
87
  version: '0'
93
- segments:
94
- - 0
95
- hash: 2175975043620941750
96
88
  required_rubygems_version: !ruby/object:Gem::Requirement
97
- none: false
98
89
  requirements:
99
- - - ! '>='
90
+ - - ">="
100
91
  - !ruby/object:Gem::Version
101
92
  version: '0'
102
- segments:
103
- - 0
104
- hash: 2175975043620941750
105
93
  requirements: []
106
94
  rubyforge_project:
107
- rubygems_version: 1.8.24
95
+ rubygems_version: 2.2.2
108
96
  signing_key:
109
- specification_version: 3
97
+ specification_version: 4
110
98
  summary: Delegator and SimpleDelegator in Ruby's stdlib are somewhat useful, but they
111
99
  pull in most of Kernel. This is not appropriate for many uses; for instance, delegation
112
100
  to Rails models.