Ruby on rails 无法访问模块中定义的自定义异常
在我的lib文件夹中,我有一个文件image\u helper\u exception.rb。路径是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/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