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

我试图在rails中创建自定义异常,但我的设计解决方案存在问题.

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

– 在app /文件夹中创建一个名为errors /的文件夹,其中包含exception.rb文件.

应用程序/错误/ exceptions.rb:

module Exceptions
    class AppError < StandardError; end
end

>在我的一个控制器中,试图提高它:

引发例外:: AppError.new(“用户未经授权”)

但是当我调用控制器的动作时,这就是我得到的:

NameError (uninitialized constant Exceptions::AppError

Did you mean? TypeError
              KeyError
              IOError
              EOFError


Did you mean? TypeError
              KeyError
              IOError
              EOFError
):

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

我已经读过在app dir中创建的所有东西都是急切的,所以我无法理解问题出在哪里.

最佳答案 简短版本:这是关于rails的自动代码加载 – 在这种情况下,文件包含异常并不重要(有关详细信息,请参阅主题上的
guide)

Rails会尝试从exception / app_error.rb中加载它在其自动加载路径上的任何文件中.因为您的文件命名与此不匹配,所以无法找到定义并且您获得了NameError.

如果您不关心代码重新加载(并且您可能不关心此类内容),那么您可以按原样保留文件,但需要在初始化程序中使用它们(确保应用程序/错误位于加载路径中):

require 'exceptions'

如果没有,那么你将不得不重新安排你的文件以匹配.如果您将应用程序/错误添加到rails的自动加载路径并保持文件不变,那么它应该可以正常工作.如果您不想更改自动加载路径,则必须将其模式化到自动加载路径中的某个位置,并确保模块的嵌套反映了磁盘上的组织.

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

点赞