我们如何validationSequel.connect是否在Rails中打开了我们的SQLite3数据库?
我们试图找出我们的Rails 3.1.12应用程序是否打开带有gem续集的SQLite3数据库(版本3.6或更高版本)。 这是我们做的:
rails console
-
在Rails控制台会话中,键入以下命令:
sequel = Sequel.connect('sqlite://development')
它返回:
=> #
sequel.class也会返回:
=> Sequel::SQLite::Database
但是,当尝试使用sequel.execute
从数据库中进行选择或使用sequel.execute
检查表时,返回的文本表明该表不存在。
我们不太确定数据库(这里的开发)是否已经打开。 我们如何检查?
副手我会说你可以尝试:
DB.test_connection => true
test_connection
的文档说:
尝试获取数据库连接。 如果成功则返回true。 如果不成功,可能会引发错误。 如果给出了服务器参数,则尝试获取与给定服务器/分片的数据库连接。
几年前,我们使用良性查询来判断连接是否存在。 你可以试试:
DB["select datetime('now');"].first
哪个回报:
{ :"datetime('now')" => "2013-06-25 06:23:44" }
您可能希望捕获在查询失败时可能引发的任何exception,但这表明连接也已关闭。
Michael Berkowski的评论值得回答。
Sequel.connect方法接受test: true
选项。 根据文件 :
是否测试是否可以建立有效的数据库连接(默认为false)
它会导致Sequel在新的db对象上调用#test_connection
。