Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 使用Rails中DB的值初始化常量_Ruby On Rails_Ruby_Database_Activerecord - Fatal编程技术网

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

Ruby on rails 使用Rails中DB的值初始化常量,ruby-on-rails,ruby,database,activerecord,Ruby On Rails,Ruby,Database,Activerecord,我有一个Railsv2.0.2应用程序。 我想在initializers/constants.rb中初始化一个常量,并从DB设置它的值 smth是这样的: SESSION_DURATION = SystemDB::Configuration.get('session_duration', 0).to_i.minutes 因此,我在PostgreSQL中有一个配置表,其中的行名称为'session_duration'。 此代码在我的本地Windows PC上运行正常,但在使用Linux的生产服务

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

smth是这样的:

SESSION_DURATION = SystemDB::Configuration.get('session_duration', 0).to_i.minutes
因此,我在PostgreSQL中有一个配置表,其中的行名称为'session_duration'。 此代码在我的本地Windows PC上运行正常,但在使用Linux的生产服务器上失败,错误为:“检索\u连接”:ActiveRecord::ConnectionNotesAblished(ActiveRecord::ConnectionNotesAblished)

在我看来,rails初始化constants.rb文件时,ActiveRecord还没有初始化。我能用它做什么


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

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

也就是说,您比我更了解您的应用程序,您需要这样做可能是有原因的。。如果是这样的话,这会有点混乱,但您可以始终只需要在常量文件中使用activerecord,然后首先手动连接到数据库

require "rubygems"
require "activerecord"

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

祝你一切顺利;)

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

也就是说,您比我更了解您的应用程序,您需要这样做可能是有原因的。。如果是这样的话,这会有点混乱,但您可以始终只需要在常量文件中使用activerecord,然后首先手动连接到数据库

require "rubygems"
require "activerecord"

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

祝你一切顺利;)

我需要使用常数,这种方式将复制数据库配置,这是不好的,但无论如何,谢谢。也许我可以把常数在其他文件?但我需要在模块(/lib/directory)中访问常量,我需要使用常量,这种方式将复制DB配置,这不好,但无论如何,谢谢。也许我可以将常量放在其他文件中?但我需要在模块(/lib/directory)中访问这些常量