我有一个rails应用程序,它在 production 环境Users
和Process
中使用两个数据库。 Users
模型使用此自定义ActiveRecord
类:
class UserActiveRecord < ActiveRecord::Base
establish_connection "#{Rails.env}_users_db"
end
class User < UserActiveRecord
...
请注意,根据环境建立与特定数据库的连接。为简化起见,在 testing 环境中,我有一个包含两个生产数据库中所有表的数据库,而我的database.yml
文件看起来像这样:
test:
adapter: postgresql
database: db_test
host: localhost
pool: ...
timeout: ...
username: ...
password: ...
test_users_db:
adapter: postgresql
database: db_test <--- Notice that this is the same database only in test env
host: localhost
pool: ...
timeout: ...
username: ...
password: ...
应用程序在生产中运行良好,但是当我运行任何引用User
类的测试时,测试会在使用User
且没有任何反应的确切位置阻塞,但它并没有; t显示任何错误,它不会退出,只是一直等待。
我仔细检查并且表USERS
存在于测试数据库中,实际上如果我手动删除它,我会得到表格不存在的错误,当我再次创建它时,我得到了上一段报告的行为相同。
我不知道为什么会这样,有关如何解决这个问题的任何想法?或者我如何调试它以便我可以找到问题的根源?如果它有帮助,我使用Ruby 1.9.3,Ruby on Rails 3.2.19和PostgreSQL 9.3.5;任何其他详细信息将根据需要发布。
答案 0 :(得分:0)
您是否尝试过明确说明它是同一个数据库?尝试编辑database.yml文件,如下所示:
test: &default_test
adapter: postgresql
database: db_test
host: localhost
pool: ...
timeout: ...
username: ...
password: ...
test_users_db:
<<: *default_test