backports 1.18.2 → 2.0.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.
@@ -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