使用自定义异常时的单位化常量

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)

你知道我可能做错了什么吗?我很擅长创建自己的库,所以我确定我误解了一些东西.

Bar*_*art 4

这里的问题是lib/文件是自动加载的(config.autoload_paths)。自动加载取决于文件名以便找到所需的类。bandcamp.rb仅当您调用时才会加载指定的文件Social::Bandcamp,只有这样您才能访问那里定义的其他类。

解决方案是为异常创建单独的文件或打开此目录的预先加载。