mba*_*jur 6 ruby ruby-on-rails ruby-on-rails-4
我正在尝试为我的应用创建自定义例外.我的libs文件夹中有一个示例库,具有以下文件夹结构:
- lib/
|
|--social/
|
|-- bandcamp.rb
Run Code Online (Sandbox Code Playgroud)
此bandcamp.rb文件内容如下所示:
module Social
class ExampleException < Exception; end
class Bandcamp
def some_method()
end
end
end
Run Code Online (Sandbox Code Playgroud)
问题是,我可以Social::Bandcamp.new.some_method在我的应用程序中使用任何地方,它工作得很好,但我无法访问,Social::ExampleException也无法在任何地方提高它.它给了我
NameError: uninitialized constant Social::ExampleException
Run Code Online (Sandbox Code Playgroud)
你知道我可能做错了什么吗?我很擅长创建自己的库,所以我确定我误解了一些东西.
这里的问题是lib/文件是自动加载的(config.autoload_paths)。自动加载取决于文件名以便找到所需的类。bandcamp.rb仅当您调用时才会加载指定的文件Social::Bandcamp,只有这样您才能访问那里定义的其他类。
解决方案是为异常创建单独的文件或打开此目录的预先加载。
| 归档时间: |
|
| 查看次数: |
2401 次 |
| 最近记录: |