carrierwave-qiniu 1.2.1 → 1.2.2

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/Rakefile CHANGED
@@ -1,2 +1,6 @@
1
- #!/usr/bin/env rake
2
1
  require "bundler/gem_tasks"
2
+ require "rspec/core/rake_task"
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -0,0 +1,14 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "bundler/setup"
4
+ require "carrierwave-qiniu"
5
+
6
+ # You can add fixtures and/or initialization code here to make experimenting
7
+ # with your gem easier. You can also use a different console, if you like.
8
+
9
+ # (If you use this, don't forget to add pry to your Gemfile!)
10
+ # require "pry"
11
+ # Pry.start
12
+
13
+ require "irb"
14
+ IRB.start(__FILE__)
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env bash
2
+ set -euo pipefail
3
+ IFS=$'\n\t'
4
+ set -vx
5
+
6
+ bundle install
7
+
8
+ # Do any other automated setup that you need to do here
@@ -1,22 +1,31 @@
1
- # -*- encoding: utf-8 -*-
2
- require File.expand_path('../lib/carrierwave-qiniu/version', __FILE__)
1
+ require_relative 'lib/carrierwave/qiniu/version'
3
2
 
4
- Gem::Specification.new do |gem|
5
- gem.authors = ["Marble Wu"]
6
- gem.email = ["huobazi@gmail.com"]
7
- gem.description = %q{Qiniu Storage support for CarrierWave}
8
- gem.summary = %q{Qiniu Storage support for CarrierWave}
9
- gem.homepage = "https://github.com/huobazi/carrierwave-qiniu"
10
- gem.license = "MIT"
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "carrierwave-qiniu"
5
+ spec.version = Carrierwave::Qiniu::VERSION
6
+ spec.authors = ["Marble Wu"]
7
+ spec.email = ["huobazi@gmail.com"]
11
8
 
12
- gem.files = `git ls-files`.split($\)
13
- gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
14
- gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
15
- gem.name = "carrierwave-qiniu"
16
- gem.require_paths = ["lib"]
17
- gem.version = Carrierwave::Qiniu::VERSION
9
+ spec.summary = %q{Qiniu Storage support for CarrierWave}
10
+ spec.description = %q{Qiniu Storage support for CarrierWave}
11
+ spec.homepage = "https://github.com/huobazi/carrierwave-qiniu"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
+
15
+ spec.metadata["homepage_uri"] = spec.homepage
16
+ spec.metadata["source_code_uri"] = "https://github.com/huobazi/carrierwave-qiniu"
17
+ spec.metadata["changelog_uri"] = "https://github.com/huobazi/carrierwave-qiniu/blob/master/CHANGELOG.md.md"
18
18
 
19
+ # Specify which files should be added to the gem when it is released.
20
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
22
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
23
+ end
24
+ spec.bindir = "exe"
25
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
26
+ spec.require_paths = ["lib"]
19
27
 
20
- gem.add_dependency "carrierwave" , ">= 1"
21
- gem.add_dependency "qiniu", "~> 6.9", ">= 6.9.0"
28
+
29
+ spec.add_dependency "carrierwave" , ">= 1"
30
+ spec.add_dependency "qiniu", "~> 6.9", ">= 6.9.0"
22
31
  end
@@ -1,10 +1,15 @@
1
1
  # encoding: utf-8
2
- require "carrierwave-qiniu/version"
3
- require "carrierwave/storage/qiniu"
2
+
3
+ require "carrierwave"
4
+ require "carrierwave/qiniu/version"
4
5
  require "carrierwave/qiniu/configuration"
6
+ require "carrierwave/qiniu/connection"
5
7
  require "carrierwave/qiniu/style"
6
- require "carrierwave/uploader/base"
7
8
  require "carrierwave/qiniu/railtie" if defined?(Rails)
9
+ require "carrierwave/storage/qiniu"
10
+ require "carrierwave/storage/qiniu_file"
11
+ require "qiniu"
12
+ require "qiniu/http"
8
13
 
9
14
  ::CarrierWave.configure do |config|
10
15
  config.storage_engines[:qiniu] = "::CarrierWave::Storage::Qiniu".freeze
@@ -1,5 +1,4 @@
1
1
  # encoding: utf-8
2
-
3
2
  module CarrierWave
4
3
  module Qiniu
5
4
  module Configuration
@@ -38,7 +37,8 @@ module CarrierWave
38
37
  configure do |config|
39
38
  config.qiniu_protocol = 'http'
40
39
  config.qiniu_bucket_private = false
41
- config.qiniu_block_size = 1024*1024*4
40
+ config.qiniu_block_size = 1024 * 1024 * 4
41
+ config.qiniu_async_ops = []
42
42
  config.qiniu_persistent_ops = ''
43
43
  config.qiniu_persistent_notify_url = ''
44
44
  config.qiniu_persistent_pipeline = ''
@@ -46,10 +46,11 @@ module CarrierWave
46
46
  config.qiniu_private_url_expires_in = 3600
47
47
  config.qiniu_callback_url = ''
48
48
  config.qiniu_callback_body = ''
49
- config.qiniu_persistent_notify_url = ''
50
49
  config.qiniu_style_separator = '-'
51
50
  config.qiniu_style_inline = false
52
51
  config.qiniu_delete_after_days = 0
52
+
53
+ # 使用 version 和 七牛的持久化参数需要文件从本地上传,而不能在云端缓存
53
54
  config.cache_storage = :file
54
55
  end
55
56
  end
@@ -0,0 +1,152 @@
1
+ # encoding: utf-8
2
+
3
+
4
+ module CarrierWave
5
+ module Qiniu
6
+ class Connection
7
+ StatusOK = 200
8
+ @@connection_established = false
9
+
10
+ def initialize(options = {})
11
+ @qiniu_bucket_domain = options[:qiniu_bucket_domain]
12
+ @qiniu_bucket = options[:qiniu_bucket]
13
+ @qiniu_bucket_private = options[:qiniu_bucket_private] || false
14
+ @qiniu_access_key = options[:qiniu_access_key]
15
+ @qiniu_secret_key = options[:qiniu_secret_key]
16
+ @qiniu_block_size = options[:qiniu_block_size] || 1024 * 1024 * 4
17
+ @qiniu_protocol = options[:qiniu_protocol] || "http"
18
+ @qiniu_persistent_ops = options[:qiniu_persistent_ops] || options[:qiniu_async_ops] || ""
19
+ @qiniu_persistent_pipeline = options[:qiniu_persistent_pipeline] || ""
20
+ @qiniu_persistent_notify_url = options[:qiniu_persistent_notify_url] || ""
21
+ @qiniu_can_overwrite = options[:qiniu_can_overwrite] || false
22
+ @qiniu_expires_in = options[:qiniu_expires_in] || options[:expires_in] || 3600
23
+ @qiniu_up_host = options[:qiniu_up_host]
24
+ @qiniu_private_url_expires_in = options[:qiniu_private_url_expires_in] || 3600
25
+ @qiniu_callback_url = options[:qiniu_callback_url] || ""
26
+ @qiniu_callback_body = options[:qiniu_callback_body] || ""
27
+ @qiniu_style_separator = options[:qiniu_style_separator] || "-"
28
+ @qiniu_delete_after_days = options[:qiniu_delete_after_days] || 0
29
+ init
30
+ end
31
+
32
+ def upload_file(file_path, key)
33
+ overwrite_file = nil
34
+ overwrite_file = key if @qiniu_can_overwrite
35
+
36
+ put_policy = ::Qiniu::Auth::PutPolicy.new(
37
+ @qiniu_bucket,
38
+ overwrite_file,
39
+ @qiniu_expires_in,
40
+ nil
41
+ )
42
+
43
+ put_policy.callback_url = @qiniu_callback_url if @qiniu_callback_url.present?
44
+ put_policy.callback_body = @qiniu_callback_body if @qiniu_callback_body.present?
45
+ put_policy.persistent_ops = @qiniu_persistent_ops
46
+ put_policy.persistent_notify_url = @qiniu_persistent_notify_url if @qiniu_persistent_notify_url.present?
47
+ put_policy.persistent_pipeline = @qiniu_persistent_pipeline
48
+
49
+ resp_code, resp_body, resp_headers =
50
+ ::Qiniu::Storage.upload_with_put_policy(put_policy, file_path, key, nil, bucket: @qiniu_bucket)
51
+
52
+ raise ::Qiniu::UploadFailedError.new(resp_code, resp_body) if resp_code != StatusOK
53
+
54
+ resp_body
55
+ end
56
+
57
+ #
58
+ # 复制
59
+ # @param origin [String]
60
+ # @param target [String]
61
+ # @return [Boolean]
62
+ #
63
+ def copy(origin, target)
64
+ success = ::Qiniu.copy(
65
+ @qiniu_bucket,
66
+ origin,
67
+ @qiniu_bucket,
68
+ target
69
+ )
70
+ success
71
+ end
72
+
73
+ #
74
+ # 移动
75
+ # @param origin [String]
76
+ # @param target [String]
77
+ # @return [Boolean]
78
+ #
79
+ def move(origin, target)
80
+ success = ::Qiniu.move(
81
+ @qiniu_bucket,
82
+ origin, # 源资源名
83
+ @qiniu_bucket,
84
+ target # 目标资源名
85
+ )
86
+ success
87
+ end
88
+
89
+ #
90
+ # 删除
91
+ # @param key [String]
92
+ # @return [Boolean]
93
+ #
94
+ def delete(key)
95
+ success = ::Qiniu.delete(
96
+ @qiniu_bucket,
97
+ key
98
+ )
99
+ success
100
+ end
101
+
102
+ #
103
+ # 获取文件信息
104
+ # @param key [String]
105
+ # @return [Hash]
106
+ #
107
+ def stat(key)
108
+ info = ::Qiniu.stat(
109
+ @qiniu_bucket, # 存储空间
110
+ key # 资源名
111
+ )
112
+ info
113
+ end
114
+
115
+ def get(path)
116
+ code, result, _ = ::Qiniu::HTTP.get(download_url(path))
117
+ code == 200 ? result : nil
118
+ end
119
+
120
+ def download_url(path)
121
+ encode_path = path_escape(path)
122
+ primitive_url = "#{@qiniu_protocol}://#{@qiniu_bucket_domain}/#{encode_path}"
123
+ @qiniu_bucket_private ? ::Qiniu::Auth.authorize_download_url(primitive_url, :expires_in => @qiniu_private_url_expires_in) : primitive_url
124
+ end
125
+
126
+ private
127
+
128
+ def init
129
+ establish_connection! unless @@connection_established
130
+ @@connection_established = true
131
+ end
132
+
133
+ UserAgent = "CarrierWave-Qiniu/#{Carrierwave::Qiniu::VERSION} (#{RUBY_PLATFORM}) Ruby/#{RUBY_VERSION}".freeze
134
+
135
+ def establish_connection!
136
+ options = {
137
+ :access_key => @qiniu_access_key,
138
+ :secret_key => @qiniu_secret_key,
139
+ :user_agent => UserAgent,
140
+ }
141
+ options[:block_size] = @qiniu_block_size if @qiniu_block_size
142
+ options[:up_host] = @qiniu_up_host if @qiniu_up_host
143
+ ::Qiniu.establish_connection! options
144
+ end
145
+
146
+ #fix chinese file name, same as encodeURIComponent in js but preserve slash '/'
147
+ def path_escape(value)
148
+ ::URI::DEFAULT_PARSER.escape value
149
+ end
150
+ end
151
+ end
152
+ end
@@ -1,6 +1,5 @@
1
1
  module CarrierWave
2
2
  module Qiniu
3
-
4
3
  class Railtie < Rails::Railtie
5
4
  rake_tasks do
6
5
  load 'carrierwave/tasks/qiniu.rake'
@@ -25,17 +25,16 @@ module CarrierWave
25
25
  version = args.first.to_sym
26
26
  if styles.has_key? version
27
27
  options = args.last
28
-
29
28
  # Usage: avatar.url(:version, inline: true)
30
29
  url_options = if options.present? && options.is_a?(Hash) && options[:inline] && styles[version]
31
- { style: styles[version] }
30
+ {style: styles[version]}
32
31
  else
33
32
  # global inline mode
34
33
  if self.class.qiniu_style_inline && styles[version]
35
- { style: styles[version] }
34
+ {style: styles[version]}
36
35
  else
37
36
  # Usage: avatar.url(:version)
38
- { version: version }
37
+ {version: version}
39
38
  end
40
39
  end
41
40
  return file.url(url_options) if url_options
@@ -1,6 +1,5 @@
1
- # encoding: utf-8
2
1
  module Carrierwave
3
2
  module Qiniu
4
- VERSION = "1.2.1"
3
+ VERSION = "1.2.2"
5
4
  end
6
5
  end
@@ -1,288 +1,25 @@
1
1
  # encoding: utf-8
2
- require "carrierwave"
3
- require "qiniu"
4
- require "qiniu/http"
5
-
6
2
  module CarrierWave
7
3
  module Storage
8
4
  class Qiniu < Abstract
9
- class Connection
10
- def initialize(options = {})
11
- @qiniu_bucket_domain = options[:qiniu_bucket_domain]
12
- @qiniu_bucket = options[:qiniu_bucket]
13
- @qiniu_bucket_private = options[:qiniu_bucket_private] || false
14
- @qiniu_access_key = options[:qiniu_access_key]
15
- @qiniu_secret_key = options[:qiniu_secret_key]
16
- @qiniu_block_size = options[:qiniu_block_size] || 1024 * 1024 * 4
17
- @qiniu_protocol = options[:qiniu_protocol] || "http"
18
- @qiniu_persistent_ops = options[:qiniu_persistent_ops] || options[:qiniu_async_ops] || ""
19
- @qiniu_persistent_pipeline = options[:qiniu_persistent_pipeline] || ""
20
- @qiniu_persistent_notify_url = options[:qiniu_persistent_notify_url] || ""
21
- @qiniu_can_overwrite = options[:qiniu_can_overwrite] || false
22
- @qiniu_expires_in = options[:qiniu_expires_in] || options[:expires_in] || 3600
23
- @qiniu_up_host = options[:qiniu_up_host]
24
- @qiniu_private_url_expires_in = options[:qiniu_private_url_expires_in] || 3600
25
- @qiniu_callback_url = options[:qiniu_callback_url] || ""
26
- @qiniu_callback_body = options[:qiniu_callback_body] || ""
27
- @qiniu_style_separator = options[:qiniu_style_separator] || "-"
28
- @qiniu_delete_after_days = options[:qiniu_delete_after_days] || 0
29
- init
30
- end
31
-
32
- def store(file, key)
33
- overwrite_file = nil
34
- overwrite_file = key if @qiniu_can_overwrite
35
-
36
- put_policy = ::Qiniu::Auth::PutPolicy.new(
37
- @qiniu_bucket,
38
- overwrite_file,
39
- @qiniu_expires_in,
40
- nil
41
- )
42
-
43
- put_policy.callback_url = @qiniu_callback_url if @qiniu_callback_url.present?
44
- put_policy.callback_body = @qiniu_callback_body if @qiniu_callback_body.present?
45
- put_policy.persistent_ops = @qiniu_persistent_ops || @qiniu_async_ops
46
- put_policy.persistent_notify_url = @qiniu_persistent_notify_url if @qiniu_persistent_notify_url.present?
47
- put_policy.persistent_pipeline = @persistent_pipeline
48
-
49
- resp_code, resp_body, resp_headers =
50
- ::Qiniu::Storage.upload_with_put_policy(
51
- put_policy,
52
- file.path,
53
- key,
54
- nil,
55
- bucket: @qiniu_bucket,
56
- )
57
-
58
- if resp_code < 200 or resp_code >= 300
59
- raise ::CarrierWave::UploadError, "Upload failed, status code: #{resp_code}, response: #{resp_body}"
60
- end
61
- end
62
-
63
- #
64
- # @note 复制
65
- # @param origin [String]
66
- # @param target [String]
67
- # @return [Boolean]
68
- #
69
- def copy(origin, target)
70
- resp_code, resp_body, _ = ::Qiniu::Storage.copy(@qiniu_bucket, origin, @qiniu_bucket, target)
71
- if resp_code < 200 or resp_code >= 300
72
- raise ::CarrierWave::IntegrityError, "Copy failed, status code: #{resp_code}, response: #{resp_body}"
73
- end
74
- end
75
-
76
- def delete(key)
77
- ::Qiniu::Storage.delete(@qiniu_bucket, key) rescue nil
78
- end
79
-
80
- def stat(key)
81
- code, result, _ = ::Qiniu::Storage.stat(@qiniu_bucket, key)
82
- code == 200 ? result : {}
83
- end
84
-
85
- def get(path)
86
- code, result, _ = ::Qiniu::HTTP.get(download_url(path))
87
- code == 200 ? result : nil
88
- end
89
-
90
- def download_url(path)
91
- encode_path = path_escape(path)
92
- primitive_url = "#{@qiniu_protocol}://#{@qiniu_bucket_domain}/#{encode_path}"
93
- @qiniu_bucket_private ? ::Qiniu::Auth.authorize_download_url(primitive_url, :expires_in => @qiniu_private_url_expires_in) : primitive_url
94
- end
95
-
96
- def clean_cache!(seconds)
97
- code, result, response_headers, s, d = Qiniu::Storage.list(Qiniu::Storage::ListPolicy.new(
98
- @qiniu_bucket,# 存储空间
99
- 1000,# 列举的条目数
100
- '', # 指定前缀
101
- ''# 指定目录分隔符
102
- )).items.each do |file|
103
- # generate_cache_id returns key formated TIMEINT-PID(-COUNTER)-RND
104
- time = file.key.scan(/(\d+)-\d+-\d+(?:-\d+)?/).first.map { |t| t.to_i }
105
- time = Time.at(*time)
106
- delete(file.key) if time < (Time.now.utc - seconds)
107
- end
108
- end
109
-
110
- private
111
-
112
- def init
113
- init_qiniu_rs_connection
114
- end
115
-
116
- UserAgent = "CarrierWave-Qiniu/#{Carrierwave::Qiniu::VERSION} (#{RUBY_PLATFORM}) Ruby/#{RUBY_VERSION}".freeze
117
-
118
- def init_qiniu_rs_connection
119
- options = {
120
- :access_key => @qiniu_access_key,
121
- :secret_key => @qiniu_secret_key,
122
- :user_agent => UserAgent,
123
- }
124
- options[:block_size] = @qiniu_block_size if @qiniu_block_size
125
- options[:up_host] = @qiniu_up_host if @qiniu_up_host
126
-
127
- ::Qiniu.establish_connection! options
128
- end
129
-
130
- #fix chinese file name, same as encodeURIComponent in js but preserve slash '/'
131
- def path_escape(value)
132
- ::URI::DEFAULT_PARSER.escape value
133
- end
134
- end
135
-
136
- class File
137
- def initialize(uploader, path)
138
- @uploader, @path = uploader, path
139
- end
140
-
141
- def path
142
- @path
143
- end
144
-
145
- ##
146
- # Return qiniu URl, maybe with style
147
- #
148
- # === Parameters
149
- # [options (Hash)] optional options hash, 图片样式 { version: :thumb } 或者 { style: "imageView2/1/w/200" }
150
- #
151
- # === Returns
152
- #
153
- # [String]
154
- #
155
- def url(options = {})
156
- path = options.present? ? path_with_style(options) : @path
157
- qiniu_connection.download_url(path)
158
- end
159
-
160
- def store(file)
161
- qiniu_connection.store(file, @path)
162
- end
163
-
164
- def delete
165
- qiniu_connection.delete(@path)
166
- end
167
-
168
- def exists?
169
- return true if qiniu_connection.stat(path).present?
170
- false
171
- end
172
-
173
- #
174
- # @note 从指定路径复制图片
175
- # @param origin_path [String] 原图片路径
176
- # @return [Boolean]
177
- #
178
- def copy_from(origin_path)
179
-
180
- # 先删除目标图片,避免出现0字节文件,无法复制
181
- qiniu_connection.delete(@path)
182
-
183
- qiniu_connection.copy(origin_path, @path)
184
- end
185
-
186
- ##
187
- # Reads the contents of the file from Cloud Files
188
- #
189
- # === Returns
190
- #
191
- # [String] contents of the file
192
- #
193
- def read
194
- qiniu_connection.get(@path) if self.size > 0
195
- end
196
-
197
- def content_type
198
- file_info["mimeType"] || "application/octet-stream".freeze
199
- end
200
-
201
- def size
202
- file_info["fsize"] || 0
203
- end
204
-
205
- def extension
206
- path.split(".").last
207
- end
208
-
209
- def filename
210
- ::File.basename(path)
211
- end
212
-
213
- def clean_cache!(seconds)
214
- qiniu_connection.clean_cache!(seconds)
215
- end
216
-
217
- private
218
-
219
- def qiniu_connection
220
- @qiniu_connection ||= begin
221
- config = {
222
- :qiniu_access_key => @uploader.qiniu_access_key,
223
- :qiniu_secret_key => @uploader.qiniu_secret_key,
224
- :qiniu_bucket => @uploader.qiniu_bucket,
225
- :qiniu_bucket_domain => @uploader.qiniu_bucket_domain,
226
- :qiniu_bucket_private => @uploader.qiniu_bucket_private,
227
- :qiniu_block_size => @uploader.qiniu_block_size,
228
- :qiniu_protocol => @uploader.qiniu_protocol,
229
- :qiniu_expires_in => @uploader.qiniu_expires_in,
230
- :qiniu_up_host => @uploader.qiniu_up_host,
231
- :qiniu_private_url_expires_in => @uploader.qiniu_private_url_expires_in,
232
- :qiniu_callback_url => @uploader.qiniu_callback_url,
233
- :qiniu_callback_body => @uploader.qiniu_callback_body,
234
- :qiniu_persistent_notify_url => @uploader.qiniu_persistent_notify_url,
235
- :qiniu_persistent_pipeline => @uploader.qiniu_persistent_pipeline,
236
- :qiniu_style_separator => @uploader.qiniu_style_separator,
237
- :qiniu_delete_after_days => @uploader.qiniu_delete_after_days,
238
- }
239
-
240
- config[:qiniu_persistent_ops] = Array(@uploader.qiniu_persistent_ops || @uploader.qiniu_async_ops).join(";") rescue ""
241
- config[:qiniu_can_overwrite] = @uploader.try :qiniu_can_overwrite rescue false
242
-
243
- Connection.new config
244
- end
245
- end
246
-
247
- def file_info
248
- @file_info ||= qiniu_connection.stat(@path)
249
- end
250
-
251
- def path_with_style(options)
252
- return @path unless options
253
-
254
- if version = options[:version]
255
- "#{@path}#{@uploader.class.qiniu_style_separator}#{version}"
256
- elsif style = options[:style]
257
- "#{@path}?#{style}"
258
- else
259
- @path
260
- end
261
- end
262
- end
263
-
264
5
  def store!(file)
265
- f = ::CarrierWave::Storage::Qiniu::File.new(uploader, uploader.store_path(uploader.filename))
266
- if file && file.respond_to?(:copy_from_path) and file.copy_from_path
267
- f.copy_from file.copy_from_path
268
- else
269
- f.store(file)
6
+ QiniuFile.new(uploader, uploader.store_path).tap do |qiniu_file|
7
+ qiniu_file.store(file)
270
8
  end
271
- f
272
9
  end
273
10
 
274
11
  def cache!(file)
275
- f = ::CarrierWave::Storage::Qiniu::File.new(uploader, uploader.cache_path(uploader.filename))
276
- f.store(file)
277
- f
12
+ QiniuFile.new(uploader, uploader.cache_path).tap do |qiniu_file|
13
+ qiniu_file.store(file)
14
+ end
278
15
  end
279
16
 
280
17
  def retrieve!(identifier)
281
- ::CarrierWave::Storage::Qiniu::File.new(uploader, uploader.store_path(identifier))
18
+ QiniuFile.new(uploader, uploader.store_path(identifier))
282
19
  end
283
20
 
284
21
  def retrieve_from_cache!(identifier)
285
- ::CarrierWave::Storage::Qiniu::File.new(uploader, uploader.cache_path(identifier))
22
+ QiniuFile.new(uploader, uploader.cache_path(identifier))
286
23
  end
287
24
 
288
25
  ##
@@ -293,9 +30,9 @@ module CarrierWave
293
30
  end
294
31
 
295
32
  def clean_cache!(seconds)
296
- ::CarrierWave::Storage::Qiniu::File.new(uploader, nil).clean_cache!(seconds)
33
+ # 如果缓存目录在云端,建议使用七牛云存储的生命周期设置, 以减少主动 API 调用次数
34
+ raise 'Use Qiniu Object Lifecycle Management to clean the cache'
297
35
  end
298
-
299
36
  end
300
37
  end
301
38
  end