我正在使用RMagick,我不喜欢一件事:
当我这样做时:
Magick::ImageList.new(path)
路径始终是本地文件。所以,在我的代码中,我有很多次重复这个:
if URI(path).host.nil?
Magick::ImageList.new(path)
else
url_image = open(path)
image = Magick::ImageList.new
image.from_blob(url_image.read)
end
我应该如何管理该代码以避免每次我想创建一个新的Magick :: ImageList对象时重复?顺便说一句,我正在使用Rails。
答案 0 :(得分:0)
我建议用自己的类包装库,在那里添加功能。这样做的另一个好处是可以将逻辑保存在一个位置,并让您自定义功能以更好地适应您的域。
也许是这些方面的事情:
class MySuperRadImageList
def self.open(path)
image_list = if URI(path).host.nil?
Magick::ImageList.new(path)
else
Magick::ImageList.new.from_blob(open(path).read)
end
self.new(image_list)
end
def initialize(image_list)
# ...
end
end
我建议重构上面的代码,但是想向您展示我建议的具体示例(尤其是else
子句o.O中的那一行。