class RemovedMethodClass
def first_method; end
def second_method; end
def third_method; end
def forth_method; end
end
RemovedMethodClass.instance_methods(false)
[:first_method, :second_method, :third_method, :forth_method]
RemovedMethodClass.class_eval do
remove_method :second_method, :third_method
end
RemovedMethodClass.instance_methods(false)
[:first_method, :forth_method]
RemovedMethodClass.class_eval do
remove_method :undefined_method
end
NameError: method `undefined_method' not defined in RemovedMethodClass
<main>:1:in `remove_method'
<main>:1:in `block in <main>'
<main>:in `class_eval'
<main>:in `<main>'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:44:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:44:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:12:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:90:in `execute_request'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:49:in `dispatch'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:38:in `run'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/command.rb:110:in `run_kernel'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/command.rb:40:in `run'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/bin/iruby:5:in `<top (required)>'
/home/aki/.rbenv/versions/2.7.1/bin/iruby:23:in `load'
/home/aki/.rbenv/versions/2.7.1/bin/iruby:23:in `<main>'
class SuperClass
def super_method
:super_method
end
end
class InheriteClass < SuperClass
def super_method
:inherite
end
end
p InheriteClass.new.super_method
class InheriteClass
undef_method :super_method
end
InheriteClass.new.super_method
:inherite
NoMethodError: undefined method `super_method' for #<InheriteClass:0x0000000001a15210>
<main>:18:in `<main>'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:44:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:44:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:12:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:90:in `execute_request'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:49:in `dispatch'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:38:in `run'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/command.rb:110:in `run_kernel'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/command.rb:40:in `run'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/bin/iruby:5:in `<top (required)>'
/home/aki/.rbenv/versions/2.7.1/bin/iruby:23:in `load'
/home/aki/.rbenv/versions/2.7.1/bin/iruby:23:in `<main>'
class BindingCreator
def create_binding
a = 1
binding
end
end
creator = BindingCreator.new
binding_object = creator.create_binding
p binding_object.receiver
creator == binding_object.receiver
#<BindingCreator:0x0000000001068de8>
true
p binding_object.local_variables
p binding_object.local_variable_defined?(:a)
binding_object.local_variable_defined?(:b)
[:a] true
false
p binding_object.local_variable_get(:a)
p binding_object.local_variable_get(:b)
1
NameError: local variable `b' is not defined for #<Binding:0x0000000001068b18>
<main>:1:in `local_variable_get'
<main>:1:in `<main>'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:44:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:44:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/backend.rb:12:in `eval'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:90:in `execute_request'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:49:in `dispatch'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/kernel.rb:38:in `run'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/command.rb:110:in `run_kernel'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/lib/iruby/command.rb:40:in `run'
/home/aki/.rbenv/versions/2.7.1/lib/ruby/gems/2.7.0/gems/iruby-0.4.0/bin/iruby:5:in `<top (required)>'
/home/aki/.rbenv/versions/2.7.1/bin/iruby:23:in `load'
/home/aki/.rbenv/versions/2.7.1/bin/iruby:23:in `<main>'
p binding_object.local_variable_set(:b, 2)
p binding_object.local_variables
binding_object.local_variable_get(:b)
2 [:b, :a]
2
次回「10-4 イベントをフックする」から