2011-10-14 81 views
1

我有一個Rails v 2.0.2應用程序。 我想在initializers/constants.rb中初始化一個常量,並從DB中設置它的值。使用Rails數據庫中的值初始化常量

水木清華這樣的:

SESSION_DURATION = SystemDB::Configuration.get('session_duration', 0).to_i.minutes 

所以,我已經有了一個配置表中的PostgreSQL與行,其中name = 'session_duration'。 此代碼工作正常我本地的Windows PC上,但它的生產服務器的Linux錯誤上失敗:`retrieve_connection「:的ActiveRecord :: ConnectionNotEstablished(ActiveRecord的:: ConnectionNotEstablished)

在我看來,當時軌初始化constants.rb文件ActiveRecord尚未初始化。我能用它做什麼?

By The Way。我在模塊中使用這個常量 - 所以它必須儘快初始化。 (如果我理解的很好)

回答

1

這可能不是最好的辦法做到這一點..如果你想從數據庫中的字段設置常量,那麼我假設它實際上是一個變量而不是不變。如果該值發生變化,那麼在重新啓動Web服務器之前,您的應用程序實際上不會實現更改。你可能會更好地進行數據庫調用,而不是在應用程序中使用對SESSION_DURATION的引用。數據庫調用很便宜。你可能想重新考慮你的方法。

這就是說,你比我更瞭解你的應用程序,並且可能有你需要這樣做的原因。如果是這樣的話,這有點麻煩,但你總是可以在你的常量文件中需要activerecord,手動連接到數據庫第一..

require "rubygems" 
require "activerecord" 

ActiveRecord::Base.establish_connection (
    :adapter => "mysql", 
    :host => "localhost", 
    :username => "user", 
    :password => "password", 
    :database => "some_database") 

所有最好的;)

+0

我需要使用常數和這樣將複製數據庫的配置這是不好的,但無論如何,謝謝。 –

+0

也許我可以把CONSTANTS放在其他文件中?但我需要在模塊(/ lib /目錄)中訪問常量 –

相關問題