2016-07-15 39 views
0

我的應用程序有lib/project/errors其中包含了一些異常類,其中之一是ServiceException導軌 - 包括含有類模塊爲未初始化的常量錯誤

module Project 
    module Errors 
    class ServiceException < Exception 

     def initialize(message = nil) 
     super message 
     end 
    end 
    end 
end 

我想在我的GameService使用這個的:

module GameMan 


    class GameService 
    Blah blah 

    def validate(score) 
     raise Project::Errors::ServiceException.new('blah') 
    end 

    end 
end 

This works, 但是我討厭寫滿的模塊路徑無處不在。有沒有辦法避免這種情況?

我已經試過

module GameMan 

    class GameService 
     include Project::Errors 
     Blah blah 

     def validate(score) 
     raise ServiceException.new('blah') 
     end 

    end 
end 

這給 uninitialized constant ServiceException錯誤。

config.autoload_paths += %W(#{config.root}/lib #{config.root}/app/services) already set in application.rb``

我在做什麼錯?

回答

1

這一切都是關於常量查找。

ServiceException定義在Project::Errors的範圍內。當您參考ServiceException而沒有添加前綴Project::Errors時,它會查找外部作用域中定義的類,並失敗,因爲沒有。

您應該使用完整路徑。

0
include Project::Errors 

替換上面的行至下面的行 包括項目::錯誤:: ServiceException

相關問題