Если вам нужно что-то, что действительно подсказывало бы пользователю во время выполнения скрипта, вы можете обернуть методы, о которых вам нужно запросить:
module Confirmable
def confirm_first *methods
methods.each do |meth|
alias_method "orig_#{meth}", meth
define_method meth do |*args, &block|
print "Execute #{meth}?[Yn] "
s = gets.chomp
return if s.downcase == 'n'
send "orig_#{meth}", *args, &block
end
end
end
end
class MyClass
extend Confirmable
def foo arg
puts "starting foo"
puts arg
end
confirm_first :foo
end
c = MyClass.new
c.foo "bar"
Таким образом, каждый метод, который вы пометите confirm_first
сначала запросит подтверждение перед выполнением.