我有一个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尚未初始化。我该怎么办?
顺便说一下。我在模块中使用这个常量 - 所以我必须尽快初始化。 (如果我理解的话)
答案 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")
一切顺利;)