jav*_*ier 6 ruby database testing activerecord ruby-on-rails
我有一个rails应用程序,它在生产环境中使用两个数据库,Users和Process.该Users模型使用此自定义ActiveRecord类:
class UserActiveRecord < ActiveRecord::Base
establish_connection "#{Rails.env}_users_db"
end
class User < UserActiveRecord
...
Run Code Online (Sandbox Code Playgroud)
请注意,根据环境建立与特定数据库的连接.为简化起见,在测试环境中我有一个包含两个生产数据库中所有表的数据库,我的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: ...
Run Code Online (Sandbox Code Playgroud)
应用程序在生产中运行良好,但是当我运行任何引用User该类的测试时,测试会在确切的位置User使用并且没有任何反应,它不显示任何错误,它不会退出,它只是保持等候.
我仔细检查并且表USERS存在于测试数据库中,实际上如果我手动删除它,我会得到表不存在的错误,当我再次创建它时,我得到了上一段中报告的相同行为.
我不知道为什么会发生这种情况,我对如何解决这个问题有任何想法?或者我如何调试它以便我可以找到问题的根源?如果它有帮助,我使用Ruby 1.9.3,Ruby on Rails 3.2.19和PostgreSQL 9.3.5; 任何其他详细信息将根据需要发布.
小智 0
您是否尝试过明确声明它是同一个数据库?尝试编辑您的database.yml文件,使其看起来像这样:
test: &default_test
adapter: postgresql
database: db_test
host: localhost
pool: ...
timeout: ...
username: ...
password: ...
test_users_db:
<<: *default_test
Run Code Online (Sandbox Code Playgroud)