我们如何验证Sequel.connect是否在Rails中打开了我们的SQLite3数据库?

use*_*363 1 ruby sqlite ruby-on-rails-3 sequel

我们试图找出我们的Rails 3.1.12应用程序是否打开带有gem续集的SQLite3数据库(版本3.6或更高版本).这是我们做的:

  1. rails console
  2. 在Rails控制台会话中,键入以下命令:

    sequel = Sequel.connect('sqlite://development')
    
    Run Code Online (Sandbox Code Playgroud)

    它返回:

    => #<Sequel::SQLite::Database: "sqlite://development">
    
    Run Code Online (Sandbox Code Playgroud)

    sequel.class也会返回:

    => Sequel::SQLite::Database
    
    Run Code Online (Sandbox Code Playgroud)

但是,当尝试从数据库中选择sequel.execute或检查表时sequel.schema,返回的文本表明该表不存在.

我们不确定数据库(这里的开发)是否已经打开.我们如何检查?

the*_*Man 5

副手我会说你可以尝试:

DB.test_connection
=> true
Run Code Online (Sandbox Code Playgroud)

文档test_connection说:

尝试获取数据库连接.如果成功则返回true.如果不成功,可能会引发错误.如果给出了server参数,则尝试获取与给定服务器/分片的数据库连接.

几年前,我们使用良性查询来判断连接是否存在.你可以试试:

DB["select datetime('now');"].first
Run Code Online (Sandbox Code Playgroud)

哪个回报:

{
    :"datetime('now')" => "2013-06-25 06:23:44"
}
Run Code Online (Sandbox Code Playgroud)

您可能希望捕获在查询失败时可能引发的任何异常,但这表明连接也已关闭.