dumb_delegator 0.5.1 → 0.6.0

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