我正在尝试用Sinatra和ActiveRecord(3.2.3)创建一个小应用程序.
这是我的主文件的样子:
require "sinatra"
require "sinatra/reloader"
require "active_record"
...
ActiveRecord::Base.establish_connection(
adapter: 'sqlite3',
database: 'db.sqlite3',
host: 'localhost',
)
class Post < ActiveRecord::Base
...
end
get('/') { ... }
get('/posts') { ... }
...
Run Code Online (Sandbox Code Playgroud)
它有效,但有时我会在控制台中收到警告:
弃用警告:数据库连接不会自动关闭,请通过调用连接关闭线程末尾的数据库
close连接.例如:ActiveRecord :: Base.connection.close'
发生警告时,页面刷新需要很长时间.我不明白我应该在哪里关闭连接.我试图放在 ActiveRecord::Base.connection.close文件的底部,但它没有帮助.
更新:
我忘了提到我还使用来自sinatra-contrib gem的sinatra/reloader插件来查看效果,而无需重新启动服务器.
require "sinatra/reloader"
Run Code Online (Sandbox Code Playgroud)
如果我发表评论,那么问题就会消失.但无论如何,我想知道如何在不禁用重新加载器的情况下解决问题.
我收到此错误:
'could not obtain a database connection within 5 seconds (waited 5.001017 seconds). The max pool size is currently 16; consider increasing it.'
Run Code Online (Sandbox Code Playgroud)
首先我得到了这个错误,我将计数从5提升到16.但它仍然在发生,我是唯一一个测试数据库的人.当我是唯一的用户时,为什么会这样?
我不在轨道上.我在用:
ActiveRecord::Base.establish_connection ({
:adapter => 'mysql2',
:database => 'ck',
:host => 'localhost',
:username => 'root',
:password => '',
:pool => 16,
})
Run Code Online (Sandbox Code Playgroud)
并使用Sinatra.
谢谢