我有一个外部库,需要根据参数是本地文件还是在线文件进行不同的实例化。
现在我有了这个(我假设文件总是在线):
def initialize(path)
url_image = open(path)
@image = Magick::ImageList.new
@image.from_blob(url_image.read)
end
如果文件是本地存储的,那么区分的最佳方法是什么?我想过这样做:
def initialize(path, is_online = true)
if is_online
url_image = open(path)
@image = Magick::ImageList.new
@image.from_blob(url_image.read)
else
@image = Magick::ImageList.new(path)
end
end
答案 0 :(得分:1)
作为一般规则,如果URI具有主机,则它不是本地文件。
require 'uri'
if URI(path).host.nil?
#local
else
#external
end
然后您的界面无需更改。