file1 требует file2, и я хочу иметь возможность отменить оценку file2 при определенных условиях, не выходя из всего процесса.
# file1.rb
puts "In file 1"
require 'file2'
puts "Back in file 1"
# file2.rb
puts "In file 2"
# return if some_conditional
puts "Still in file 2"
При запуске file1 вывод, который я хочу увидеть:
In file 1
In file 2
Back in file 1
Цель состоит в том, чтобы Still in file 2 никогда не печатался, а Back in file 1 печатает. Могу ли я что-нибудь сделать в file2 чтобы сделать это возможным?
Я не могу использовать exit/exit!/abort здесь, потому что Back in file 1 никогда не будет печататься. Я мог бы использовать raise/fail, но для этого мне пришлось бы изменить file1 и rescue сбойное require. Я надеюсь найти способ, который не предполагает изменения file1.
ОБНОВЛЕНИЕ:
Функция "возвращение верхнего уровня" была добавлена.