2014-06-06 21 views
0

我有一個小型的Rails應用程序和我自己的引擎。每個引擎都應該加載應該由Rails應用程序使用的yaml文件。我想最好的方法是使用將每個gem的yaml文件存儲到初始化程序中的一個常量中,這會使這些常量以及文件可用於Rails應用程序。現在我有更多的寶石可以做到這一點。有沒有一種方法可以在Rails應用程序中初始化一個數組(作爲一個我可以想象的全局數組),這可以通過依賴gem來訪問,並將這些文件路徑(常量)添加到它自己。然後我可以遍歷這個全局,而不必調用每個gem的初始化常量。哪裏纔是放置這樣一個常數的最佳地點?它需要在gem初始化之前初始化。使用變量來存儲寶石數據

+0

我把全局置於boot.rb中,它確實有效,但我不確定這是否是正確的方法。事實上,是否有替代使用全球? – absessive

+0

Gem FrozenRecord可能對您有所幫助:https://github.com/byroot/frozen_record – MrYoshiji

回答

1

看看config/application.rb。該文件定義了一個可用於設置和獲取自定義配置參數的類。給這樣的嘗試一下:

# config/application.rb 
module MyApp 
    class Application < Rails::Application 
    config.yaml_stuff = {} 
    end 
end 

# my_plugin/config/initializers/load_yaml_data.rb 
MyApp::Application.config.yaml_suff[:my_plugin] = YAML.load_file('whatever.yml')