使用Rails中DB的值初始化常量

时间:2011-10-14 08:17:04

标签: ruby-on-rails ruby database activerecord

我有一个Rails v 2.0.2应用程序。 我想在initializers / constants.rb中初始化一个常量,并从DB中设置它的值。

像这样:

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

所以我在PostgreSQL中有一个配置表,其中name ='session_duration'。 此代码在我的本地Windows PC上正常工作,但在生产服务器上出现故障,但出现错误:`retrieve_connection':ActiveRecord :: ConnectionNotEstablished(ActiveRecord :: ConnectionNotEstablished)

在我看来,当时rails初始化constants.rb文件ActiveRecord尚未初始化。我该怎么办?

顺便说一下。我在模块中使用这个常量 - 所以我必须尽快初始化。 (如果我理解的话)

1 个答案:

答案 0 :(得分:1)

这可能不是最好的方法。如果你想从数据库中的字段设置常量,那么我假设它实际上是一个变量而不是常量。如果值发生更改,则在重新启动Web服务器之前,您的应用程序实际上不会进行更改。您可能最好不要在应用程序中使用SESSION_DURATION来进行数据库调用。数据库调用很便宜。您可能想重新考虑您的方法。

那就是说,你比我更了解你的应用程序,你可能有理由这样做..如果是这样的话,这有点乱,但你总是可以在你的常量文件中需要activerecord并手动首先连接到您的数据库..

require "rubygems"
require "activerecord"

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

一切顺利;)