carrierwave-aliyun 0.9.0 → 1.0.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
- SHA1:
3
- metadata.gz: 53decd06c8f555306944151549e3dcf77aba121c
4
- data.tar.gz: d2b63cbc759d87580f6063ca5cac95c677e68730
2
+ SHA256:
3
+ metadata.gz: d76d49aaf688f569f6ad24269872e9ff3a773590d63533c472e5fe570bc673ab
4
+ data.tar.gz: 4a6d40ae6c492edb56fd5804ee7b69ff89cddbc88143f95dc7b2aa5bd8a6a898
5
5
  SHA512:
6
- metadata.gz: e9a8edaa67c65cc46081a2f7148e88a12baa11a6f8a10511cbec1852bef4ce4a2aaccd5a82d192cdde3692f3b127354d2ea281bc3abe6c1b5773021ba15304df
7
- data.tar.gz: 49db38d01fc589d6f3308f7e8e7d53e335defbbfca080504ffbe80d1a7a1ffe243d73bfafcf0a33091710f867674096f28f6d1b9ecbec3675ed1c1c0ca0c8edd
6
+ metadata.gz: 478a675dbb9dd3eaea1049c6a33dd892c5ff1458c615c1dff4d0eb6c4eb6a61cb8227bb7fb8d327679fed4cc29c24890ee1fb59399e431b2d845d2afa9960170
7
+ data.tar.gz: 935fc2b025cb985d5133b198d7aa82e3baec7e7328bea7b33152b2dd90efc753df3c94a407fa102f9bb88465b41cd35e0b953728b49f0956ed24f8ab15ac1e0e
@@ -1,3 +1,13 @@
1
+ ## 1.0.0
2
+
3
+ - 采用 Aliyun 官方的 SDK 来访问 OSS;
4
+ - DEPRECATION: 配置参数命名规范化,老的配置方式将会在 1.1.0 版本废弃,请注意替换:
5
+ - `aliyun_access_id` -> `aliyun_access_key_id`
6
+ - `aliyun_access_key` -> `aliyun_access_key_secret`
7
+ - `aliyun_area` -> `aliyun_region`
8
+ - `aliyun_private_read` -> `aliyun_mode = :private`
9
+ - 改进文件上传,支持 `chunk` 模式上传,提升大文件上传的效率以及降低内存开销;
10
+
1
11
  ## 0.9.0
2
12
 
3
13
  - 修正 `AliyunFile#read` 方法会报错的问题。(#53)
data/README.md CHANGED
@@ -4,7 +4,9 @@ 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.svg)](https://rubygems.org/gems/carrierwave-aliyun) [![Build Status](https://travis-ci.org/huacnlee/carrierwave-aliyun.svg?branch=master)](https://travis-ci.org/huacnlee/carrierwave-aliyun) [![Code Climate](https://codeclimate.com/github/huacnlee/carrierwave-aliyun/badges/gpa.svg)](https://codeclimate.com/github/huacnlee/carrierwave-aliyun)
6
6
 
7
- > NOTE: 此 Gem 是一个 CarrierWave 的组件,你需要配合 CarrierWave 一起使用,如果你需要直接用 Aliyun OSS,可以尝试用 [aliyun-oss-ruby-sdk](https://github.com/aliyun-beta/aliyun-oss-ruby-sdk) 这个 Gem。
7
+ > NOTE: 此 Gem 是一个 CarrierWave 的组件,你需要配合 CarrierWave 一起使用,如果你需要直接用 Aliyun OSS,可以尝试用 [aliyun-sdk](https://github.com/aliyun/aliyun-oss-ruby-sdk) 这个 Gem。
8
+
9
+ > NOTE: This gem is a extends for [CarrierWave](https://github.com/jnicklas/carrierwave/) for allow it support use Alicloud OSS as storage backend, if you wants use Alicloud OSS directly, please visit [aliyun-sdk](https://github.com/aliyun/aliyun-oss-ruby-sdk).
8
10
 
9
11
  ## Using Bundler
10
12
 
@@ -14,33 +16,42 @@ gem 'carrierwave-aliyun'
14
16
 
15
17
  ## Configuration
16
18
 
17
- 创建这么个脚本 `config/initializers/carrierwave.rb` 填入下面的代码,并修改对应的配置:
19
+ You need a `config/initializers/carrierwave.rb` for initialize, and update your configurations:
18
20
 
19
21
  ```ruby
20
22
  CarrierWave.configure do |config|
21
23
  config.storage = :aliyun
22
- config.aliyun_access_id = "xxxxxx"
23
- config.aliyun_access_key = 'xxxxxx'
24
- # 你需要在 Aliyum OSS 上面提前创建一个 Bucket
24
+ config.aliyun_access_key_id = "xxxxxx"
25
+ config.aliyun_access_key_secret = 'xxxxxx'
26
+ # 你需要在 Aliyun OSS 上面提前创建一个 Bucket
27
+ # You must create a Bucket on Alicloud OSS first.
25
28
  config.aliyun_bucket = "simple"
26
29
  # 是否使用内部连接,true - 使用 Aliyun 主机内部局域网的方式访问 false - 外部网络访问
30
+ # When your app server wants deployment in Alicloud internal network, enable this option can speed up uploading by using internal networking. otherwice you must disable it.
27
31
  config.aliyun_internal = true
28
- # 配置存储的地区数据中心,默认: cn-hangzhou
29
- # config.aliyun_area = "cn-hangzhou"
32
+ # 配置存储的地区数据中心,默认: "cn-hangzhou"
33
+ # Which region of your Bucket.
34
+ # config.aliyun_region = "cn-hangzhou"
30
35
  # 使用自定义域名,设定此项,carrierwave 返回的 URL 将会用自定义域名
31
36
   # 自定义域名请 CNAME 到 you_bucket_name.oss-cn-hangzhou.aliyuncs.com (you_bucket_name 是你的 bucket 的名称)
37
+ # aliyun_host allow you config a custom host for your Alicloud Bucket, and you also need config that on Alicloud.
32
38
  config.aliyun_host = "https://foo.bar.com"
33
39
  # Bucket 为私有读取请设置 true,默认 false,以便得到的 URL 是能带有 private 空间访问权限的逻辑
34
- # config.aliyun_private_read = false
40
+ # Tell SDK the privacy of you Bucket, if private CarrierWave xxx.url will generate URL with a expires parameter, default: :public.
41
+ # config.aliyun_mode = :private
35
42
  end
36
43
  ```
37
44
 
38
- ## 阿里云 OSS 图片缩略图
45
+ ## 阿里云 OSS 图片缩略图 / About the image Thumb service for Alicloud OSS
39
46
 
40
47
  > NOTE: 此方法同样支持 Private 的 Bucket 哦!
41
48
 
49
+ > NOTE: Private Bucket also support this feature!
50
+
42
51
  关于阿里云 OSS 图片缩略图的详细文档,请仔细阅读: [Aliyun OSS 接入图片服务](https://help.aliyun.com/document_detail/44688.html)
43
52
 
53
+ The details of the Alicoud OSS image thumb service, please visit [Alicloud OSS - Image Processing / Resize images](https://www.alibabacloud.com/help/doc-detail/44688.htm)
54
+
44
55
  ```rb
45
56
  irb> User.last.avatar.url(thumb: '?x-oss-process=image/resize,h_100')
46
57
  "https://simple.oss-cn-hangzhou.aliyuncs.com/users/avatar/12.png?x-oss-process=image/resize,h_100"
@@ -48,21 +59,24 @@ irb> User.last.avatar.url(thumb: '?x-oss-process=image/resize,h_100,w_100')
48
59
  "https://simple.oss-cn-hangzhou.aliyuncs.com/users/avatar/12.png?x-oss-process=image/resize,h_100,w_100"
49
60
  ```
50
61
 
51
- ## 增对文件设置 Content-Disposition
62
+ ## 增对文件设置 Content-Disposition / Customize the Content-Disposition
52
63
 
53
- 在文件上传的场景(非图片),你可能需要给上传的文件设置 Content-Disposition 以便于用户直接访问 URL 的时候能够用你期望的文件名或原文件名来下载并保存。
64
+ 在文件上传的场景(非图片),你可能需要给上传的文件设置 `Content-Disposition` 以便于用户直接访问 URL 的时候能够用你期望的文件名或原文件名来下载并保存。
65
+
66
+ In some case, you may need change the `Content-Disposition` for your uploaded files for allow users visit URL with direct download, and get the original filename.
54
67
 
55
68
  这个时候你需要给 Uploader 实现 `content_disposition` 函数,例如:
56
69
 
70
+ So, you need implement a `content_disposition` method for your CarrierWave Uploader, for example:
71
+
57
72
  ```rb
58
73
  # app/uploaders/attachment_uploader.rb
59
74
  class AttachmentUploader < CarrierWave::Uploader::Base
60
75
  def content_disposition
61
- # 非图片文件,给 content_disposition
76
+ # Only for non-image files
62
77
  unless file.extension.downcase.in?(%w(jpg jpeg gif png svg))
63
78
  "attachment;filename=#{file.original_filename}"
64
79
  end
65
80
  end
66
81
  end
67
-
68
82
  ```
@@ -1,13 +1,19 @@
1
- require 'carrierwave/storage/aliyun'
2
- require 'carrierwave/storage/aliyun_file'
3
- require 'carrierwave/aliyun/bucket'
4
- require 'carrierwave/aliyun/version'
5
- require 'carrierwave/aliyun/configuration'
1
+ # frozen_string_literal: true
2
+
3
+ require "carrierwave"
4
+ require "carrierwave/storage/aliyun"
5
+ require "carrierwave/storage/aliyun_file"
6
+ require "carrierwave/aliyun/bucket"
7
+ require "carrierwave/aliyun/version"
8
+ require "carrierwave/aliyun/configuration"
9
+ require "aliyun/oss"
6
10
 
7
11
  CarrierWave::Uploader::Base.send(:include, CarrierWave::Aliyun::Configuration)
8
12
 
9
- if CarrierWave::VERSION <= '0.11.0'
10
- require 'carrierwave/processing/mime_types'
13
+ if CarrierWave::VERSION <= "0.11.0"
14
+ require "carrierwave/processing/mime_types"
11
15
  CarrierWave::Uploader::Base.send(:include, CarrierWave::MimeTypes)
12
16
  CarrierWave::Uploader::Base.send(:process, :set_content_type)
13
17
  end
18
+
19
+ Aliyun::Common::Logging.set_log_file("/dev/null")
@@ -1,22 +1,52 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CarrierWave
2
4
  module Aliyun
3
5
  class Bucket
4
6
  PATH_PREFIX = %r{^/}
7
+ CHUNK_SIZE = 1024 * 1024
8
+
9
+ attr_reader :access_key_id, :access_key_secret, :bucket, :region, :mode, :host
10
+
11
+ attr_reader :endpoint, :img_endpoint, :upload_endpoint
5
12
 
6
13
  def initialize(uploader)
7
- @aliyun_access_id = uploader.aliyun_access_id
8
- @aliyun_access_key = uploader.aliyun_access_key
9
- @aliyun_bucket = uploader.aliyun_bucket
10
- @aliyun_area = uploader.aliyun_area || 'cn-hangzhou'
11
- @aliyun_private_read = uploader.aliyun_private_read
12
- @aliyun_internal = uploader.aliyun_internal
14
+ if uploader.aliyun_area.present?
15
+ ActiveSupport::Deprecation.warn("config.aliyun_area will deprecation in carrierwave-aliyun 1.1.0, please use `aliyun_region` instead.")
16
+ uploader.aliyun_region ||= uploader.aliyun_area
17
+ end
18
+
19
+ if uploader.aliyun_private_read != nil
20
+ ActiveSupport::Deprecation.warn(%(config.aliyun_private_read will deprecation in carrierwave-aliyun 1.1.0, please use `aliyun_mode = :private` instead.))
21
+ uploader.aliyun_mode ||= uploader.aliyun_private_read ? :private : :public
22
+ end
23
+
24
+ if uploader.aliyun_access_id.present?
25
+ ActiveSupport::Deprecation.warn(%(config.aliyun_access_id will deprecation in carrierwave-aliyun 1.1.0, please use `aliyun_access_key_id` instead.))
26
+ uploader.aliyun_access_key_id ||= uploader.aliyun_access_id
27
+ end
28
+
29
+ if uploader.aliyun_access_key.present?
30
+ ActiveSupport::Deprecation.warn(%(config.aliyun_access_key will deprecation in carrierwave-aliyun 1.1.0, please use `aliyun_access_key_secret` instead.))
31
+ uploader.aliyun_access_key_secret ||= uploader.aliyun_access_key
32
+ end
33
+
34
+ @access_key_id = uploader.aliyun_access_key_id
35
+ @access_key_secret = uploader.aliyun_access_key_secret
36
+ @bucket = uploader.aliyun_bucket
37
+ @region = uploader.aliyun_region || "cn-hangzhou"
38
+ @mode = (uploader.aliyun_mode || :public).to_sym
13
39
 
14
40
  # Host for get request
15
- @aliyun_host = uploader.aliyun_host || "https://#{@aliyun_bucket}.oss-#{@aliyun_area}.aliyuncs.com"
41
+ @host = uploader.aliyun_host || "https://#{self.bucket}.oss-#{self.region}.aliyuncs.com"
16
42
 
17
- unless @aliyun_host.include?('//')
18
- raise "config.aliyun_host requirement include // http:// or https://, but you give: #{@aliyun_host}"
43
+ unless @host.include?("//")
44
+ raise "config.aliyun_host requirement include // http:// or https://, but you give: #{self.host}"
19
45
  end
46
+
47
+ @endpoint = "https://oss-#{self.region}.aliyuncs.com"
48
+ @upload_endpoint = uploader.aliyun_internal == true ? "https://oss-#{self.region}-internal.aliyuncs.com" : @endpoint
49
+ @img_endpoint = "https://img-#{self.region}.aliyuncs.com"
20
50
  end
21
51
 
22
52
  # 上传文件
@@ -28,21 +58,20 @@ module CarrierWave
28
58
  # - content_disposition - Content-Disposition
29
59
  # returns:
30
60
  # 图片的下载地址
31
- def put(path, file, opts = {})
32
- path.sub!(PATH_PREFIX, '')
61
+ def put(path, file, content_type: "image/jpg", content_disposition: nil)
62
+ path = path.sub(PATH_PREFIX, "")
33
63
 
34
64
  headers = {}
35
- headers['Content-Type'] = opts[:content_type] || 'image/jpg'
36
- content_disposition = opts[:content_disposition]
37
- if content_disposition
38
- headers['Content-Disposition'] = content_disposition
39
- end
65
+ headers["Content-Type"] = content_type
66
+ headers["Content-Disposition"] = content_disposition if content_disposition
40
67
 
41
- res = oss_upload_client.bucket_create_object(path, file, headers)
42
- if res.success?
68
+ begin
69
+ oss_upload_client.put_object(path, headers: headers) do |stream|
70
+ stream << file.read(CHUNK_SIZE) until file.eof?
71
+ end
43
72
  path_to_url(path)
44
- else
45
- raise 'Put file failed'
73
+ rescue => e
74
+ raise "Put file failed: #{e}"
46
75
  end
47
76
  end
48
77
 
@@ -52,13 +81,15 @@ module CarrierWave
52
81
  # returns:
53
82
  # file data
54
83
  def get(path)
55
- path.sub!(PATH_PREFIX, '')
56
- res = oss_upload_client.bucket_get_object(path)
57
- if res.success?
58
- return res
59
- else
60
- raise 'Get content faild'
84
+ path = path.sub(PATH_PREFIX, "")
85
+ chunk_buff = []
86
+ obj = oss_upload_client.get_object(path) do |chunk|
87
+ chunk_buff << chunk
61
88
  end
89
+
90
+ [obj, chunk_buff.join("")]
91
+ rescue => e
92
+ raise "Get content faild: #{e}"
62
93
  end
63
94
 
64
95
  # 删除 Remote 的文件
@@ -69,80 +100,65 @@ module CarrierWave
69
100
  # returns:
70
101
  # 图片的下载地址
71
102
  def delete(path)
72
- path.sub!(PATH_PREFIX, '')
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
103
+ path = path.sub(PATH_PREFIX, "")
104
+ oss_upload_client.delete_object(path)
105
+ path_to_url(path)
106
+ rescue => e
107
+ raise "Delete failed: #{e}"
79
108
  end
80
109
 
81
110
  ##
82
111
  # 根据配置返回完整的上传文件的访问地址
83
- def path_to_url(path, opts = {})
84
- if opts[:thumb]
85
- thumb_path = [path, opts[:thumb]].join('')
86
- [@aliyun_host, thumb_path].join('/')
87
- else
88
- [@aliyun_host, path].join('/')
89
- end
90
- end
112
+ def path_to_url(path, thumb: nil)
113
+ path = path.sub(PATH_PREFIX, "")
91
114
 
92
- # 私有空间访问地址,会带上实时算出的 token 信息
93
- # 有效期 3600s
94
- def private_get_url(path, opts = {})
95
- path.sub!(PATH_PREFIX, '')
96
- url = ''
97
- if opts[:thumb]
98
- thumb_path = [path, opts[:thumb]].join('')
99
- url = img_client.bucket_get_object_share_link(thumb_path, 3600)
115
+ if thumb
116
+ [self.host, [path, thumb].join("")].join("/")
100
117
  else
101
- url = oss_client.bucket_get_object_share_link(path, 3600)
118
+ [self.host, path].join("/")
102
119
  end
103
- url.gsub('http://', 'https://')
104
120
  end
105
121
 
106
- def head(path)
107
- oss_client.bucket_get_meta_object(path)
108
- end
122
+ # 私有空间访问地址,会带上实时算出的 token 信息
123
+ # 有效期 15 minutes
124
+ def private_get_url(path, thumb: nil)
125
+ path = path.sub(PATH_PREFIX, "")
109
126
 
110
- private
127
+ url = if thumb
128
+ img_client.object_url([path, thumb].join(""), expiry: 15.minutes)
129
+ else
130
+ oss_client.object_url(path, expiry: 15.minutes)
131
+ end
111
132
 
112
- def oss_client
113
- return @oss_client if defined?(@oss_client)
114
- opts = {
115
- host: "oss-#{@aliyun_area}.aliyuncs.com",
116
- bucket: @aliyun_bucket
117
- }
118
- @oss_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
133
+ url.sub("http://", "https://")
119
134
  end
120
135
 
121
- def img_client
122
- return @img_client if defined?(@img_client)
123
- opts = {
124
- host: "img-#{@aliyun_area}.aliyuncs.com",
125
- bucket: @aliyun_bucket
126
- }
127
- @img_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
136
+ def head(path)
137
+ oss_client.get_object_meta(path)
128
138
  end
129
139
 
130
- def oss_upload_client
131
- return @oss_upload_client if defined?(@oss_upload_client)
140
+ private
132
141
 
133
- host = if @aliyun_internal
134
- "oss-#{@aliyun_area}-internal.aliyuncs.com"
135
- else
136
- "oss-#{@aliyun_area}.aliyuncs.com"
137
- end
142
+ def oss_client
143
+ return @oss_client if defined?(@oss_client)
144
+ client = ::Aliyun::OSS::Client.new(endpoint: self.endpoint,
145
+ access_key_id: self.access_key_id, access_key_secret: self.access_key_secret)
146
+ @oss_client = client.get_bucket(self.bucket)
147
+ end
138
148
 
139
- opts = {
140
- host: host,
141
- bucket: @aliyun_bucket
142
- }
149
+ def img_client
150
+ return @img_client if defined?(@img_client)
151
+ client = ::Aliyun::OSS::Client.new(endpoint: self.img_endpoint,
152
+ access_key_id: self.access_key_id, access_key_secret: self.access_key_secret)
153
+ @img_client = client.get_bucket(self.bucket)
154
+ end
143
155
 
144
- @oss_upload_client = ::Aliyun::Oss::Client.new(@aliyun_access_id, @aliyun_access_key, opts)
145
- end
156
+ def oss_upload_client
157
+ return @oss_upload_client if defined?(@oss_upload_client)
158
+ client = ::Aliyun::OSS::Client.new(endpoint: self.upload_endpoint,
159
+ access_key_id: self.access_key_id, access_key_secret: self.access_key_secret)
160
+ @oss_upload_client = client.get_bucket(self.bucket)
161
+ end
146
162
  end
147
163
  end
148
164
  end
@@ -1,19 +1,28 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CarrierWave
2
4
  module Aliyun
3
5
  module Configuration
4
6
  extend ActiveSupport::Concern
5
7
 
6
8
  included do
9
+ # Deprecation
7
10
  add_config :aliyun_access_id
8
11
  add_config :aliyun_access_key
9
- add_config :aliyun_bucket
10
12
  add_config :aliyun_area
13
+ add_config :aliyun_private_read
14
+
15
+ add_config :aliyun_access_key_id
16
+ add_config :aliyun_access_key_secret
17
+ add_config :aliyun_bucket
18
+
19
+ add_config :aliyun_region
11
20
  add_config :aliyun_internal
12
21
  add_config :aliyun_host
13
- add_config :aliyun_private_read
22
+ add_config :aliyun_mode
14
23
 
15
24
  configure do |config|
16
- config.storage_engines[:aliyun] = 'CarrierWave::Storage::Aliyun'
25
+ config.storage_engines[:aliyun] = "CarrierWave::Storage::Aliyun"
17
26
  end
18
27
  end
19
28
  end
@@ -1,5 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CarrierWave
2
4
  module Aliyun
3
- VERSION = '0.9.0'
5
+ VERSION = "1.0.0"
4
6
  end
5
7
  end
@@ -1,6 +1,4 @@
1
- require 'aliyun/oss'
2
- require 'carrierwave'
3
- require 'uri'
1
+ # frozen_string_literal: true
4
2
 
5
3
  module CarrierWave
6
4
  module Storage
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module CarrierWave
2
4
  module Storage
3
5
  class AliyunFile < CarrierWave::SanitizedFile
@@ -10,9 +12,9 @@ module CarrierWave
10
12
  end
11
13
 
12
14
  def read
13
- res = bucket.get(@path)
14
- @headers = res.headers.deep_transform_keys { |k| k.underscore.to_sym rescue key }
15
- res.body
15
+ object, body = bucket.get(@path)
16
+ @headers = object.headers
17
+ body
16
18
  end
17
19
 
18
20
  def delete
@@ -30,7 +32,7 @@ module CarrierWave
30
32
  # :thumb - Aliyun OSS Image Processor option, etc: @100w_200h_95q
31
33
  #
32
34
  def url(opts = {})
33
- if @uploader.aliyun_private_read
35
+ if bucket.mode == :private
34
36
  bucket.private_get_url(@path, opts)
35
37
  else
36
38
  bucket.path_to_url(@path, opts)
@@ -38,7 +40,7 @@ module CarrierWave
38
40
  end
39
41
 
40
42
  def content_type
41
- headers[:content_type].first
43
+ headers[:content_type]
42
44
  end
43
45
 
44
46
  def content_type=(new_content_type)
@@ -55,11 +57,11 @@ module CarrierWave
55
57
 
56
58
  private
57
59
 
58
- def bucket
59
- return @bucket if defined? @bucket
60
+ def bucket
61
+ return @bucket if defined? @bucket
60
62
 
61
- @bucket = CarrierWave::Aliyun::Bucket.new(@uploader)
62
- end
63
+ @bucket = CarrierWave::Aliyun::Bucket.new(@uploader)
64
+ end
63
65
  end
64
66
  end
65
67
  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.9.0
4
+ version: 1.0.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: 2017-11-06 00:00:00.000000000 Z
11
+ date: 2019-07-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: carrierwave
@@ -25,89 +25,19 @@ dependencies:
25
25
  - !ruby/object:Gem::Version
26
26
  version: 0.5.7
27
27
  - !ruby/object:Gem::Dependency
28
- name: aliyun-oss-sdk
28
+ name: aliyun-sdk
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 0.1.6
33
+ version: 0.6.0
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: 0.1.6
41
- - !ruby/object:Gem::Dependency
42
- name: sqlite3
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: activerecord
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: sqlite3-ruby
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- - !ruby/object:Gem::Dependency
84
- name: mini_magick
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - ">="
88
- - !ruby/object:Gem::Version
89
- version: '0'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - ">="
95
- - !ruby/object:Gem::Version
96
- version: '0'
97
- - !ruby/object:Gem::Dependency
98
- name: rspec
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - ">="
102
- - !ruby/object:Gem::Version
103
- version: '0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: '0'
40
+ version: 0.6.0
111
41
  description: Aliyun OSS support for Carrierwave
112
42
  email:
113
43
  - huacnlee@gmail.com
@@ -143,7 +73,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
143
73
  version: '0'
144
74
  requirements: []
145
75
  rubyforge_project:
146
- rubygems_version: 2.6.13
76
+ rubygems_version: 2.7.9
147
77
  signing_key:
148
78
  specification_version: 4
149
79
  summary: Aliyun OSS support for Carrierwave