【问题标题】:Rails - How to handle database connectivity and gracefully inform the user that database is unreachableRails - 如何处理数据库连接并优雅地通知用户数据库无法访问
【发布时间】:2021-08-07 17:26:42
【问题描述】:

我正在开发具有 SQLite3 数据库的 rails 5 API。即使数据库文件存储在本地,我也想创建自己的异常处理,以防数据库文件不可访问,例如删除。我实际上希望所有这些由数据库连接引起的错误来创建我自己的自定义响应并将其以文本、json 等形式显示给用户。

我怎样才能做到这一点?在我删除数据库的那一刻,我收到有关“等待迁移”的错误消息,或者如果我将数据库文件名更改为其他名称,我收到错误“无法打开数据库文件”。对于与数据库相关的所有类似情况,我想以自己的方式处理错误。

有什么想法吗?

谢谢

【问题讨论】:

  • 第一个想法 - 不要使用 SQLite。它通常不能胜任实际运行生产站点的任务,并且不适用于具有诸如 Heroku 等临时文件系统的 SASS 平台。与 Postgres 相比,它的功能也非常简单。
  • 是的,我将 MySQL 更改为托管在不同的服务器上。但是问题仍然存在:/

标签: ruby-on-rails ruby ruby-on-rails-5 sqlite3-ruby


【解决方案1】:

rescue_from

https://apidock.com/rails/ActiveSupport/Rescuable/ClassMethods/rescue_from

您需要找到引发的异常的名称。

这是一个例子:

class ApplicationController < ActionController::Base
  rescue_from ActiveRecord::RecordInvalid, with: :show_errors

  private
    def show_errors(exception)
      render ...
    end
end

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-12
    • 1970-01-01
    • 1970-01-01
    • 2015-06-27
    • 2020-11-13
    • 1970-01-01
    相关资源
    最近更新 更多