如何在Rails之外的多环境中使用ActiveRecord?

我为单个环境创建了一个没有rails的数据库连接,它工作正常。 但是想为多种环境创建数据库配置(例如开发,生产,测试等)

单环境数据库连接代码(工作正常):

require 'mysql2' require "active_record" # Using ActiveRecord ActiveRecord::Base.establish_connection( :adapter=> 'mysql2', :database=> 'dev_db', :username=> 'root', :password=>'root' ) class Planning < ActiveRecord::Base end p Planning.find(1) 

建议被接受……

什么轨道可能看起来像魔术,但它实际上非常简单(好吧,这种情况,至少)。 这是大纲:

启动时,app会加载所有可用的数据库配置。 按照惯例,它们以YAML格式存储在config/database.yml

然后,确定当前环境。 最简单的方法是环境变量。 例如:

  MY_ENV=production ruby my_script.rb 

然后,在脚本中,您获取当前的env,选择相应的连接配置并使用它进行连接。

 connection_configs = connection_configs = YAML.load(File.read('config/database.yml')) current_env = ENV['MY_ENV'] || 'development' # if no value, assume development mode ActiveRecord::Base.establish_connection(connection_configs[current_env])