独立ruby - 如何从database.yml加载不同的环境

tru*_*ekr 10 ruby activerecord yaml ruby-on-rails

我有一个后台进程来修改数据库中的记录.模型使用以下内容连接到数据库:

dbconfig = YAML::load(File.open('database.yml'))
ActiveRecord::Base.establish_connection(dbconfig["development"])
class Clcar < ActiveRecord::Base
 ....
end
Run Code Online (Sandbox Code Playgroud)

所有模型类都将这些行放在顶部.

我同意这是一个糟糕的做法.

  1. 有没有更好的方法来连接到模型类?如何将连接传递给模型?
  2. 我希望能够在不同的环境中运行我的后台进程,比如"生产".

我如何实现这一目标?

Jam*_*ney 25

我会在后台进程开始时设置一次连接.一旦建立连接一次,所有模型无论如何都将正常工作.

您的连接建立代码看起来像这样:

@environment = ENV['RACK_ENV'] || 'development'
@dbconfig = YAML.load(File.read('config/database.yml'))
ActiveRecord::Base.establish_connection @dbconfig[@environment]
Run Code Online (Sandbox Code Playgroud)