在我的lib文件夹中,我有一个文件image_helper_exception.rb。路径为lib/dibs_exception/image_exception/image_helper_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
当缺少某些东西时,我会在应用程序的其他位置引发应用程序。使用它的文件image_resize.rb的路径是helpers / image_resize.rb
image_resize.rb看起来像这样。
module Helpers
class ImageResize
require 'RMagick'
require 'aws/s3'
require 'rvg/rvg'
require 'mechanize'
include Magick
def initialize(abc)
if abc
raise DibsException::ImageException::InvalidEntityException.new("Entity is invalid.")
#The above line raises a error
#NameError: uninitialized constant DibsException::ImageException::InvalidEntityException
else
raise DibsException::ImageException::ImageHelperException.new("ImageHelperException.")
#The above line does not raise a error
end
end
end
我想在application.rb中添加lib加载。
我无法理解为什么(Helpers::ImageResize.new(true)
)会引发此错误:NameError: uninitialized constant DibsException::ImageException::InvalidEntityException
但是这可以正常工作:Helpers::ImageResize.new(false)
为什么只加载第一个类。有人可以帮忙吗?要求不起作用。
答案 0 :(得分:1)
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