ruby-on-rails - Standalone ruby​​ -- 如何从database.yml加载不同环境

标签 ruby-on-rails ruby activerecord yaml

我有一个修改数据库中记录的后台进程。模型使用如下方式连接到数据库:

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

所有模型类的顶部都有这些行。

我同意这是一种糟糕的做法。

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

我该如何实现?

最佳答案

我会在您的后台进程开始时设置一次连接。一旦建立连接,所有模型都将正常工作。

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

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

关于ruby-on-rails - Standalone ruby​​ -- 如何从database.yml加载不同环境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5891529/

相关文章:

ruby-on-rails - rails 3 : Where to put js/css plugins without separating files?

ruby-on-rails - 创建对象时是否需要foreign_key列?

ruby - 通过 cron 执行 ruby​​ gem

ruby - ActiveRecord 和 sqlite3 : find does not accept any condition?

ruby-on-rails - 当您需要触发回调时如何更新所有内容?

ruby-on-rails - RoR 模型似乎不像 Ruby 类?

ruby-on-rails - Omniauth-facebook 未定义方法 `slice' 为 nil :NilClass. SessionsController#create 中的 NoMethodError

ruby-on-rails - 如何自定义选项以获取完整的国家名称作为 country_select gem 的值?

ruby-on-rails - 验证关联的 bool 值 True

ruby - `alias_method` 私有(private)方法