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
.
ОБНОВЛЕНИЕ:
Функция "возвращение верхнего уровня" была добавлена.