carrierwave-aliyun 0.3.6 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a8cb423fe32332c16b3621cb4b986b4c33288e73
4
- data.tar.gz: 6693a677b786138041c6d4cd44032afd9ae6269f
3
+ metadata.gz: f959d72b871dfbb6ca109a6b576c0454fc224c71
4
+ data.tar.gz: 3ba45a1b15695038844282406f7fac04a0905067
5
5
  SHA512:
6
- metadata.gz: 67d2dc2aad2650f46f0378594694016ce88a7d217c8ba48a1a087f7ae510884e65356666d1d3a6ee8101478a06d5e543ac7f9532df0c47619966845b94023b9f
7
- data.tar.gz: f5a212545459c9604ea38eb6ba7d2839c7f4b830838b25590de9df6c451d34c3a932f188397456006119a3e2f90445014bcd2097d507f8daf69ce42779ea1cb1
6
+ metadata.gz: 9088ffb4ab763ecd140aa18ea74e2159b24d6d10f10ff147dff824b88d1f4fb376e693f575aae238d70e4a065fec39831f9593786cdb6e99356bf20f92753603
7
+ data.tar.gz: 6cf390ea67da68871c3e2234799753ed38a130a09031d1ebce50faba5583a358a46db531dffafe8a73e490b9ece584d14f3866a2dda30b2465b7dcae37f79fca
data/.rspec CHANGED
@@ -1 +1 @@
1
- --colour --format nested
1
+ --colour
data/CHANGELOG.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.4.0
2
+
3
+ * 采用 aliyun-oss-sdk 来作为上传后端,不再依赖 rest-client,不再内部实现上传逻辑;
4
+ * 增加 `config.aliyun_private_read` 配置项,开启以后,返回的 @user.avatar.url 将会是带 Token 和有效期的 URL,可以用于访问私有读取空间的文件;
5
+ * 去掉 `config.aliyun_upload_host` 配置项,删除了阿里内部的支持,以后请用 0.3.x 版本;
6
+
1
7
  ## 0.3.6
2
8
 
3
9
  * 修正上传中文文件名无法成功的问题;
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source "http://ruby.taobao.org"
1
+ source "https://ruby.taobao.org"
2
2
 
3
3
 
4
4
  gemspec
data/README.md CHANGED
@@ -4,18 +4,11 @@ This gem adds support for [Aliyun OSS](http://oss.aliyun.com) to [CarrierWave](h
4
4
 
5
5
  - [![Gem Version](https://badge.fury.io/rb/carrierwave-aliyun.png)](https://rubygems.org/gems/carrierwave-aliyun)
6
6
 
7
- ## Installation
8
-
9
- ```bash
10
- gem install carrierwave-aliyun
11
- ```
12
-
13
- > NOTE: 此 Gem 是一个 CarrierWave 的组件,你需要配合 CarrierWave 一起使用。
7
+ > NOTE: 此 Gem 是一个 CarrierWave 的组件,你需要配合 CarrierWave 一起使用,如果你需要直接用 Aliyun OSS,可以尝试用 [aliyun-oss-ruby-sdk](https://github.com/aliyun-beta/aliyun-oss-ruby-sdk) 这个 Gem。
14
8
 
15
9
  ## Using Bundler
16
10
 
17
11
  ```ruby
18
- gem 'rest-client'
19
12
  gem 'carrierwave-aliyun'
20
13
  ```
21
14
 
@@ -30,15 +23,15 @@ CarrierWave.configure do |config|
30
23
  config.aliyun_access_key = 'xxxxxx'
31
24
  # 你需要在 Aliyum OSS 上面提前创建一个 Bucket
32
25
  config.aliyun_bucket = "simple"
33
- # 是否使用内部连接,true - 使用 Aliyun 局域网的方式访问 false - 外部网络访问
26
+ # 是否使用内部连接,true - 使用 Aliyun 主机内部局域网的方式访问 false - 外部网络访问
34
27
  config.aliyun_internal = true
35
28
  # 配置存储的地区数据中心,默认: cn-hangzhou
36
29
  # config.aliyun_area = "cn-hangzhou"
37
30
  # 使用自定义域名,设定此项,carrierwave 返回的 URL 将会用自定义域名
38
31
  # 自定于域名请 CNAME 到 you_bucket_name.oss.aliyuncs.com (you_bucket_name 是你的 bucket 的名称)
39
32
  config.aliyun_host = "http://foo.bar.com"
40
- # 如果有需要,你可以自己定义上传 host, 比如阿里内部的上传地址和 Aliyun OSS 对外的不同,可以在这里定义,没有需要可以不用配置
41
- # config.aliyun_upload_host = "http://you_bucket_name.oss.aliyun-inc.com"
33
+ # Bucket 为私有读取请设置 true,默认 false,以便得到的 URL 是能带有 private 空间访问权限的逻辑
34
+ # config.aliyun_private_read = false
42
35
  end
43
36
  ```
44
37
 
@@ -18,5 +18,5 @@ Gem::Specification.new do |s|
18
18
  s.license = 'MIT'
19
19
 
20
20
  s.add_dependency "carrierwave", [">= 0.5.7"]
21
- s.add_dependency "rest-client", [">= 1.6.7"]
21
+ s.add_dependency "aliyun-oss-sdk", [">= 0.1.5"]
22
22
  end
@@ -1,9 +1,11 @@
1
- require "carrierwave/storage/aliyun"
1
+ require 'carrierwave/storage/aliyun'
2
2
  require 'carrierwave/processing/mime_types'
3
- require "carrierwave/aliyun/configuration"
3
+ require 'carrierwave/aliyun/configuration'
4
+
4
5
  CarrierWave.configure do |config|
5
- config.storage_engines.merge!({:aliyun => "CarrierWave::Storage::Aliyun"})
6
+ config.storage_engines.merge!({ aliyun: 'CarrierWave::Storage::Aliyun' })
6
7
  end
8
+
7
9
  CarrierWave::Uploader::Base.send(:include, CarrierWave::Aliyun::Configuration)
8
10
  CarrierWave::Uploader::Base.send(:include, CarrierWave::MimeTypes)
9
- CarrierWave::Uploader::Base.send(:process, :set_content_type)
11
+ CarrierWave::Uploader::Base.send(:process, :set_content_type)
@@ -2,6 +2,7 @@ module CarrierWave
2
2
  module Aliyun
3
3
  module Configuration
4
4
  extend ActiveSupport::Concern
5
+
5
6
  included do
6
7
  add_config :aliyun_access_id
7
8
  add_config :aliyun_access_key
@@ -9,10 +10,10 @@ module CarrierWave
9
10
  add_config :aliyun_area
10
11
  add_config :aliyun_internal
11
12
  add_config :aliyun_host
12
- add_config :aliyun_upload_host
13
+ add_config :aliyun_private_read
13
14
  end
14
15
  end
15
-
16
+
16
17
  module ClassMethods
17
18
  def add_config(name)
18
19
  class_eval <<-RUBY, __FILE__, __LINE__ + 1
@@ -33,7 +34,7 @@ module CarrierWave
33
34
  value.instance_of?(Proc) ? value.call : value
34
35
  end
35
36
  RUBY
36
- end
37
+ end
37
38
  end
38
39
  end
39
- end
40
+ end
@@ -1,7 +1,7 @@
1
1
  module CarrierWave
2
2
  module Aliyun
3
3
  class Version
4
- MAJOR, MINOR, PATCH = 0, 3, 6
4
+ MAJOR, MINOR, PATCH = 0, 4, 0
5
5
 
6
6
  ##
7
7
  # Returns the major version ( big release based off of multiple minor releases )
@@ -1,33 +1,23 @@
1
1
  # encoding: utf-8
2
+ require 'aliyun/oss'
2
3
  require 'carrierwave'
3
- require 'digest/md5'
4
- require 'openssl'
5
4
  require 'uri'
6
- require "rest-client"
7
5
 
8
6
  module CarrierWave
9
7
  module Storage
10
8
  class Aliyun < Abstract
11
9
 
12
10
  class Connection
13
- def initialize(options={})
14
- @aliyun_access_id = options[:aliyun_access_id]
15
- @aliyun_access_key = options[:aliyun_access_key]
16
- @aliyun_bucket = options[:aliyun_bucket]
17
- @aliyun_area = options[:aliyun_area] || 'cn-hangzhou'
18
- @aliyun_upload_host = options[:aliyun_upload_host]
19
-
20
- # Host for upload
21
- if @aliyun_upload_host.nil?
22
- if options[:aliyun_internal] == true
23
- @aliyun_upload_host = "http://#{@aliyun_bucket}.oss-#{@aliyun_area}-internal.aliyuncs.com"
24
- else
25
- @aliyun_upload_host = "http://#{@aliyun_bucket}.oss-#{@aliyun_area}.aliyuncs.com"
26
- end
27
- end
11
+ def initialize(uploader)
12
+ @uploader = uploader
13
+ @aliyun_access_id = uploader.aliyun_access_id
14
+ @aliyun_access_key = uploader.aliyun_access_key
15
+ @aliyun_bucket = uploader.aliyun_bucket
16
+ @aliyun_area = uploader.aliyun_area || 'cn-hangzhou'
17
+ @aliyun_private_read = uploader.aliyun_private_read
28
18
 
29
19
  # Host for get request
30
- @aliyun_host = options[:aliyun_host] || "http://#{@aliyun_bucket}.oss-#{@aliyun_area}.aliyuncs.com"
20
+ @aliyun_host = uploader.aliyun_host || "http://#{@aliyun_bucket}.oss-#{@aliyun_area}.aliyuncs.com"
31
21
 
32
22
  if not @aliyun_host.include?("http")
33
23
  raise "config.aliyun_host requirement include http:// or https://, but you give: #{@aliyun_host}"
@@ -43,27 +33,17 @@ module CarrierWave
43
33
  # returns:
44
34
  # 图片的下载地址
45
35
  def put(path, file, options={})
46
- path = format_path(path)
47
- bucket_path = get_bucket_path(path)
48
- content_md5 = Digest::MD5.file(file)
49
- content_type = options[:content_type] || "image/jpg"
50
- date = gmtdate
51
- url = path_to_url(path)
52
-
53
- host = URI.parse(url).host
54
-
55
- auth_sign = sign("PUT", bucket_path, content_md5, content_type,date)
56
- headers = {
57
- "Authorization" => auth_sign,
58
- "Content-Type" => content_type,
59
- "Content-Length" => file.size,
60
- "Date" => date,
61
- "Host" => host,
62
- "Expect" => "100-Continue"
36
+ path.sub!(/^\//, '')
37
+ opts = {
38
+ 'Content-Type' => options[:content_type] || "image/jpg"
63
39
  }
64
40
 
65
- RestClient.put(url, file, headers)
66
- return path_to_url(path, :get => true)
41
+ res = oss_upload_client.bucket_create_object(path, file, opts)
42
+ if res.success?
43
+ path_to_url(path)
44
+ else
45
+ raise "Put file failed"
46
+ end
67
47
  end
68
48
 
69
49
  # 读取文件
@@ -72,20 +52,13 @@ module CarrierWave
72
52
  # returns:
73
53
  # file data
74
54
  def get(path)
75
- path = format_path(path)
76
- bucket_path = get_bucket_path(path)
77
- date = gmtdate
78
- url = path_to_url(path)
79
- host = URI.parse(url).host
80
- headers = {
81
- "Host" => host,
82
- "Date" => date,
83
- "Authorization" => sign("GET", bucket_path, "", "" ,date)
84
- }
85
-
86
- # path = format_path(path)
87
- # url = path_to_url(path)
88
- RestClient.get(url, headers)
55
+ path.sub!(/^\//, '')
56
+ res = oss_upload_client.bucket_get_object(path)
57
+ if res.success?
58
+ return res.parsed_response
59
+ else
60
+ raise "Get content faild"
61
+ end
89
62
  end
90
63
 
91
64
  # 删除 Remote 的文件
@@ -96,57 +69,53 @@ module CarrierWave
96
69
  # returns:
97
70
  # 图片的下载地址
98
71
  def delete(path)
99
- path = format_path(path)
100
- bucket_path = get_bucket_path(path)
101
- date = gmtdate
102
- url = path_to_url(path)
103
- host = URI.parse(url).host
104
- headers = {
105
- "Host" => host,
106
- "Date" => date,
107
- "Authorization" => sign("DELETE", bucket_path, "", "" ,date)
108
- }
109
-
110
- RestClient.delete(url, headers)
111
- return path_to_url(path, :get => true)
72
+ path.sub!(/^\//, '')
73
+ res = oss_upload_client.bucket_delete_object(path)
74
+ if res.success?
75
+ return path_to_url(path)
76
+ else
77
+ raise "Delete failed"
78
+ end
112
79
  end
113
80
 
114
- #
115
- # 阿里云需要的 GMT 时间格式
116
- def gmtdate
117
- Time.now.gmtime.strftime("%a, %d %b %Y %H:%M:%S GMT")
81
+ ##
82
+ # 根据配置返回完整的上传文件的访问地址
83
+ def path_to_url(path)
84
+ [@aliyun_host, path].join("/")
118
85
  end
119
86
 
120
- def format_path(path)
121
- return "" if path.blank?
122
- path.gsub!(/^\//,"")
123
-
124
- path
87
+ # 私有空间访问地址,会带上实时算出的 token 信息
88
+ # 有效期 3600s
89
+ def private_get_url(path)
90
+ path.sub!(/^\//, '')
91
+ oss_client.bucket_get_object_share_link(path, 3600)
125
92
  end
126
93
 
127
- def get_bucket_path(path)
128
- [@aliyun_bucket,path].join("/")
94
+ private
95
+ def oss_client
96
+ return @oss_client if defined?(@oss_client)
97
+ opts = {
98
+ host: "oss-#{@aliyun_area}.aliyuncs.com",
99
+ bucket: @aliyun_bucket
100
+ }
101
+ @oss_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
129
102
  end
130
103
 
131
- ##
132
- # 根据配置返回完整的上传文件的访问地址
133
- def path_to_url(path, opts = {})
134
- if opts[:get]
135
- "#{@aliyun_host}/#{path}"
104
+ def oss_upload_client
105
+ return @oss_upload_client if defined?(@oss_upload_client)
106
+
107
+ if @uploader.aliyun_internal
108
+ host = "oss-#{@aliyun_area}-internal.aliyuncs.com"
136
109
  else
137
- "#{@aliyun_upload_host}/#{path}"
110
+ host = "oss-#{@aliyun_area}.aliyuncs.com"
138
111
  end
139
- end
140
112
 
141
- private
142
- def sign(verb, path, content_md5 = '', content_type = '', date)
143
- canonicalized_oss_headers = ''
144
- canonicalized_resource = "/#{URI.decode(path)}"
145
- string_to_sign = "#{verb}\n\n#{content_type}\n#{date}\n#{canonicalized_oss_headers}#{canonicalized_resource}"
146
- digest = OpenSSL::Digest.new('sha1')
147
- h = OpenSSL::HMAC.digest(digest, @aliyun_access_key, string_to_sign)
148
- h = Base64.encode64(h)
149
- "OSS #{@aliyun_access_id}:#{h}"
113
+ opts = {
114
+ host: host,
115
+ bucket: @aliyun_bucket
116
+ }
117
+
118
+ @oss_upload_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
150
119
  end
151
120
  end
152
121
 
@@ -196,7 +165,11 @@ module CarrierWave
196
165
  end
197
166
 
198
167
  def url
199
- oss_connection.path_to_url(@path, :get => true)
168
+ if @uploader.aliyun_private_read
169
+ oss_connection.private_get_url(@path)
170
+ else
171
+ oss_connection.path_to_url(@path)
172
+ end
200
173
  end
201
174
 
202
175
  def content_type
@@ -214,7 +187,7 @@ module CarrierWave
214
187
  private
215
188
 
216
189
  def headers
217
- @headers ||= { }
190
+ @headers ||= {}
218
191
  end
219
192
 
220
193
  def connection
@@ -222,18 +195,9 @@ module CarrierWave
222
195
  end
223
196
 
224
197
  def oss_connection
225
- return @oss_connection if @oss_connection
226
-
227
- config = {
228
- :aliyun_access_id => @uploader.aliyun_access_id,
229
- :aliyun_access_key => @uploader.aliyun_access_key,
230
- :aliyun_area => @uploader.aliyun_area,
231
- :aliyun_bucket => @uploader.aliyun_bucket,
232
- :aliyun_internal => @uploader.aliyun_internal,
233
- :aliyun_host => @uploader.aliyun_host,
234
- :aliyun_upload_host => @uploader.aliyun_upload_host
235
- }
236
- @oss_connection ||= CarrierWave::Storage::Aliyun::Connection.new(config)
198
+ return @oss_connection if defined? @oss_connection
199
+
200
+ @oss_connection = CarrierWave::Storage::Aliyun::Connection.new(@uploader)
237
201
  end
238
202
 
239
203
  end
data/spec/aliyun_spec.rb CHANGED
@@ -12,40 +12,59 @@ describe "Aliyun" do
12
12
  :aliyun_internal => true,
13
13
  :aliyun_host => "http://bison-dev.cn-hangzhou.oss.aliyun-inc.com"
14
14
  }
15
- @connection = CarrierWave::Storage::Aliyun::Connection.new(@opts)
15
+
16
+ @uploader = CarrierWave::Uploader::Base.new
17
+ @connection = CarrierWave::Storage::Aliyun::Connection.new(@uploader)
16
18
  end
17
19
 
18
20
  it "should put" do
19
21
  url = @connection.put("a/a.jpg",load_file("foo.jpg"))
20
- Net::HTTP.get_response(URI.parse(url)).code.should == "200"
22
+ res = Net::HTTP.get_response(URI.parse(url))
23
+ expect(res.code).to eq "200"
21
24
  end
22
25
 
23
26
  it "should put with / prefix" do
24
27
  url = @connection.put("/a/a.jpg",load_file("foo.jpg"))
25
- Net::HTTP.get_response(URI.parse(url)).code.should == "200"
28
+ res = Net::HTTP.get_response(URI.parse(url))
29
+ expect(res.code).to eq "200"
26
30
  end
27
-
31
+
28
32
  it "should delete" do
29
33
  url = @connection.delete("/a/a.jpg")
30
- Net::HTTP.get_response(URI.parse(url)).code.should == "404"
34
+ res = Net::HTTP.get_response(URI.parse(url))
35
+ expect(res.code).to eq "404"
31
36
  end
32
-
37
+
33
38
  it "should support custom domain" do
34
- @opts[:aliyun_host] = "https://foo.bar.com"
35
- @connection = CarrierWave::Storage::Aliyun::Connection.new(@opts)
39
+ @uploader.aliyun_host = "https://foo.bar.com"
40
+ @connection = CarrierWave::Storage::Aliyun::Connection.new(@uploader)
36
41
  url = @connection.put("a/a.jpg",load_file("foo.jpg"))
37
- url.should == "https://foo.bar.com/a/a.jpg"
38
- @opts[:aliyun_host] = "http://foo.bar.com"
39
- @connection = CarrierWave::Storage::Aliyun::Connection.new(@opts)
42
+ expect(url).to eq "https://foo.bar.com/a/a.jpg"
43
+ @uploader.aliyun_host = "http://foo.bar.com"
44
+ @connection = CarrierWave::Storage::Aliyun::Connection.new(@uploader)
40
45
  url = @connection.put("a/a.jpg",load_file("foo.jpg"))
41
- url.should == "http://foo.bar.com/a/a.jpg"
46
+ expect(url).to eq "http://foo.bar.com/a/a.jpg"
42
47
  end
43
-
48
+
49
+ describe 'private read bucket' do
50
+ before do
51
+ @uploader.aliyun_private_read = true
52
+ @connection = CarrierWave::Storage::Aliyun::Connection.new(@uploader)
53
+ end
54
+
55
+ it 'should get url include token' do
56
+ url = @connection.private_get_url('bar/foo.jpg')
57
+ # http://oss-cn-beijing.aliyuncs.com.//carrierwave-aliyun-test.oss-cn-beijing.aliyuncs.com/bar/foo.jpg?OSSAccessKeyId=1OpWEtPTjIDv5u8q&Expires=1455172009&Signature=4ibgQpfHOjVpqxG6162S8Ar3c6c=
58
+ expect(url).to include(*%w(Signature Expires OSSAccessKeyId))
59
+ expect(url).to include "http://#{@uploader.aliyun_bucket}.oss-cn-beijing.aliyuncs.com/bar/foo.jpg"
60
+ end
61
+ end
62
+
44
63
  describe 'File' do
45
64
  it 'should have respond_to identifier' do
46
- f = CarrierWave::Storage::Aliyun::File.new(nil, nil, nil)
47
- f.should respond_to(:identifier)
48
- f.should respond_to(:filename)
65
+ f = CarrierWave::Storage::Aliyun::File.new(@uploader, '', '')
66
+ expect(f).to respond_to(:identifier)
67
+ expect(f).to respond_to(:filename)
49
68
  end
50
69
  end
51
70
  end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'rspec'
3
- require 'rspec/autorun'
4
3
  require 'rails'
5
4
  require 'active_record'
6
5
  require "carrierwave"
@@ -25,20 +24,20 @@ ActiveRecord::Migration.verbose = false
25
24
  ActiveRecord::Base.raise_in_transactional_callbacks = true
26
25
 
27
26
  # 测试的时候需要修改这个地方
28
- ALIYUN_ACCESS_ID = "osOXJ5VeQVgDLMs3"
29
- ALIYUN_ACCESS_KEY = 'm2LSEotGzDFrtHLeG1e6OATUTQ5ypR'
30
- ALIYUN_BUCKET = "bison-dev"
27
+ ALIYUN_ACCESS_ID = "1OpWEtPTjIDv5u8q"
28
+ ALIYUN_ACCESS_KEY = 'cz12XgPfEVy8Xe9F9UJJHmVdHBJ9bi'
29
+ ALIYUN_BUCKET = "carrierwave-aliyun-test"
30
+ ALIYUN_AREA = "cn-beijing"
31
31
 
32
32
  CarrierWave.configure do |config|
33
33
  config.storage = :aliyun
34
34
  config.aliyun_access_id = ALIYUN_ACCESS_ID
35
35
  config.aliyun_access_key = ALIYUN_ACCESS_KEY
36
36
  config.aliyun_bucket = ALIYUN_BUCKET
37
- config.aliyun_area = "cn-hangzhou"
38
- config.aliyun_internal = true
39
- config.aliyun_host = "http://bison-dev.cn-hangzhou.oss.aliyun-inc.com"
37
+ config.aliyun_area = ALIYUN_AREA
38
+ config.aliyun_internal = false
40
39
  end
41
40
 
42
41
  def load_file(fname)
43
42
  File.open([Rails.root,fname].join("/"))
44
- end
43
+ end
data/spec/upload_spec.rb CHANGED
@@ -10,31 +10,31 @@ describe "Upload" do
10
10
  create_table :photos do |t|
11
11
  t.column :image, :string
12
12
  end
13
-
13
+
14
14
  create_table :attachments do |t|
15
15
  t.column :file, :string
16
16
  end
17
17
  end
18
18
  end
19
-
19
+
20
20
  def drop_db
21
21
  ActiveRecord::Base.connection.tables.each do |table|
22
22
  ActiveRecord::Base.connection.drop_table(table)
23
23
  end
24
24
  end
25
-
25
+
26
26
  class PhotoUploader < CarrierWave::Uploader::Base
27
27
  include CarrierWave::MiniMagick
28
28
 
29
29
  version :small do
30
30
  process :resize_to_fill => [120, 120]
31
31
  end
32
-
32
+
33
33
  def store_dir
34
34
  "photos"
35
35
  end
36
36
  end
37
-
37
+
38
38
  class AttachUploader < CarrierWave::Uploader::Base
39
39
  include CarrierWave::MiniMagick
40
40
 
@@ -46,20 +46,20 @@ describe "Upload" do
46
46
  class Photo < ActiveRecord::Base
47
47
  mount_uploader :image, PhotoUploader
48
48
  end
49
-
49
+
50
50
  class Attachment < ActiveRecord::Base
51
51
  mount_uploader :file, AttachUploader
52
52
  end
53
-
54
-
53
+
54
+
55
55
  before :all do
56
56
  setup_db
57
57
  end
58
-
58
+
59
59
  after :all do
60
60
  drop_db
61
61
  end
62
-
62
+
63
63
  describe "Upload Image" do
64
64
  context "should upload image" do
65
65
  before(:all) do
@@ -68,46 +68,47 @@ describe "Upload" do
68
68
  @photo = Photo.new(:image => @file)
69
69
  @photo1 = Photo.new(:image => @file1)
70
70
  end
71
-
71
+
72
72
  it "should upload file" do
73
- @photo.save.should be_true
74
- @photo1.save.should be_true
73
+ expect(@photo.save).to eq true
74
+ expect(@photo1.save).to eq true
75
75
  end
76
-
76
+
77
77
  it "should get uploaded file" do
78
78
  img = open(@photo.image.url)
79
- img.size.should == @file.size
79
+ expect(img.size).to eq @file.size
80
80
  img1 = open(@photo1.image.url)
81
- img1.size.should == @file1.size
81
+ expect(img1.size).to eq @file1.size
82
82
  end
83
-
84
- it "sholud get small version uploaded file" do
85
- open(@photo.image.small.url).should_not == nil
86
- open(@photo1.image.small.url).should_not == nil
83
+
84
+ it "sholud get small version uploaded file" do
85
+ expect(open(@photo.image.small.url)).not_to eq nil
86
+ expect(open(@photo1.image.small.url)).not_to eq nil
87
87
  end
88
88
  end
89
-
89
+
90
90
  context "should update zip" do
91
91
  before(:all) do
92
92
  @file = load_file("foo.zip")
93
93
  @attachment = Attachment.new(:file => @file)
94
94
  end
95
-
95
+
96
96
  it "should upload file" do
97
- @attachment.save.should be_true
97
+ expect(@attachment.save).to eq true
98
98
  end
99
-
99
+
100
100
  it "should get uploaded file" do
101
101
  attach = open(@attachment.file.url)
102
- attach.size.should == @file.size
102
+ expect(attach.size).to eq @file.size
103
103
  end
104
-
104
+
105
105
  it "should delete old file when upload a new file again" do
106
106
  old_url = @attachment.file.url
107
107
  @attachment.file = load_file("foo.gif")
108
108
  @attachment.save
109
- Net::HTTP.get_response(URI.parse(old_url)).code.should == "404"
109
+ res = Net::HTTP.get_response(URI.parse(old_url))
110
+ expect(res.code).to eq "404"
110
111
  end
111
112
  end
112
113
  end
113
- end
114
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-aliyun
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.6
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Lee
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-11-09 00:00:00.000000000 Z
11
+ date: 2016-02-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carrierwave
@@ -25,19 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.5.7
27
27
  - !ruby/object:Gem::Dependency
28
- name: rest-client
28
+ name: aliyun-oss-sdk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 1.6.7
33
+ version: 0.1.5
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: 1.6.7
40
+ version: 0.1.5
41
41
  description: Aliyun OSS support for Carrierwave
42
42
  email:
43
43
  - huacnlee@gmail.com
@@ -82,7 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
82
82
  version: '0'
83
83
  requirements: []
84
84
  rubyforge_project:
85
- rubygems_version: 2.4.8
85
+ rubygems_version: 2.5.1
86
86
  signing_key:
87
87
  specification_version: 4
88
88
  summary: Aliyun OSS support for Carrierwave