在我的app /目录中,我有一个文件夹 services 。要在服务文件夹中自动加载我的文件,我添加了“app / services'在我的" config / spring.rb'
中%w(
.ruby-version
.rbenv-vars
tmp/restart.txt
tmp/caching-dev.txt
app/services
).each { |path| Spring.watch(path) }
它的工作正常。但现在,我想为我的自定义异常(在app / services / errors /中)创建一个子目录。但是当我尝试在spring.rb中添加一个新行时:
%w(
.ruby-version
.rbenv-vars
tmp/restart.txt
tmp/caching-dev.txt
app/services
app/services/errors
).each { |path| Spring.watch(path) }
它没有用,我得到了一些:
NameError:
uninitialized constant SixError
这是我的自定义错误文件(app / services / errors / six_error.rb):
class SixError < RuntimeError
end
class NilTokenError < SixError
end
class SixRequestFailed < SixError
end
class NoAliasRequestPendingError < SixError
end
class AmountLessThanZeroError < SixError
end
class NilAliasError < SixError
end
这就是我所说的:
SixError::SixRequestFailed
答案 0 :(得分:1)
Rails在subdir中加载类,其名称空间对应于dirname
如果你有这种结构:
-app
--services
---错误
---- six_errors.rb
Rails期望文件six_errors.rb
在命名空间Errors
上声明类。
在您的情况下,您应该在名为Errors
的模块中声明所有错误类。
module Errors
class SixError < RuntimeError; end
end