在Puma的配置文件示例中,它为on_restart函数说明了以下内容:
重启前运行的代码。此代码应关闭日志文件, 数据库连接等
我是否需要为Rails应用程序实现此功能,关闭与db和日志文件的连接,还是自动处理?如果没有,我该怎么做呢?
答案 0 :(得分:0)
不,不,Rails负责自动重新加载代码。但是这种代码重新加载支持是有限的。例如,在重新启动应用服务器之前,不会应用对application.rb的更改。
但我会建议{4}}而不是Puma。 Phusion Passenger设置起来要容易得多,特别是当你投入生产时。 Phusion Passenger直接集成到Apache和Nginx中,并提供动态工作者管理等高级功能。 Phusion Passenger非常成熟,稳定,高性能,并被纽约时报,赛门铁克,AirBnB等公司使用。
答案 1 :(得分:0)
我发现每次重新启动Rails / Puma服务器时,使用Redis作为我的Rails.cache提供程序会在第一次请求时导致错误页面。我得到的错误是:
Redis :: InheritedError(尝试使用子进程的连接 没有重新连接。您需要在分叉后重新连接到Redis。)
要解决此错误,我没有向 on_restart 添加任何内容,但是必须将代码添加到 on_worker_boot (我正在运行Puma with workers = 4) :
<强> PUMA-config.rb 强>
on_worker_boot do
puts "Reconnecting Rails.cache"
Rails.cache.reconnect
end