1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67
|
module M
def foo
end
def M.mmm
end
end
module N
def bar
end
def N.nnn
end
end
module X
end
puts '--- cannot initialize frozen module:'
X.freeze
p X.send(:initialize_copy, N) rescue p $!
puts '--- direct call:'
M.send(:initialize_copy, N)
p M.instance_methods(false)
p M.singleton_methods(false)
puts '--- name:'
$m = Module.new
$m.send :initialize_copy, M
p $m.name
##########################################
class Module
def initialize_copy *a
puts 'init_copy'
end
end
puts '--- clone:'
M_clone = M.clone
p M_clone.instance_methods(false)
p M_clone.singleton_methods(false)
puts '--- dup:'
M_dup = M.dup
p M_dup.instance_methods(false)
p M_dup.singleton_methods(false)
puts '--- name:'
$m = Module.new
$m.send :initialize_copy, M
p $m.name
|