backports 1.18.2 → 2.0.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,5 @@
1
1
  ---
2
- :major: 1
3
2
  :minor: 18
4
- :patch: 2
3
+ :patch: 3
5
4
  :build:
5
+ :major: 1
@@ -5,11 +5,11 @@
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{backports}
8
- s.version = "1.18.2"
8
+ s.version = "2.0.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Marc-Andr\303\251 Lafortune"]
12
- s.date = %q{2010-10-09}
12
+ s.date = %q{2011-03-04}
13
13
  s.description = %q{ Essential backports that enable some of the really nice features of ruby 1.8.7, ruby 1.9 and rails from ruby 1.8.6 and earlier.
14
14
  }
15
15
  s.email = %q{github@marc-andre.ca}
@@ -82,7 +82,6 @@ Gem::Specification.new do |s|
82
82
  "lib/backports/1.9.2/hash.rb",
83
83
  "lib/backports/1.9.2/kernel.rb",
84
84
  "lib/backports/1.9.2/match_data.rb",
85
- "lib/backports/1.9.2/method.rb",
86
85
  "lib/backports/1.9.2/random.rb",
87
86
  "lib/backports/1.9.2/random/MT19937.rb",
88
87
  "lib/backports/1.9.2/random/bits_and_bytes.rb",
@@ -120,7 +119,7 @@ Gem::Specification.new do |s|
120
119
  s.rdoc_options = ["--charset=UTF-8", "--title", "Backports library", "--main", "README.rdoc", "--line-numbers", "--inline-source"]
121
120
  s.require_paths = ["lib"]
122
121
  s.rubyforge_project = %q{backports}
123
- s.rubygems_version = %q{1.3.6}
122
+ s.rubygems_version = %q{1.3.7}
124
123
  s.summary = %q{Backports of Ruby 1.8.7+ for older ruby.}
125
124
  s.test_files = [
126
125
  "test/array_test.rb",
@@ -145,7 +144,7 @@ Gem::Specification.new do |s|
145
144
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
146
145
  s.specification_version = 3
147
146
 
148
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
147
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
149
148
  else
150
149
  end
151
150
  else
@@ -19,13 +19,13 @@ class Array
19
19
  end unless method_defined? :combination
20
20
 
21
21
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
22
- def cycle(n = nil, &block)
22
+ def cycle(n = nil)
23
23
  return to_enum(:cycle, n) unless block_given?
24
24
  if n.nil?
25
- loop(&block)
25
+ each{|e| yield e } until false
26
26
  else
27
27
  n = Backports.coerce_to_int(n)
28
- n.times{each(&block)}
28
+ n.times{each{|e| yield e }}
29
29
  end
30
30
  nil
31
31
  end unless method_defined? :cycle
@@ -91,7 +91,7 @@ class Array
91
91
  end
92
92
 
93
93
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
94
- def permutation(num = Backports::Undefined, &block)
94
+ def permutation(num = Backports::Undefined)
95
95
  return to_enum(:permutation, num) unless block_given?
96
96
  num = num.equal?(Backports::Undefined) ?
97
97
  size :
@@ -197,6 +197,7 @@ class Array
197
197
 
198
198
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
199
199
  def shuffle!
200
+ raise TypeError, "can't modify frozen array" if frozen?
200
201
  size.times do |i|
201
202
  r = i + Kernel.rand(size - i)
202
203
  self[i], self[r] = self[r], self[i]
@@ -14,18 +14,24 @@ module Enumerable
14
14
  end unless method_defined? :count
15
15
 
16
16
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
17
- def cycle(n = nil, &block)
17
+ def cycle(n = nil)
18
18
  return to_enum(:cycle, n) unless block_given?
19
- return loop(&block) if nil == n
20
- n = Backports.coerce_to_int(n)
21
- if n >= 1
22
- cache = []
23
- each do |elem|
24
- cache << elem
25
- block.call(elem)
19
+ if n.nil?
20
+ each{|e| yield e } until false
21
+ else
22
+ n = Backports.coerce_to_int(n)
23
+ if n >= 1
24
+ cache = []
25
+ each do |elem|
26
+ cache << elem
27
+ yield elem
28
+ end
29
+ (n-1).times do
30
+ cache.each{|e| yield e }
31
+ end
26
32
  end
27
- cache.cycle(n-1, &block)
28
33
  end
34
+ nil
29
35
  end unless method_defined? :cycle
30
36
 
31
37
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
@@ -43,7 +49,7 @@ module Enumerable
43
49
  end unless method_defined? :drop
44
50
 
45
51
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
46
- def drop_while(&block)
52
+ def drop_while
47
53
  return to_enum(:drop_while) unless block_given?
48
54
  ary = []
49
55
  dropping = true
@@ -55,7 +61,7 @@ module Enumerable
55
61
 
56
62
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
57
63
  if instance_method(:each_with_index).arity.zero?
58
- def each_with_index_with_optional_args_and_block(*args, &block)
64
+ def each_with_index_with_optional_args_and_block(*args)
59
65
  return to_enum(:each_with_index, *args) unless block_given?
60
66
  idx = 0
61
67
  each(*args) { |o| yield(o, idx); idx += 1 }
@@ -119,15 +125,25 @@ module Enumerable
119
125
  end
120
126
 
121
127
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
122
- def max_by(&block)
128
+ def max_by
123
129
  return to_enum(:max_by) unless block_given?
124
- minmax_by(&block)[1]
130
+ max_object, max_result = nil, MOST_EXTREME_OBJECT_EVER
131
+ each do |object|
132
+ result = yield object
133
+ max_object, max_result = object, result if max_result < result
134
+ end
135
+ max_object
125
136
  end unless method_defined? :max_by
126
137
 
127
138
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
128
- def min_by(&block)
139
+ def min_by
129
140
  return to_enum(:min_by) unless block_given?
130
- minmax_by(&block).first
141
+ min_object, min_result = nil, MOST_EXTREME_OBJECT_EVER
142
+ each do |object|
143
+ result = yield object
144
+ min_object, min_result = object, result if min_result > result
145
+ end
146
+ min_object
131
147
  end unless method_defined? :min_by
132
148
 
133
149
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
@@ -148,7 +164,7 @@ module Enumerable
148
164
  end unless method_defined? :minmax
149
165
 
150
166
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
151
- def minmax_by(&block)
167
+ def minmax_by
152
168
  return to_enum(:minmax_by) unless block_given?
153
169
  min_object, min_result = nil, MOST_EXTREME_OBJECT_EVER
154
170
  max_object, max_result = nil, MOST_EXTREME_OBJECT_EVER
@@ -166,7 +182,7 @@ module Enumerable
166
182
  end unless method_defined? :none?
167
183
 
168
184
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
169
- def one?(&block)
185
+ def one?
170
186
  found_one = false
171
187
  if block_given?
172
188
  each do |o|
@@ -189,10 +205,10 @@ module Enumerable
189
205
  Backports.alias_method self, :reduce, :inject
190
206
 
191
207
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
192
- def reverse_each(&block)
208
+ def reverse_each
193
209
  return to_enum(:reverse_each) unless block_given?
194
210
  # There is no other way then to convert to an array first... see 1.9's source.
195
- to_a.reverse_each(&block)
211
+ to_a.reverse_each{|e| yield e}
196
212
  self
197
213
  end unless method_defined? :reverse_each
198
214
 
@@ -13,10 +13,19 @@ module Kernel
13
13
  send(:"temporary method for instance_exec", *arg)
14
14
  end unless method_defined? :instance_exec
15
15
 
16
- # Loop. Standard in ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Object.html]
17
- unless const_defined? :StopIteration
18
- class StopIteration < IndexError; end
16
+ # Standard in ruby 1.8.7. See official documentation[http://ruby-doc.org/core-1.9/classes/Object.html]
17
+ def tap
18
+ yield self
19
+ self
20
+ end unless method_defined? :tap
21
+
22
+ end
23
+
24
+ # Loop. Standard in ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/Object.html]
25
+ unless Object.const_defined? :StopIteration
26
+ class StopIteration < IndexError; end
19
27
 
28
+ module Kernel
20
29
  def loop_with_stop_iteration(&block)
21
30
  loop_without_stop_iteration(&block)
22
31
  rescue StopIteration
@@ -24,11 +33,4 @@ module Kernel
24
33
  end
25
34
  Backports.alias_method_chain self, :loop, :stop_iteration
26
35
  end
27
-
28
- # Standard in ruby 1.8.7. See official documentation[http://ruby-doc.org/core-1.9/classes/Object.html]
29
- def tap
30
- yield self
31
- self
32
- end unless method_defined? :tap
33
-
34
- end
36
+ end
@@ -15,9 +15,9 @@ class String
15
15
 
16
16
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
17
17
  unless method_defined? :each_char
18
- def each_char(&block)
18
+ def each_char
19
19
  return to_enum(:each_char) unless block_given?
20
- scan(/./, &block)
20
+ scan(/./) {|c| yield c}
21
21
  end
22
22
 
23
23
  Backports.alias_method self, :chars, :each_char
@@ -27,18 +27,18 @@ class String
27
27
 
28
28
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
29
29
  def end_with?(*suffixes)
30
- suffixes.each do |suffix|
31
- next unless suffix.respond_to? :to_str
32
- suffix = suffix.to_str
33
- return true if self[-suffix.length, suffix.length] == suffix
30
+ suffixes.any? do |suffix|
31
+ if suffix.respond_to? :to_str
32
+ suffix = suffix.to_str
33
+ self[-suffix.length, suffix.length] == suffix
34
+ end
34
35
  end
35
- false
36
36
  end unless method_defined? :end_with?
37
37
 
38
38
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
39
39
  unless ("check partition".partition(" ") rescue false)
40
- def partition_with_new_meaning(pattern = Backports::Undefined, &block)
41
- return partition_without_new_meaning(&block) if pattern == Backports::Undefined
40
+ def partition_with_new_meaning(pattern = Backports::Undefined)
41
+ return partition_without_new_meaning{|c| yield c} if pattern == Backports::Undefined
42
42
  pattern = Backports.coerce_to(pattern, String, :to_str) unless pattern.is_a? Regexp
43
43
  i = index(pattern)
44
44
  return [self, "", ""] unless i
@@ -70,21 +70,21 @@ class String
70
70
 
71
71
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
72
72
  def start_with?(*prefixes)
73
- prefixes.each do |prefix|
74
- next unless prefix.respond_to? :to_str
75
- prefix = prefix.to_str
76
- return true if self[0, prefix.length] == prefix
73
+ prefixes.any? do |prefix|
74
+ if prefix.respond_to? :to_str
75
+ prefix = prefix.to_str
76
+ self[0, prefix.length] == prefix
77
+ end
77
78
  end
78
- false
79
79
  end unless method_defined? :start_with?
80
80
 
81
81
  # Standard in Ruby 1.8.7+. See official documentation[http://ruby-doc.org/core-1.9/classes/String.html]
82
82
  unless ("abc".upto("def", true) rescue false)
83
- def upto_with_exclusive(to, excl=false, &block)
84
- return upto_without_exclusive(to, &block) if block_given? && !excl
83
+ def upto_with_exclusive(to, excl=false)
84
+ return upto_without_exclusive(to){|s| yield s} if block_given? && !excl
85
85
  enum = Range.new(self, to, excl).to_enum
86
86
  return enum unless block_given?
87
- enum.each(&block)
87
+ enum.each{|s| yield s}
88
88
  self
89
89
  end
90
90
  Backports.alias_method_chain self, :upto, :exclusive
@@ -1,7 +1,7 @@
1
1
  class Array
2
2
  # Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
3
3
  class << self
4
- def self.try_convert(obj)
4
+ def try_convert(obj)
5
5
  return nil unless obj.respond_to?(:to_ary)
6
6
  Backports.coerce_to_ary(obj)
7
7
  end unless method_defined? :try_convert
@@ -1,8 +1,8 @@
1
1
  module Enumerable
2
2
  # Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/Enumerable.html]
3
- def each_with_object(memo, &block)
3
+ def each_with_object(memo)
4
4
  return to_enum(:each_with_object, memo) unless block_given?
5
- each {|obj| block.call(obj, memo)}
5
+ each {|obj| yield obj, memo}
6
6
  memo
7
7
  end unless method_defined? :each_with_object
8
8
  end
@@ -1,7 +1,7 @@
1
1
  class IO
2
2
  # Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/IO.html]
3
3
  class << self
4
- def self.try_convert(obj)
4
+ def try_convert(obj)
5
5
  return nil unless obj.respond_to?(:to_io)
6
6
  Backports.coerce_to(obj, IO, :to_io)
7
7
  end unless method_defined? :try_convert
@@ -1,9 +1,13 @@
1
1
  class Regexp
2
2
  # Standard in Ruby 1.8.8. See official documentation[http://ruby-doc.org/core-1.9/classes/Array.html]
3
3
  class << self
4
- def self.try_convert(obj)
5
- return nil unless obj.respond_to?(:to_regexp)
6
- Backports.coerce_to(obj, Regexp, :to_regexp)
4
+ def try_convert(obj)
5
+ case
6
+ when obj.is_a?(Regexp)
7
+ obj
8
+ when obj.respond_to?(:to_regexp)
9
+ Backports.coerce_to(obj, Regexp, :to_regexp)
10
+ end
7
11
  end unless method_defined? :try_convert
8
12
  end
9
13
  end
@@ -29,7 +29,7 @@ class Array
29
29
 
30
30
  # Note: Combinations are not yielded in the same order as MRI.
31
31
  # This is not a bug; the spec states that the order is implementation dependent
32
- def repeated_combination(num, &block)
32
+ def repeated_combination(num)
33
33
  return to_enum(:repeated_combination, num) unless block_given?
34
34
  num = Backports.coerce_to_int(num)
35
35
  if num <= 0
@@ -47,7 +47,7 @@ class Array
47
47
 
48
48
  # Note: Permutations are not yielded in the same order as MRI.
49
49
  # This is not a bug; the spec states that the order is implementation dependent
50
- def repeated_permutation(num, &block)
50
+ def repeated_permutation(num)
51
51
  return to_enum(:repeated_permutation, num) unless block_given?
52
52
  num = Backports.coerce_to_int(num)
53
53
  if num <= 0
@@ -74,20 +74,22 @@ class Array
74
74
  concat(slice!(0, n))
75
75
  end unless method_defined? :rotate!
76
76
 
77
- def select!(&block)
77
+ def select!
78
78
  return to_enum(:select!) unless block_given?
79
79
  reject!{|elem| ! yield elem}
80
80
  end unless method_defined? :select!
81
81
 
82
- def sort_by!(&block)
82
+ def sort_by!
83
83
  return to_enum(:sort_by!) unless block_given?
84
- replace sort_by(&block)
84
+ raise "can't modify frozen array" if frozen?
85
+ replace sort_by{|e| yield e}
85
86
  end unless method_defined? :sort_by!
86
87
 
87
88
  unless [1,2].uniq!{}
88
- def uniq_with_block!(&block)
89
+ def uniq_with_block!
89
90
  return uniq_without_block! unless block_given?
90
- u = uniq(&block)
91
+ replace self if frozen? # force error
92
+ u = uniq{|e| yield e}
91
93
  replace u unless u.size == size
92
94
  end
93
95
  Backports.alias_method_chain self, :uniq!, :block
@@ -23,7 +23,7 @@ module Backports
23
23
 
24
24
  # Metaprogramming utility to make block optional.
25
25
  # Tests first if block is already optional when given options
26
- def self.make_block_optional mod,*methods
26
+ def self.make_block_optional(mod, *methods)
27
27
  options = methods.last.is_a?(Hash) ? methods.pop : {}
28
28
  methods.each do |selector|
29
29
  unless mod.method_defined? selector
@@ -55,7 +55,7 @@ module Backports
55
55
  end
56
56
 
57
57
  # Metaprogramming utility to convert the first file argument to path
58
- def self.convert_first_argument_to_path mod,*methods
58
+ def self.convert_first_argument_to_path(mod, *methods)
59
59
  methods.each do |selector|
60
60
  unless mod.method_defined? selector
61
61
  warn "#{mod}##{selector} is not defined, so argument can't converted to path"
@@ -81,7 +81,7 @@ module Backports
81
81
  end
82
82
 
83
83
  # Metaprogramming utility to convert all file arguments to paths
84
- def self.convert_all_arguments_to_path mod, skip, *methods
84
+ def self.convert_all_arguments_to_path(mod, skip, *methods)
85
85
  methods.each do |selector|
86
86
  unless mod.method_defined? selector
87
87
  warn "#{mod}##{selector} is not defined, so arguments can't converted to path"
@@ -100,7 +100,12 @@ module Backports
100
100
  end
101
101
 
102
102
  def self.convert_to_path(file_or_path)
103
- coerce_to(file_or_path, String, :to_str) rescue coerce_to(file_or_path, String, :to_path) rescue file_or_path
103
+ begin
104
+ file_or_path = file_or_path.to_path
105
+ rescue NoMethodError
106
+ # ignore
107
+ end
108
+ coerce_to(file_or_path, String, :to_str)
104
109
  end
105
110
 
106
111
  # Modified to avoid polluting Module if so desired
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: backports
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 15
4
5
  prerelease: false
5
6
  segments:
6
- - 1
7
- - 18
8
7
  - 2
9
- version: 1.18.2
8
+ - 0
9
+ - 0
10
+ version: 2.0.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - "Marc-Andr\xC3\xA9 Lafortune"
@@ -14,7 +15,7 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-10-09 00:00:00 -04:00
18
+ date: 2011-03-04 00:00:00 -05:00
18
19
  default_executable:
19
20
  dependencies: []
20
21
 
@@ -92,7 +93,6 @@ files:
92
93
  - lib/backports/1.9.2/hash.rb
93
94
  - lib/backports/1.9.2/kernel.rb
94
95
  - lib/backports/1.9.2/match_data.rb
95
- - lib/backports/1.9.2/method.rb
96
96
  - lib/backports/1.9.2/random.rb
97
97
  - lib/backports/1.9.2/random/MT19937.rb
98
98
  - lib/backports/1.9.2/random/bits_and_bytes.rb
@@ -141,23 +141,27 @@ rdoc_options:
141
141
  require_paths:
142
142
  - lib
143
143
  required_ruby_version: !ruby/object:Gem::Requirement
144
+ none: false
144
145
  requirements:
145
146
  - - ">="
146
147
  - !ruby/object:Gem::Version
148
+ hash: 3
147
149
  segments:
148
150
  - 0
149
151
  version: "0"
150
152
  required_rubygems_version: !ruby/object:Gem::Requirement
153
+ none: false
151
154
  requirements:
152
155
  - - ">="
153
156
  - !ruby/object:Gem::Version
157
+ hash: 3
154
158
  segments:
155
159
  - 0
156
160
  version: "0"
157
161
  requirements: []
158
162
 
159
163
  rubyforge_project: backports
160
- rubygems_version: 1.3.6
164
+ rubygems_version: 1.3.7
161
165
  signing_key:
162
166
  specification_version: 3
163
167
  summary: Backports of Ruby 1.8.7+ for older ruby.
@@ -1,101 +0,0 @@
1
- # Standard in Ruby 1.9.2.
2
- unless Kernel.method_defined? :respond_to_missing?
3
- module MissingMethod
4
- attr_reader :name
5
-
6
- def call(*arg, &block)
7
- receiver.send :method_missing, @name, *arg, &block
8
- end
9
- alias_method :[], :call
10
-
11
- def eql?(method)
12
- method.is_a?(MissingMethod) &&
13
- receiver == method.receiver &&
14
- name == method.name
15
- end
16
- alias_method :==, :eql?
17
-
18
- def arity
19
- -1
20
- end
21
-
22
- def owner
23
- @receiver.class
24
- end
25
-
26
- def source_location
27
- nil
28
- end
29
-
30
- def to_proc
31
- get_block {|*arg| @receiver.send :method_missing, *arg}
32
- end
33
-
34
- def unbind
35
- MissingUnboundMethod.new(owner, name)
36
- end
37
-
38
- def self.new(receiver, name)
39
- m = receiver.method :respond_to_missing?
40
- m.extend self
41
- m.instance_variable_set :@name, name
42
- m
43
- end
44
- #private
45
- def get_block(&block)
46
- block
47
- end
48
- private :get_block
49
- end
50
-
51
- module MissingUnboundMethod
52
- attr_reader :name
53
- attr_reader :owner
54
-
55
- def self.new(owner, name)
56
- um = owner.instance_method :respond_to_missing?
57
- um.extend self
58
- um.instance_variable_set :@name, name
59
- um.instance_variable_set :@owner, owner
60
- um
61
- end
62
-
63
- def arity
64
- -1
65
- end
66
-
67
- def source_location
68
- nil
69
- end
70
-
71
- def bind(to)
72
- raise TypeError, "bind argument must be an instance of #{@owner}" unless to.is_a? @owner
73
- MissingMethod.new(to, @name)
74
- end
75
- end
76
-
77
- module Kernel
78
- def respond_to_missing? method
79
- false
80
- end
81
-
82
- def respond_to_with_call_to_respond_to_missing? method, include_priv=false
83
- respond_to_without_call_to_respond_to_missing?(method, include_priv) || respond_to_missing?(method)
84
- end
85
- Backports.alias_method_chain self, :respond_to?, :call_to_respond_to_missing
86
-
87
- def method_with_new_repond_to_missing(method)
88
- method_without_new_repond_to_missing(method)
89
- rescue NameError
90
- respond_to_missing?(method) ? MissingMethod.new(self, method): raise
91
- end
92
- Backports.alias_method_chain self, :method, :new_repond_to_missing
93
-
94
- def public_method_with_new_repond_to_missing(method)
95
- public_method_without_new_repond_to_missing(method)
96
- rescue NameError
97
- respond_to_missing?(method) ? MissingMethod.new(self, method): raise
98
- end
99
- Backports.alias_method_chain self, :public_method, :new_repond_to_missing if method_defined? :public_method
100
- end
101
- end