gpt4 book ai didi

ruby-on-rails - 如何在我的 Rails 应用程序中创建自定义异常?

转载 作者:数据小太阳 更新时间:2023-10-29 07:35:48 33 4
gpt4 key购买 nike

我正在尝试在 Rails 中创建自定义异常,但我设计的解决方案存在问题。

这是我到目前为止所做的:

-在app/文件夹中创建一个名为errors/的文件夹,里面有一个文件exceptions.rb

app/errors/exceptions.rb:

module Exceptions
class AppError < StandardError; end
end
  • 在我的一个 Controller 中,尝试将其举起:

引发异常::AppError.new("用户未被授权")

但是当我调用 Controller 的操作时,我得到的是:

NameError (uninitialized constant Exceptions::AppError

Did you mean? TypeError
KeyError
IOError
EOFError


Did you mean? TypeError
KeyError
IOError
EOFError
):

我想我还没有完全理解如何创建新的目录和文件,以及如何使用它们。

我读到在 app 目录中创建的所有内容都是预先加载的,所以我不明白问题出在哪里。

最佳答案

简短版本:这是关于 rails 的自动代码加载——在这种情况下,文件包含异常这一事实并不重要(有关更多详细信息,请参阅关于该主题的 guide)

Rails 会尝试从 exceptions/app_error.rb 加载它,在其自动加载路径上的任何文件中。因为你的文件命名与此不匹配,它找不到定义,你得到一个 NameError。

如果您不关心代码重新加载(您可能不关心此类内容),那么您可以保持文件原样,但在初始化程序中需要它们(确保 app/errors 在加载路径中) :

require 'exceptions'

如果不是,那么您将不得不重新排列您的文件以匹配。如果您将 app/errors 添加到 rails 的自动加载路径并保持文件原样,那么它应该可以工作。如果您不想更改自动加载路径,则必须将其设置为自动加载路径中的某个位置,并确保模块的嵌套反射(reflect)磁盘上的组织。

就我个人而言,我可能会把它们放在 lib 中并要求它们带有初始化程序

关于ruby-on-rails - 如何在我的 Rails 应用程序中创建自定义异常?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256642/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com