carrierwave-aliyun 0.3.6 → 0.4.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.
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