require 'picture_io'
class PictureIO
class LocalPicture
- def initialize base_dir = Rails.root + 'public/images/'
- @base = base_dir
+ def initialize host_dir = Rails.root + 'public/images/', base_dir = ''
+ @host_dir = host_dir
+ @base_dir = @host_dir + base_dir
end
- def base
- @base
+ def host_dir
+ @host_dir
end
- def base=(b)
- @base = b
+ def host_dir=(d)
+ @host_dir = d
end
- def self.subdirs
- ['', 'v', 'h', 'vh', 'thumbnail']
+ def base_dir
+ @base_dir
+ end
+
+ def base_dir=(d)
+ @base_dir = d
end
def dir(subdir = nil)
sd = if subdir.to_s.empty?
- self.base
+ ''
else
- self.base + (subdir.to_s + '/')
+ subdir.to_s + '/'
end
- sd
+ @base_dir + '/' + sd
end
def mkdir subdir = nil
- Dir.mkdir(base) unless File.exist?(base)
+ Dir.mkdir(base_dir) unless File.exist?(base_dir)
return if subdir.to_s.empty?
Dir.mkdir(dir(subdir)) unless File.exist?(dir(subdir))
end
def exist?(filename, subdir = nil)
+ res = true
begin
- File.exist?(dir(subdir) + filename)
- rescue StandardError
- false
+ res = File.exist?(dir(subdir) + filename)
+ rescue
+ raise PictureIO::Error
end
+ res
end
def put(bindata, filename, subdir = nil)
- mkdir subdir
+ res = true
begin
- open(dir(subdir) + filename, 'wb') do |f|
+ mkdir subdir
+ File.open(dir(subdir) + filename, 'wb') do |f|
f.write bindata
end
- true
- rescue StandardError
- false
+ rescue
+ raise PictureIO::Error
end
+ res
end
def get(filename, subdir = nil)
bindata = ''
begin
- open(dir(subdir) + filename, 'rb') do |f|
+ File.open(dir(subdir) + filename, 'rb') do |f|
bindata += f.read
end
- bindata
- rescue StandardError
- false
+ rescue
+ raise PictureIO::Error
end
+ bindata
end
def delete(filename, subdir = nil)
+ res = true
begin
File.delete(dir(subdir) + filename)
- true
- rescue StandardError
- false
+ rescue
+ raise PictureIO::Error
end
+ res
end
end