我正在尝试在Rails中创建自定义异常,但是我的设计解决方案存在问题。
这是我到目前为止所做的:
-在app/
文件夹中创建一个文件夹,其中命名errors/
为文件exceptions.rb
。
app/errors/exceptions.rb
:
module Exceptions
class AppError < StandardError; end
end
引发Exception :: AppError.new(“用户未被授权”)
但是当我调用控制器的动作时,得到的是:
NameError (uninitialized constant Exceptions::AppError
Did you mean? TypeError
KeyError
IOError
EOFError
Did you mean? TypeError
KeyError
IOError
EOFError
):
我想我还没有完全理解如何创建和使用新目录和文件。
我读过app
目录中创建的所有内容都渴望加载,所以我不明白问题出在哪里。
简短版本:这是关于Rails的自动代码加载-在这种情况下,文件包含异常的事实无关紧要(有关更多详细信息,请参见该主题的指南)
Rails会尝试从中exceptions/app_error.rb
自动加载路径中的任何文件中加载该文件。由于文件命名与此不匹配,因此找不到定义,并且会收到NameError。
如果您不关心代码重新加载(并且可能不需要这种内容),则可以保留文件原样,但在初始化程序中要求它们(确保应用程序/错误在加载路径中):
require 'exceptions'
如果没有,那么您将不得不重新排列文件以使其匹配。如果您将应用程序/错误添加到rails的自动加载路径并保持文件原样,那么它应该可以工作。如果您不想更改自动加载路径,则必须将其设置为自动加载路径中的某个位置,并确保模块的嵌套反映磁盘上的组织。
我个人可能会将它们粘贴在lib中,并要求使用初始化程序
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句