2013-01-13 26 views
0

我有一個Ruby腳本和我做這個救援NameError只是在這個類

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異常和一個第5行裝爲好。我怎樣才能做到這一點,它只能拯救MyModule :: MyClass中的異常,而不是在第5行中初始化的異常中?謝謝!

回答

2

您不需要再次將所有內容都包含在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初始化程序中發現異常?

+0

是的,這工作正如我所需要的。謝謝! – pmerino