Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 无法访问模块中定义的自定义异常_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

Ruby on rails 无法访问模块中定义的自定义异常

Ruby on rails 无法访问模块中定义的自定义异常,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,在我的lib文件夹中,我有一个文件image\u helper\u exception.rb。路径是lib/dibs\u exception/image\u exception/image\u helper\u exception.rb 在此文件中,我定义了所有图像异常 module DibsException module ImageException class ImageHelperException < Exception; end class Invali

在我的lib文件夹中,我有一个文件image\u helper\u exception.rb。路径是
lib/dibs\u exception/image\u exception/image\u helper\u exception.rb

在此文件中,我定义了所有图像异常

module DibsException
  module ImageException
     class ImageHelperException < Exception; end
     class InvalidEntityException < Exception; end
     class InvalidImageTypeException < Exception; end
     class InvalidImageVersionException < Exception; end
     class InvalidImageUrlException < Exception; end
     class ImageNotFoundException < Exception; end
  end
end
我想添加在application.rb中加载的lib

我无法理解(
Helpers::ImageResize.new(true)
)引发此错误的原因:
name错误:未初始化常量dibsception::ImageException::invalidentitityexception

但这和预期的一样好:
Helpers::ImageResize.new(false)


为什么只加载第一个类。有人能帮忙吗?require不起作用。

Ruby不支持函数重载。 第二次初始化将在解析时覆盖第一次初始化。 所以只有第二个函数存在

这应该很神奇

def initialize(xyz=nil)
       raise DibsException::ImageException::InvalidEntityException.new("Entity is invalid.") if(xyz.blank?)
       raise DibsException::ImageException::ImageHelperException.new("ImageHelperException.")
       #This line DOES NOT raise error like above. It works fine.
end

Ruby不支持方法重载->我删除了它。超载不是这里的问题。访问exception is.lib文件夹是自动加载的,因此需要根据文件名创建类。因为,如果您请求ImageHelperException,它会查找名为image_helper_exception.rb的文件,就像您调用InvalidEntityException时它可能看起来无效_entity_exception.rb一样。是的,这是一个解决方案。我使用load('lib/dibs\u exception/image\u exception/image\u helper\u exception.rb')解决了这个问题。你有别的选择吗?
def initialize(xyz=nil)
       raise DibsException::ImageException::InvalidEntityException.new("Entity is invalid.") if(xyz.blank?)
       raise DibsException::ImageException::ImageHelperException.new("ImageHelperException.")
       #This line DOES NOT raise error like above. It works fine.
end