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
|