Dmi*_*mov 10 ruby testing activerecord
我开发Sinatra应用程序并在那里使用ActiveRecord来处理数据库,但我遇到了一个问题.我为一个模型写了一个测试,它打破了
SQLite3 :: CantOpenException:无法打开数据库文件
使用以下代码在test_helper.rb中建立与数据库的连接:
Dir.chdir('..') do
ActiveRecord::Base.establish_connection(db_config)
end
Run Code Online (Sandbox Code Playgroud)
并ActiveRecord::Base.connected?
得到假.如果我User.find(:all)
在连接建立测试之后调用将会通过并且ActiveRecord::Base.connected?
将为真.为什么?我不明白.
ActiveRecord::Base.establish_connection
仅设置连接,并且在请求与数据库的连接之前,ActiveRecord实际上不会连接.以下代码可以帮助您强制ActiveRecord为连接池建立连接:
connected = ActiveRecord::Base.connection_pool.with_connection { |con| con.active? } rescue false
Run Code Online (Sandbox Code Playgroud)
该rescue false
隐藏了几个潜在的异常(如PG::ConnectionBad
).有关更多信息,请参阅以下文档:with_connection.
归档时间: |
|
查看次数: |
4704 次 |
最近记录: |