Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 是不是;连接到database.yml指定的数据库;只需指示服务器已启动_Ruby On Rails - Fatal编程技术网

Ruby on rails 是不是;连接到database.yml指定的数据库;只需指示服务器已启动

Ruby on rails 是不是;连接到database.yml指定的数据库;只需指示服务器已启动,ruby-on-rails,Ruby On Rails,我正在查看我的生产日志,以调查rails 3.2应用程序上的一个bug。备份服务器时,我重新启动了应用程序。生产日志中重启的唯一证据似乎是以下条目: 连接到database.yml指定的数据库 这是唯一出现此消息的场合吗?也就是说,我是否可以始终假定此消息表示应用程序启动 搜索stackoverflow时,我找到的对此日志输出的引用似乎将其视为错误。例如: 但是,我认为这实际上是错误发生之前的最后一条成功日志消息。也就是说,它不是一条错误消息,而是指示应用程序在错误发生之前已启动到数据库的连接

我正在查看我的生产日志,以调查rails 3.2应用程序上的一个bug。备份服务器时,我重新启动了应用程序。生产日志中重启的唯一证据似乎是以下条目:

连接到database.yml指定的数据库

这是唯一出现此消息的场合吗?也就是说,我是否可以始终假定此消息表示应用程序启动

搜索stackoverflow时,我找到的对此日志输出的引用似乎将其视为错误。例如:

但是,我认为这实际上是错误发生之前的最后一条成功日志消息。也就是说,它不是一条错误消息,而是指示应用程序在错误发生之前已启动到数据库的连接

将此作为应用程序重启时的唯一日志输出似乎让我感到困惑(从其他stackoverflow条目来看,它也让其他条目感到困惑)

我在我的应用程序中添加了一个初始值设定项“config/initializers/log_app_start.rb”,内容如下:

Rails.logger.info 'App starting: Initializer called'
我现在在重新启动时的日志中看到:

连接到database.yml指定的数据库

应用程序启动:已调用初始值设定项

这至少为日志条目添加了一些上下文。但是,最好在“连接到数据库”条目之前启动“应用程序”


有没有更好的方法将应用程序重启记录在生产日志中?

由于这个问题已经在这里讨论了四个月没有答案,我认为答案是:

连接到database.yml指定的数据库


在rails日志中,仅表示服务器已重新启动。

实际上,当您的应用程序服务器(puma、unicorn、passenger等)或后台处理gem(如sucker_punch、sidekiq等)启动新线程时,它将连接到数据库并打开连接。应用程序/后台处理器允许点击的连接数位于database.yml文件中。在database.yml中设置池计数时,需要考虑多线程服务器(如puma)或后台处理gem,该服务器使用线程进行操作(如sucker_punch或sidekiq)

当您第一次启动应用程序时,您还将在日志中看到此信息。另外,rake/runner任务会将此信息标记到记录器中,因为它会加载rails环境,如果发生任何ActiveRecord事件,则需要在应用程序的主线程之外建立db连接


希望这能有所帮助。

是的-我没有考虑多线程或多服务器实例场景。正如你所说,这可能会使事情更加复杂。很高兴我能提供一个解释。一开始我也花了一点时间才意识到这一点。判断数据库池限制时要考虑的好事情。