区分本地文件或URI

时间:2014-01-03 22:12:35

标签: ruby

我有一个外部库,需要根据参数是本地文件还是在线文件进行不同的实例化。

现在我有了这个(我假设文件总是在线):

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

1 个答案:

答案 0 :(得分:1)

作为一般规则,如果URI具有主机,则它不是本地文件。

require 'uri'
if URI(path).host.nil?
  #local
else 
  #external
end

然后您的界面无需更改。