這是我如何處理這些東西,但這只是一個好主意,如果密鑰的數量不是太大。
1.創建一個模型來訪問你的數據庫像這樣的:
應用程序/模型/ config_table.rb
class ConfigTable < ActiveRecord::Base
# whatever you need here
end
2.創建一個初始化
配置/初始化/ ADMIN_CONFIG。 rb
class AdminConfig
# uncomment this if in development
#unloadable
# I assume you have the fields key/value in your
# ConfigTable you may need to change this
def self.all
# create a cached hash
@cache ||= ConfigTable.all.inject({}) do |hsh, c_config|
hsh[c_config.key.to_sym] = c_config.value
hsh
end
end
def self.get(key)
self.all[key.to_sym]
end
def self.[](key)
self.all[key.to_sym]
end
end
用法示例(您的Appp中的任何位置):
AdminConfig.get(:hostname)
AdminConfig.get('hostname')
AdminConfig[:hostname]
AdminConfig['hostname']
如果由於更改需要重新加載配置,則必須重新啓動所有正在運行的應用程序實例。您可能需要修改表格/列的名稱當然:)
如果您需要更大的鍵/值集合的解決方案,我建議您將它存儲在導軌的緩存中,也可以使用redis-store: )
玩得開心
您的第三方數據庫發生了變化,還是鍵/值對不變?如果它們不變,你有多少個k/v對?許多?數百?成千上萬的? – sled
好問題。我不認爲數據庫變化很大。該表中目前少於25個條目。鍵/值不是以用戶可訪問的任何方式設置的,只是管理員可以直接訪問數據庫,所以鍵/值應該在很大程度上是可預測的。 – John
也許模型中的元方法可以將關鍵字名稱作爲參數傳遞給我,這對我來說會更容易一些。就像,SysParam.getsetting('keyname')會返回值。 – John