OSDN Git Service

fix picture io:
[pettanr/pettanr.git] / lib / local_picture.rb
index 85160df..6801527 100644 (file)
@@ -1,76 +1,85 @@
 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