何を達成しようとしているのか正確にはわかりませんが、オブジェクトがパラメーターとして渡されることを期待する Proc があり、そのオブジェクトにはブロックを受け入れるメソッドがあります。
module ModB
def self.some_method
puts 'some_method before yield'
yield
puts 'some_method after yield'
end
end
proc_a = Proc.new do |b|
puts 'proc_a called'
b.some_method do
puts 'block called'
end
end
proc_a.(ModB)
# proc_a called
# some_method before yield
# block called
# some_method after yield
したがって、proc_aには何らかのフラグが必要です
proc_a = Proc.new do |run_me, b|
puts 'proc_a called' if run_me
b.some_method do
puts 'block called'
end
end
または、 some_method のブロックを個別に保存する必要があります。
proc_a = Proc.new do
puts 'proc_a called'
end
proc_b = Proc.new do
puts 'block called'
end
proc_a.()
# proc_a called
ModB.some_method(&proc_b)
# some_method before yield
# block called
# some_method after yield