Sha256: 30341b87ef9700793360f94f386d3903dcf02b641c3300128c0186c482e67963

Contents?: true

Size: 1.53 KB

Versions: 7

Compression:

Stored size: 1.53 KB

Contents

require 'attached/storage/base'

module Attached
  module Storage
    class Local < Base


      attr_reader :mode


      # Create a new interface supporting save and destroy operations.
      #
      # Usage:
      #
      #   Attached::Storage::Local.new()

      def initialize()
        @mode = 0644
      end


      # Access the host (e.g. /system/) for a storage service.
      #
      # Usage:
      #
      #   storage.host

      def host()
        "/system/"
      end


      # Save a file to a given path.
      #
      # Parameters:
      #
      # * file - The file to save.
      # * path - The path to save.

      def save(file, path)
        path = "#{Rails.root}/public/system/#{path}"
        dirname, basename = File.split(path)

        return if file.path == path

        begin
          FileUtils.mkdir_p(dirname)
          FileUtils.cp(file.path, path)
          FileUtils.chmod(self.mode, path)
        rescue Errno::ENOENT
        end
      end


      # Retrieve a file from a given path.
      #
      # Parameters:
      #
      # * path - The path to retrieve.

      def retrieve(path)
        path = "#{Rails.root}/public/system/#{path}"

        File.open(path)
      end


      # Destroy a file at a given path.
      #
      # Parameters:
      #
      # * path - The path to destroy.

      def destroy(path)
        path = "#{Rails.root}/public/system/#{path}"
        dirname, basename = File.split(path)

        begin
          FileUtils.rm(path)
        rescue Errno::ENOENT
        end
      end


    end
  end
end

Version data entries

7 entries across 7 versions & 1 rubygems

Version Path
attached-0.5.9 lib/attached/storage/local.rb
attached-0.5.8 lib/attached/storage/local.rb
attached-0.5.7 lib/attached/storage/local.rb
attached-0.5.6 lib/attached/storage/local.rb
attached-0.5.5 lib/attached/storage/local.rb
attached-0.5.4 lib/attached/storage/local.rb
attached-0.5.3 lib/attached/storage/local.rb