carrierwave-grandcloud 0.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/.gitignore +2 -0
- data/Gemfile +12 -0
- data/Gemfile.lock +120 -0
- data/README.md +26 -0
- data/carrierwave-grandcloud.gemspec +22 -0
- data/lib/carrierwave-grandcloud.rb +6 -0
- data/lib/carrierwave/grandcloud/configuration.rb +36 -0
- data/lib/carrierwave/storage/grandcloud.rb +96 -0
- data/spec/foo.gif +0 -0
- data/spec/foo.jpg +0 -0
- data/spec/spec_helper.rb +37 -0
- data/spec/upload_spec.rb +77 -0
- metadata +105 -0
    
        data/.gitignore
    ADDED
    
    
    
        data/Gemfile
    ADDED
    
    | @@ -0,0 +1,12 @@ | |
| 1 | 
            +
            source "http://ruby.taobao.org"
         | 
| 2 | 
            +
            gem "rake"
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            group :test do
         | 
| 5 | 
            +
              gem 'rails'
         | 
| 6 | 
            +
              gem 'sqlite3-ruby', :require => 'sqlite3'
         | 
| 7 | 
            +
              gem 'carrierwave'
         | 
| 8 | 
            +
              gem 'mini_magick'
         | 
| 9 | 
            +
              gem 'sndacs', :git => 'git://github.com/hui/sndacs-ruby.git'
         | 
| 10 | 
            +
              gem 'rspec','~> 2.6.0'
         | 
| 11 | 
            +
              gem 'mocha','0.10.0'
         | 
| 12 | 
            +
            end
         | 
    
        data/Gemfile.lock
    ADDED
    
    | @@ -0,0 +1,120 @@ | |
| 1 | 
            +
            GIT
         | 
| 2 | 
            +
              remote: git://github.com/hui/sndacs-ruby.git
         | 
| 3 | 
            +
              revision: a50041f7fc265ebcbf72b62f85636f951979bcc1
         | 
| 4 | 
            +
              specs:
         | 
| 5 | 
            +
                sndacs (0.1.0)
         | 
| 6 | 
            +
                  proxies (~> 0.2.0)
         | 
| 7 | 
            +
             | 
| 8 | 
            +
            GEM
         | 
| 9 | 
            +
              remote: http://ruby.taobao.org/
         | 
| 10 | 
            +
              specs:
         | 
| 11 | 
            +
                actionmailer (3.2.1)
         | 
| 12 | 
            +
                  actionpack (= 3.2.1)
         | 
| 13 | 
            +
                  mail (~> 2.4.0)
         | 
| 14 | 
            +
                actionpack (3.2.1)
         | 
| 15 | 
            +
                  activemodel (= 3.2.1)
         | 
| 16 | 
            +
                  activesupport (= 3.2.1)
         | 
| 17 | 
            +
                  builder (~> 3.0.0)
         | 
| 18 | 
            +
                  erubis (~> 2.7.0)
         | 
| 19 | 
            +
                  journey (~> 1.0.1)
         | 
| 20 | 
            +
                  rack (~> 1.4.0)
         | 
| 21 | 
            +
                  rack-cache (~> 1.1)
         | 
| 22 | 
            +
                  rack-test (~> 0.6.1)
         | 
| 23 | 
            +
                  sprockets (~> 2.1.2)
         | 
| 24 | 
            +
                activemodel (3.2.1)
         | 
| 25 | 
            +
                  activesupport (= 3.2.1)
         | 
| 26 | 
            +
                  builder (~> 3.0.0)
         | 
| 27 | 
            +
                activerecord (3.2.1)
         | 
| 28 | 
            +
                  activemodel (= 3.2.1)
         | 
| 29 | 
            +
                  activesupport (= 3.2.1)
         | 
| 30 | 
            +
                  arel (~> 3.0.0)
         | 
| 31 | 
            +
                  tzinfo (~> 0.3.29)
         | 
| 32 | 
            +
                activeresource (3.2.1)
         | 
| 33 | 
            +
                  activemodel (= 3.2.1)
         | 
| 34 | 
            +
                  activesupport (= 3.2.1)
         | 
| 35 | 
            +
                activesupport (3.2.1)
         | 
| 36 | 
            +
                  i18n (~> 0.6)
         | 
| 37 | 
            +
                  multi_json (~> 1.0)
         | 
| 38 | 
            +
                arel (3.0.0)
         | 
| 39 | 
            +
                builder (3.0.0)
         | 
| 40 | 
            +
                carrierwave (0.5.8)
         | 
| 41 | 
            +
                  activesupport (~> 3.0)
         | 
| 42 | 
            +
                diff-lcs (1.1.3)
         | 
| 43 | 
            +
                erubis (2.7.0)
         | 
| 44 | 
            +
                hike (1.2.1)
         | 
| 45 | 
            +
                i18n (0.6.0)
         | 
| 46 | 
            +
                journey (1.0.1)
         | 
| 47 | 
            +
                json (1.6.5)
         | 
| 48 | 
            +
                mail (2.4.1)
         | 
| 49 | 
            +
                  i18n (>= 0.4.0)
         | 
| 50 | 
            +
                  mime-types (~> 1.16)
         | 
| 51 | 
            +
                  treetop (~> 1.4.8)
         | 
| 52 | 
            +
                metaclass (0.0.1)
         | 
| 53 | 
            +
                mime-types (1.17.2)
         | 
| 54 | 
            +
                mini_magick (3.4)
         | 
| 55 | 
            +
                  subexec (~> 0.2.1)
         | 
| 56 | 
            +
                mocha (0.10.0)
         | 
| 57 | 
            +
                  metaclass (~> 0.0.1)
         | 
| 58 | 
            +
                multi_json (1.0.4)
         | 
| 59 | 
            +
                polyglot (0.3.3)
         | 
| 60 | 
            +
                proxies (0.2.1)
         | 
| 61 | 
            +
                rack (1.4.1)
         | 
| 62 | 
            +
                rack-cache (1.1)
         | 
| 63 | 
            +
                  rack (>= 0.4)
         | 
| 64 | 
            +
                rack-ssl (1.3.2)
         | 
| 65 | 
            +
                  rack
         | 
| 66 | 
            +
                rack-test (0.6.1)
         | 
| 67 | 
            +
                  rack (>= 1.0)
         | 
| 68 | 
            +
                rails (3.2.1)
         | 
| 69 | 
            +
                  actionmailer (= 3.2.1)
         | 
| 70 | 
            +
                  actionpack (= 3.2.1)
         | 
| 71 | 
            +
                  activerecord (= 3.2.1)
         | 
| 72 | 
            +
                  activeresource (= 3.2.1)
         | 
| 73 | 
            +
                  activesupport (= 3.2.1)
         | 
| 74 | 
            +
                  bundler (~> 1.0)
         | 
| 75 | 
            +
                  railties (= 3.2.1)
         | 
| 76 | 
            +
                railties (3.2.1)
         | 
| 77 | 
            +
                  actionpack (= 3.2.1)
         | 
| 78 | 
            +
                  activesupport (= 3.2.1)
         | 
| 79 | 
            +
                  rack-ssl (~> 1.3.2)
         | 
| 80 | 
            +
                  rake (>= 0.8.7)
         | 
| 81 | 
            +
                  rdoc (~> 3.4)
         | 
| 82 | 
            +
                  thor (~> 0.14.6)
         | 
| 83 | 
            +
                rake (0.9.2.2)
         | 
| 84 | 
            +
                rdoc (3.12)
         | 
| 85 | 
            +
                  json (~> 1.4)
         | 
| 86 | 
            +
                rspec (2.6.0)
         | 
| 87 | 
            +
                  rspec-core (~> 2.6.0)
         | 
| 88 | 
            +
                  rspec-expectations (~> 2.6.0)
         | 
| 89 | 
            +
                  rspec-mocks (~> 2.6.0)
         | 
| 90 | 
            +
                rspec-core (2.6.4)
         | 
| 91 | 
            +
                rspec-expectations (2.6.0)
         | 
| 92 | 
            +
                  diff-lcs (~> 1.1.2)
         | 
| 93 | 
            +
                rspec-mocks (2.6.0)
         | 
| 94 | 
            +
                sprockets (2.1.2)
         | 
| 95 | 
            +
                  hike (~> 1.2)
         | 
| 96 | 
            +
                  rack (~> 1.0)
         | 
| 97 | 
            +
                  tilt (~> 1.1, != 1.3.0)
         | 
| 98 | 
            +
                sqlite3 (1.3.5)
         | 
| 99 | 
            +
                sqlite3-ruby (1.3.3)
         | 
| 100 | 
            +
                  sqlite3 (>= 1.3.3)
         | 
| 101 | 
            +
                subexec (0.2.1)
         | 
| 102 | 
            +
                thor (0.14.6)
         | 
| 103 | 
            +
                tilt (1.3.3)
         | 
| 104 | 
            +
                treetop (1.4.10)
         | 
| 105 | 
            +
                  polyglot
         | 
| 106 | 
            +
                  polyglot (>= 0.3.1)
         | 
| 107 | 
            +
                tzinfo (0.3.31)
         | 
| 108 | 
            +
             | 
| 109 | 
            +
            PLATFORMS
         | 
| 110 | 
            +
              ruby
         | 
| 111 | 
            +
             | 
| 112 | 
            +
            DEPENDENCIES
         | 
| 113 | 
            +
              carrierwave
         | 
| 114 | 
            +
              mini_magick
         | 
| 115 | 
            +
              mocha (= 0.10.0)
         | 
| 116 | 
            +
              rails
         | 
| 117 | 
            +
              rake
         | 
| 118 | 
            +
              rspec (~> 2.6.0)
         | 
| 119 | 
            +
              sndacs!
         | 
| 120 | 
            +
              sqlite3-ruby
         | 
    
        data/README.md
    ADDED
    
    | @@ -0,0 +1,26 @@ | |
| 1 | 
            +
            # CarrierWave for SNDA Cloud Storage
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            This gem adds support for [SNDA Cloud Storage](http://oss.grandcloud.com) to [CarrierWave](https://github.com/jnicklas/carrierwave/), code base on [carrierwave-aliyun](https://github.com/huacnlee/carrierwave-aliyun)
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            ## Installation
         | 
| 6 | 
            +
             | 
| 7 | 
            +
                gem install carrierwave-grandcloud
         | 
| 8 | 
            +
             | 
| 9 | 
            +
            ## Using Bundler
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                gem 'sndacs', :git => 'git://github.com/hui/sndacs-ruby.git'
         | 
| 12 | 
            +
                gem 'carrierwave-grandcloud'
         | 
| 13 | 
            +
             | 
| 14 | 
            +
            ## Configuration
         | 
| 15 | 
            +
             | 
| 16 | 
            +
            You'll need to configure the to use this in config/initializes/carrierwave.rb
         | 
| 17 | 
            +
             | 
| 18 | 
            +
            ```ruby
         | 
| 19 | 
            +
            CarrierWave.configure do |config|
         | 
| 20 | 
            +
              config.storage = :grandcloud
         | 
| 21 | 
            +
              config.grandcloud_access_id = "xxxxxx"
         | 
| 22 | 
            +
              config.grandcloud_access_key = 'xxxxxx'
         | 
| 23 | 
            +
              # you need create this bucket first!
         | 
| 24 | 
            +
              config.grandcloud_bucket = "simple"
         | 
| 25 | 
            +
            end
         | 
| 26 | 
            +
            ```
         | 
| @@ -0,0 +1,22 @@ | |
| 1 | 
            +
            # -*- encoding: utf-8 -*-
         | 
| 2 | 
            +
            $:.push File.expand_path("../lib", __FILE__)
         | 
| 3 | 
            +
             | 
| 4 | 
            +
            Gem::Specification.new do |s|
         | 
| 5 | 
            +
              s.name        = "carrierwave-grandcloud"
         | 
| 6 | 
            +
              s.version     = "0.1.0"
         | 
| 7 | 
            +
              s.platform    = Gem::Platform::RUBY
         | 
| 8 | 
            +
              s.authors     = ["Hui"]
         | 
| 9 | 
            +
              s.email       = ["hui@networking.io"]
         | 
| 10 | 
            +
              s.homepage    = "https://github.com/hui/carrierwave-grandcloud"
         | 
| 11 | 
            +
              s.summary     = %q{SNDA Cloud Storage support for Carrierwave}
         | 
| 12 | 
            +
              s.description = %q{SNDA Cloud Storage support for Carrierwave}
         | 
| 13 | 
            +
              s.files         = `git ls-files`.split("\n")
         | 
| 14 | 
            +
              s.test_files    = `git ls-files -- {test,spec,features}/*`.split("\n")
         | 
| 15 | 
            +
              s.executables   = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
         | 
| 16 | 
            +
              s.require_paths = ["lib"]
         | 
| 17 | 
            +
             | 
| 18 | 
            +
              s.add_dependency "carrierwave", [">= 0.5.7"]
         | 
| 19 | 
            +
              s.add_dependency "sndacs", [">= 0.1.0"]
         | 
| 20 | 
            +
              s.add_development_dependency "rspec", ["~> 2.6"]
         | 
| 21 | 
            +
              s.add_development_dependency "rake", ["~> 0.9"]
         | 
| 22 | 
            +
            end
         | 
| @@ -0,0 +1,6 @@ | |
| 1 | 
            +
            require "carrierwave/storage/grandcloud"
         | 
| 2 | 
            +
            require "carrierwave/grandcloud/configuration"
         | 
| 3 | 
            +
            CarrierWave.configure do |config|
         | 
| 4 | 
            +
              config.storage_engines.merge!({:grandcloud => "CarrierWave::Storage::Grandcloud"})
         | 
| 5 | 
            +
            end
         | 
| 6 | 
            +
            CarrierWave::Uploader::Base.send(:include, CarrierWave::Grandcloud::Configuration)
         | 
| @@ -0,0 +1,36 @@ | |
| 1 | 
            +
            module CarrierWave
         | 
| 2 | 
            +
              module Grandcloud
         | 
| 3 | 
            +
                module Configuration
         | 
| 4 | 
            +
                  extend ActiveSupport::Concern
         | 
| 5 | 
            +
                  included do
         | 
| 6 | 
            +
                    add_config :grandcloud_access_id
         | 
| 7 | 
            +
                    add_config :grandcloud_access_key
         | 
| 8 | 
            +
                    add_config :grandcloud_bucket
         | 
| 9 | 
            +
                    add_config :grandcloud_location
         | 
| 10 | 
            +
                  end
         | 
| 11 | 
            +
                end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                module ClassMethods
         | 
| 14 | 
            +
                  def add_config(name)
         | 
| 15 | 
            +
                    class_eval <<-RUBY, __FILE__, __LINE__ + 1
         | 
| 16 | 
            +
                      def self.#{name}(value=nil)
         | 
| 17 | 
            +
                        @#{name} = value if value
         | 
| 18 | 
            +
                        return @#{name} if self.object_id == #{self.object_id} || defined?(@#{name})
         | 
| 19 | 
            +
                        name = superclass.#{name}
         | 
| 20 | 
            +
                        return nil if name.nil? && !instance_variable_defined?("@#{name}")
         | 
| 21 | 
            +
                        @#{name} = name && !name.is_a?(Module) && !name.is_a?(Symbol) && !name.is_a?(Numeric) && !name.is_a?(TrueClass) && !name.is_a?(FalseClass) ? name.dup : name
         | 
| 22 | 
            +
                      end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                      def self.#{name}=(value)
         | 
| 25 | 
            +
                        @#{name} = value
         | 
| 26 | 
            +
                      end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                      def #{name}
         | 
| 29 | 
            +
                        value = self.class.#{name}
         | 
| 30 | 
            +
                        value.instance_of?(Proc) ? value.call : value
         | 
| 31 | 
            +
                      end
         | 
| 32 | 
            +
                    RUBY
         | 
| 33 | 
            +
                  end
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
            end
         | 
| @@ -0,0 +1,96 @@ | |
| 1 | 
            +
            # encoding: utf-8
         | 
| 2 | 
            +
            require 'carrierwave'
         | 
| 3 | 
            +
            require 'digest/hmac'
         | 
| 4 | 
            +
            require 'digest/md5'
         | 
| 5 | 
            +
            require "sndacs"
         | 
| 6 | 
            +
             | 
| 7 | 
            +
            module CarrierWave
         | 
| 8 | 
            +
              module Storage
         | 
| 9 | 
            +
                class Grandcloud < Abstract
         | 
| 10 | 
            +
                  class File
         | 
| 11 | 
            +
                    def initialize(uploader, base, path)
         | 
| 12 | 
            +
                      @uploader = uploader
         | 
| 13 | 
            +
                      @path = path
         | 
| 14 | 
            +
                      @base = base
         | 
| 15 | 
            +
                    end
         | 
| 16 | 
            +
             | 
| 17 | 
            +
                    ##
         | 
| 18 | 
            +
                    # Returns the current path/filename of the file on Cloud Files.
         | 
| 19 | 
            +
                    #
         | 
| 20 | 
            +
                    # === Returns
         | 
| 21 | 
            +
                    #
         | 
| 22 | 
            +
                    # [String] A path
         | 
| 23 | 
            +
                    #
         | 
| 24 | 
            +
                    def path
         | 
| 25 | 
            +
                      @path
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    ##
         | 
| 29 | 
            +
                    # Reads the contents of the file from Cloud Files
         | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    # === Returns
         | 
| 32 | 
            +
                    #
         | 
| 33 | 
            +
                    # [String] contents of the file
         | 
| 34 | 
            +
                    #
         | 
| 35 | 
            +
                    def read
         | 
| 36 | 
            +
                      object = bucket.objects.find(@path)
         | 
| 37 | 
            +
                      object.content
         | 
| 38 | 
            +
                    end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
                    ##
         | 
| 41 | 
            +
                    # Remove the file from Cloud Files
         | 
| 42 | 
            +
                    #
         | 
| 43 | 
            +
                    def delete
         | 
| 44 | 
            +
                      begin
         | 
| 45 | 
            +
                        object = bucket.objects.find(@path)
         | 
| 46 | 
            +
                        object.destroy
         | 
| 47 | 
            +
                        true
         | 
| 48 | 
            +
                      rescue Exception => e
         | 
| 49 | 
            +
                        # If the file's not there, don't panic
         | 
| 50 | 
            +
                        nil
         | 
| 51 | 
            +
                      end
         | 
| 52 | 
            +
                    end
         | 
| 53 | 
            +
             | 
| 54 | 
            +
                    def url(expires_at = Time.now + 3000)
         | 
| 55 | 
            +
                      object = bucket.objects.find(@path)
         | 
| 56 | 
            +
                      if bucket.policy == "Allow"
         | 
| 57 | 
            +
                        object.url
         | 
| 58 | 
            +
                      else
         | 
| 59 | 
            +
                        object.temporary_url(expires_at)
         | 
| 60 | 
            +
                      end
         | 
| 61 | 
            +
                    end
         | 
| 62 | 
            +
             | 
| 63 | 
            +
                    def store(data)
         | 
| 64 | 
            +
                      new_object = bucket.objects.build(@path)
         | 
| 65 | 
            +
                      new_object.content = data
         | 
| 66 | 
            +
                      new_object.save
         | 
| 67 | 
            +
                    end
         | 
| 68 | 
            +
             | 
| 69 | 
            +
                    private
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                      def headers
         | 
| 72 | 
            +
                        @headers ||= {  }
         | 
| 73 | 
            +
                      end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
                      def bucket
         | 
| 76 | 
            +
                        return @bucket if @bucket
         | 
| 77 | 
            +
                        service = Sndacs::Service.new(:access_key_id => @uploader.grandcloud_access_id,
         | 
| 78 | 
            +
                                          :secret_access_key => @uploader.grandcloud_access_key)
         | 
| 79 | 
            +
                        @bucket = service.bucket(@uploader.grandcloud_bucket, @uploader.grandcloud_location)
         | 
| 80 | 
            +
                        @bucket
         | 
| 81 | 
            +
                      end
         | 
| 82 | 
            +
             | 
| 83 | 
            +
                  end
         | 
| 84 | 
            +
             | 
| 85 | 
            +
                  def store!(file)
         | 
| 86 | 
            +
                    f = CarrierWave::Storage::Grandcloud::File.new(uploader, self, uploader.store_path)
         | 
| 87 | 
            +
                    f.store(file.read)
         | 
| 88 | 
            +
                    f
         | 
| 89 | 
            +
                  end
         | 
| 90 | 
            +
             | 
| 91 | 
            +
                  def retrieve!(identifier)
         | 
| 92 | 
            +
                    CarrierWave::Storage::Grandcloud::File.new(uploader, self, uploader.store_path(identifier))
         | 
| 93 | 
            +
                  end
         | 
| 94 | 
            +
                end
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
            end
         | 
    
        data/spec/foo.gif
    ADDED
    
    | Binary file | 
    
        data/spec/foo.jpg
    ADDED
    
    | Binary file | 
    
        data/spec/spec_helper.rb
    ADDED
    
    | @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            require 'rubygems'
         | 
| 2 | 
            +
            require 'rspec'
         | 
| 3 | 
            +
            require 'rspec/autorun'
         | 
| 4 | 
            +
            require 'rails'
         | 
| 5 | 
            +
            require 'active_record'
         | 
| 6 | 
            +
            require "carrierwave"
         | 
| 7 | 
            +
            require 'carrierwave/orm/activerecord'
         | 
| 8 | 
            +
            require 'carrierwave/processing/mini_magick'
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            $LOAD_PATH.unshift(File.dirname(__FILE__))
         | 
| 11 | 
            +
            $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
         | 
| 12 | 
            +
             | 
| 13 | 
            +
            require "carrierwave-grandcloud"
         | 
| 14 | 
            +
             | 
| 15 | 
            +
             | 
| 16 | 
            +
            module Rails
         | 
| 17 | 
            +
              class <<self
         | 
| 18 | 
            +
                def root
         | 
| 19 | 
            +
                  [File.expand_path(__FILE__).split('/')[0..-3].join('/'),"spec"].join("/")
         | 
| 20 | 
            +
                end
         | 
| 21 | 
            +
              end
         | 
| 22 | 
            +
            end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
            ActiveRecord::Migration.verbose = false
         | 
| 25 | 
            +
             | 
| 26 | 
            +
            # 测试的时候需要修改这个地方
         | 
| 27 | 
            +
            CarrierWave.configure do |config|
         | 
| 28 | 
            +
              config.storage = :grandcloud
         | 
| 29 | 
            +
              config.grandcloud_access_id = "20RGC3KJUK0NV"
         | 
| 30 | 
            +
              config.grandcloud_access_key = 'MzgyM2EwYTMtMzcwYi00ODM2'
         | 
| 31 | 
            +
              config.grandcloud_bucket = "carrierwave"
         | 
| 32 | 
            +
              config.grandcloud_location = "huabei-1"
         | 
| 33 | 
            +
            end
         | 
| 34 | 
            +
             | 
| 35 | 
            +
            def load_file(fname)
         | 
| 36 | 
            +
              File.open([Rails.root,fname].join("/"))
         | 
| 37 | 
            +
            end
         | 
    
        data/spec/upload_spec.rb
    ADDED
    
    | @@ -0,0 +1,77 @@ | |
| 1 | 
            +
            require File.dirname(__FILE__) + '/spec_helper'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require "open-uri"
         | 
| 4 | 
            +
            ActiveRecord::Base.establish_connection(:adapter => 'sqlite3', :database => ':memory:')
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            describe "Upload" do
         | 
| 7 | 
            +
              def setup_db
         | 
| 8 | 
            +
                ActiveRecord::Schema.define(:version => 1) do
         | 
| 9 | 
            +
                  create_table :photos do |t|
         | 
| 10 | 
            +
                    t.column :image, :string
         | 
| 11 | 
            +
                  end
         | 
| 12 | 
            +
                end
         | 
| 13 | 
            +
              end
         | 
| 14 | 
            +
             | 
| 15 | 
            +
              def drop_db
         | 
| 16 | 
            +
                ActiveRecord::Base.connection.tables.each do |table|
         | 
| 17 | 
            +
                  ActiveRecord::Base.connection.drop_table(table)
         | 
| 18 | 
            +
                end
         | 
| 19 | 
            +
              end
         | 
| 20 | 
            +
             | 
| 21 | 
            +
              class PhotoUploader < CarrierWave::Uploader::Base
         | 
| 22 | 
            +
                include CarrierWave::MiniMagick
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                def grandcloud_bucket
         | 
| 25 | 
            +
                  "carrierwave"
         | 
| 26 | 
            +
                end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                version :small do
         | 
| 29 | 
            +
                  process :resize_to_fill => [120, 120]
         | 
| 30 | 
            +
                end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                def store_dir
         | 
| 33 | 
            +
                  "photos"
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
              end
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              class Photo < ActiveRecord::Base
         | 
| 38 | 
            +
                mount_uploader :image, PhotoUploader
         | 
| 39 | 
            +
              end
         | 
| 40 | 
            +
             | 
| 41 | 
            +
             | 
| 42 | 
            +
              before :all do
         | 
| 43 | 
            +
                setup_db
         | 
| 44 | 
            +
              end
         | 
| 45 | 
            +
             | 
| 46 | 
            +
              after :all do
         | 
| 47 | 
            +
                drop_db
         | 
| 48 | 
            +
              end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
              describe "Upload Image" do
         | 
| 51 | 
            +
                context "should upload image" do
         | 
| 52 | 
            +
                  before(:all) do
         | 
| 53 | 
            +
                    @file = load_file("foo.jpg")
         | 
| 54 | 
            +
                    @file1 = load_file("foo.gif")
         | 
| 55 | 
            +
                    @photo = Photo.new(:image => @file)
         | 
| 56 | 
            +
                    @photo1 = Photo.new(:image => @file1)
         | 
| 57 | 
            +
                  end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
                  it "should upload file" do
         | 
| 60 | 
            +
                    @photo.save.should be_true
         | 
| 61 | 
            +
                    @photo1.save.should be_true
         | 
| 62 | 
            +
                  end
         | 
| 63 | 
            +
             | 
| 64 | 
            +
                  it "should get uploaded file" do
         | 
| 65 | 
            +
                    img = open(@photo.image.url)
         | 
| 66 | 
            +
                    img.size.should == @file.size
         | 
| 67 | 
            +
                    img1 = open(@photo1.image.url)
         | 
| 68 | 
            +
                    img1.size.should == @file1.size
         | 
| 69 | 
            +
                  end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
                  it "sholud get small version uploaded file" do
         | 
| 72 | 
            +
                    open(@photo.image.small.url).should_not == nil
         | 
| 73 | 
            +
                    open(@photo1.image.small.url).should_not == nil
         | 
| 74 | 
            +
                  end
         | 
| 75 | 
            +
                end
         | 
| 76 | 
            +
              end
         | 
| 77 | 
            +
            end
         | 
    
        metadata
    ADDED
    
    | @@ -0,0 +1,105 @@ | |
| 1 | 
            +
            --- !ruby/object:Gem::Specification
         | 
| 2 | 
            +
            name: carrierwave-grandcloud
         | 
| 3 | 
            +
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            +
              version: 0.1.0
         | 
| 5 | 
            +
              prerelease: 
         | 
| 6 | 
            +
            platform: ruby
         | 
| 7 | 
            +
            authors:
         | 
| 8 | 
            +
            - Hui
         | 
| 9 | 
            +
            autorequire: 
         | 
| 10 | 
            +
            bindir: bin
         | 
| 11 | 
            +
            cert_chain: []
         | 
| 12 | 
            +
            date: 2012-08-24 00:00:00.000000000 Z
         | 
| 13 | 
            +
            dependencies:
         | 
| 14 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 15 | 
            +
              name: carrierwave
         | 
| 16 | 
            +
              requirement: &70286843901740 !ruby/object:Gem::Requirement
         | 
| 17 | 
            +
                none: false
         | 
| 18 | 
            +
                requirements:
         | 
| 19 | 
            +
                - - ! '>='
         | 
| 20 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 21 | 
            +
                    version: 0.5.7
         | 
| 22 | 
            +
              type: :runtime
         | 
| 23 | 
            +
              prerelease: false
         | 
| 24 | 
            +
              version_requirements: *70286843901740
         | 
| 25 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 26 | 
            +
              name: sndacs
         | 
| 27 | 
            +
              requirement: &70286843901240 !ruby/object:Gem::Requirement
         | 
| 28 | 
            +
                none: false
         | 
| 29 | 
            +
                requirements:
         | 
| 30 | 
            +
                - - ! '>='
         | 
| 31 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 32 | 
            +
                    version: 0.1.0
         | 
| 33 | 
            +
              type: :runtime
         | 
| 34 | 
            +
              prerelease: false
         | 
| 35 | 
            +
              version_requirements: *70286843901240
         | 
| 36 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 37 | 
            +
              name: rspec
         | 
| 38 | 
            +
              requirement: &70286843900760 !ruby/object:Gem::Requirement
         | 
| 39 | 
            +
                none: false
         | 
| 40 | 
            +
                requirements:
         | 
| 41 | 
            +
                - - ~>
         | 
| 42 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 43 | 
            +
                    version: '2.6'
         | 
| 44 | 
            +
              type: :development
         | 
| 45 | 
            +
              prerelease: false
         | 
| 46 | 
            +
              version_requirements: *70286843900760
         | 
| 47 | 
            +
            - !ruby/object:Gem::Dependency
         | 
| 48 | 
            +
              name: rake
         | 
| 49 | 
            +
              requirement: &70286846513760 !ruby/object:Gem::Requirement
         | 
| 50 | 
            +
                none: false
         | 
| 51 | 
            +
                requirements:
         | 
| 52 | 
            +
                - - ~>
         | 
| 53 | 
            +
                  - !ruby/object:Gem::Version
         | 
| 54 | 
            +
                    version: '0.9'
         | 
| 55 | 
            +
              type: :development
         | 
| 56 | 
            +
              prerelease: false
         | 
| 57 | 
            +
              version_requirements: *70286846513760
         | 
| 58 | 
            +
            description: SNDA Cloud Storage support for Carrierwave
         | 
| 59 | 
            +
            email:
         | 
| 60 | 
            +
            - hui@networking.io
         | 
| 61 | 
            +
            executables: []
         | 
| 62 | 
            +
            extensions: []
         | 
| 63 | 
            +
            extra_rdoc_files: []
         | 
| 64 | 
            +
            files:
         | 
| 65 | 
            +
            - .gitignore
         | 
| 66 | 
            +
            - Gemfile
         | 
| 67 | 
            +
            - Gemfile.lock
         | 
| 68 | 
            +
            - README.md
         | 
| 69 | 
            +
            - carrierwave-grandcloud.gemspec
         | 
| 70 | 
            +
            - lib/carrierwave-grandcloud.rb
         | 
| 71 | 
            +
            - lib/carrierwave/grandcloud/configuration.rb
         | 
| 72 | 
            +
            - lib/carrierwave/storage/grandcloud.rb
         | 
| 73 | 
            +
            - spec/foo.gif
         | 
| 74 | 
            +
            - spec/foo.jpg
         | 
| 75 | 
            +
            - spec/spec_helper.rb
         | 
| 76 | 
            +
            - spec/upload_spec.rb
         | 
| 77 | 
            +
            homepage: https://github.com/hui/carrierwave-grandcloud
         | 
| 78 | 
            +
            licenses: []
         | 
| 79 | 
            +
            post_install_message: 
         | 
| 80 | 
            +
            rdoc_options: []
         | 
| 81 | 
            +
            require_paths:
         | 
| 82 | 
            +
            - lib
         | 
| 83 | 
            +
            required_ruby_version: !ruby/object:Gem::Requirement
         | 
| 84 | 
            +
              none: false
         | 
| 85 | 
            +
              requirements:
         | 
| 86 | 
            +
              - - ! '>='
         | 
| 87 | 
            +
                - !ruby/object:Gem::Version
         | 
| 88 | 
            +
                  version: '0'
         | 
| 89 | 
            +
            required_rubygems_version: !ruby/object:Gem::Requirement
         | 
| 90 | 
            +
              none: false
         | 
| 91 | 
            +
              requirements:
         | 
| 92 | 
            +
              - - ! '>='
         | 
| 93 | 
            +
                - !ruby/object:Gem::Version
         | 
| 94 | 
            +
                  version: '0'
         | 
| 95 | 
            +
            requirements: []
         | 
| 96 | 
            +
            rubyforge_project: 
         | 
| 97 | 
            +
            rubygems_version: 1.8.15
         | 
| 98 | 
            +
            signing_key: 
         | 
| 99 | 
            +
            specification_version: 3
         | 
| 100 | 
            +
            summary: SNDA Cloud Storage support for Carrierwave
         | 
| 101 | 
            +
            test_files:
         | 
| 102 | 
            +
            - spec/foo.gif
         | 
| 103 | 
            +
            - spec/foo.jpg
         | 
| 104 | 
            +
            - spec/spec_helper.rb
         | 
| 105 | 
            +
            - spec/upload_spec.rb
         |