2012-03-07 59 views
0

我有我在我的/ lib文件夾中創建一個自定義類的初始化:在我的/ config文件夾創建可通過一個YAML配置到自定義類

/lib/user_service.rb 

我也有一個user_service.yml文件。

我想將這個yml文件傳遞給我的UserService類,並設置一些類級別的變量。

我不知道如何創建類變量以及如何設置這些變量。

我YAML文件都有的東西,如:

user_service_url: http://www.example.com/user_service/ 

user_service_table: "UserTable1" 

所以我UserService類應該有這2個屬性是可公開訪問的,他們是類變量(所以你不要」需要一個實例來訪問它,但實例應該能夠引用它)。

有人可以幫助我嗎?

/lib/user_service.rb 

module MYAPP 
    class UserService 
    end 
end 

回答

2

可以按如下的YAML文件加載到一個散列類:

module MYAPP 
    class UserService 
    SERVICES = YAML::Load(File.open(filepath)) 
    end 
end 

然後,您可以訪問像這樣的兩個變量:

UserService::SERVICES['user_service_url'] 

如果你想在沒有散列引用樣式的情況下訪問它們,你可以編寫深入散列的方法,或者實現method_missing,或許在啓動時執行散列查找。

+0

謝謝,但我希望這些方法引用類變量,這就是爲什麼我想在初始化中做到這一點。我不希望它每次都從yaml讀取,只有一次設置class vars。 – Blankman 2012-03-07 22:02:33

+0

加載到這樣的常量中不會導致YAML每次只能重新讀取一次。 – 2012-03-07 22:55:42

相關問題