【发布时间】:2014-09-20 14:30:56
【问题描述】:
tl;博士:
$ export DATABASE_URL=postgres://user:pwd@localhost:5432/new_db
$ RAILS_ENV=test bundle exec rails c
[1] pry(main)> ActiveRecord::Base.connection.current_database
=> "test"
[2] pry(main)> ActiveRecord::Base.establish_connection;nil
=> nil
[3] pry(main)> ActiveRecord::Base.connection.current_database
=> "new_db"
[4] pry(main)> # WTF ?!?
背景:我们目前正在主持几项工作,以构建、测试并将我们的 DEV 和 QA 环境推送到 heroku。由于我们在 database.yml 文件中有相同的测试配置,当两个 env 同时测试时,我们最终会失败,因此我们决定使用两个数据库。
我们正在尝试什么:为了实现这一点(使用具有相同 database.yml 文件的多个数据库),我们决定将 DATABASE_URL 环境变量的值设置为 'postgres://user: pwd@localhost:5432/new_db'。
问题是什么:DATABASE_URL 的值似乎只在我们在控制台中手动运行建立连接时使用。奇怪的是,运行 rake 对正确的 db (new_db) 有影响。
Rails 版本是 3.2.19
有没有办法正确地覆盖该环境变量?
提前非常感谢!
【问题讨论】:
标签: ruby-on-rails postgresql activerecord ruby-on-rails-3.2