Спасение NameError только в этом классе

У меня есть скрипт Ruby, и я делаю это

module MyModule
    class MyClass
        def do_something
            begin
                deployer_object = Object.const_get("MyModule").const_get("#{class_name}Deployer").new(@config, @directory).deploy
            rescue NameError => e
                MyModule::Logger.error("Error loading the deployer #{class_name}. This deployer it's not installed!")
            end
        end
    end
end

Теперь он спасает все исключения NameError в этом классе, а также одно, загруженное в пятой строке. Как я могу сделать так, чтобы он спасал исключения только в MyModule::MyClass, а не в том, который инициализируется в 5-й строке? Спасибо!


person pmerino    schedule 13.01.2013    source источник


Ответы (1)


Вам не нужно снова упаковывать все в begin. Это работает таким же образом:

module MyModule
    class MyClass
        def do_something
            deployer_object = Object.const_get("MyModule").const_get("#{class_name}Deployer").new(@config, @directory).deploy
        rescue NameError => e
            MyModule::Logger.error("Error loading the deployer #{class_name}. This deployer it's not installed!")
        end
    end
end

Я не совсем понимаю ваш вопрос. От чего вы пытаетесь спастись? Вы не хотите перехватывать исключения из инициализатора Deployer's?

person shime    schedule 13.01.2013