carrierwave 1.3.1 → 2.0.0.rc

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of carrierwave might be problematic. Click here for more details.

@@ -7,7 +7,7 @@ module CarrierWave
7
7
  extend ActiveSupport::Concern
8
8
 
9
9
  def serializable_hash(options = nil)
10
- {"url" => url}.merge Hash[versions.map { |name, version| [name, { "url" => version.url }] }]
10
+ {"url" => url}.merge Hash[versions.map { |name, version| [name.to_s, { "url" => version.url }] }]
11
11
  end
12
12
 
13
13
  def as_json(options=nil)
@@ -11,7 +11,7 @@ module CarrierWave
11
11
  prepend Module.new {
12
12
  def initialize(*)
13
13
  super
14
- @file, @filename, @cache_id = nil
14
+ @file, @filename, @cache_id, @identifier = nil
15
15
  end
16
16
  }
17
17
  end
@@ -61,7 +61,7 @@ module CarrierWave
61
61
  #
62
62
  def store!(new_file=nil)
63
63
  cache!(new_file) if new_file && ((@cache_id != parent_cache_id) || @cache_id.nil?)
64
- if !cache_only and @file and @cache_id
64
+ if !cache_only && @file && @cache_id
65
65
  with_callbacks(:store, new_file) do
66
66
  new_file = storage.store!(@file)
67
67
  if delete_tmp_file_after_storage
@@ -69,7 +69,8 @@ module CarrierWave
69
69
  cache_storage.delete_dir!(cache_path(nil))
70
70
  end
71
71
  @file = new_file
72
- @cache_id = nil
72
+ @cache_id = @identifier = nil
73
+ @staged = false
73
74
  end
74
75
  end
75
76
  end
@@ -84,6 +85,7 @@ module CarrierWave
84
85
  def retrieve_from_store!(identifier)
85
86
  with_callbacks(:retrieve_from_store, identifier) do
86
87
  @file = storage.retrieve!(identifier)
88
+ @identifier = identifier
87
89
  end
88
90
  end
89
91
 
@@ -15,8 +15,8 @@ module CarrierWave
15
15
  # [String] the location where this file is accessible via a url
16
16
  #
17
17
  def url(options = {})
18
- if file.respond_to?(:url) and not (tmp_url = file.url).blank?
19
- file.method(:url).arity == 0 ? tmp_url : file.url(options)
18
+ if file.respond_to?(:url) && !(tmp_url = file.url).blank?
19
+ file.method(:url).arity.zero? ? tmp_url : file.url(options)
20
20
  elsif file.respond_to?(:path)
21
21
  path = encode_path(file.path.sub(File.expand_path(root), ''))
22
22
 
@@ -220,16 +220,18 @@ module CarrierWave
220
220
  # Recreate versions and reprocess them. This can be used to recreate
221
221
  # versions if their parameters somehow have changed.
222
222
  #
223
- def recreate_versions!(*versions)
223
+ def recreate_versions!(*names)
224
224
  # Some files could possibly not be stored on the local disk. This
225
225
  # doesn't play nicely with processing. Make sure that we're only
226
226
  # processing a cached file
227
227
  #
228
228
  # The call to store! will trigger the necessary callbacks to both
229
229
  # process this version and all sub-versions
230
- if versions.any?
231
- file = sanitized_file if !cached?
232
- store_versions!(file, versions)
230
+
231
+ if names.any?
232
+ set_versions_to_cache_and_store(names)
233
+ store!(file)
234
+ reset_versions_to_cache_and_store
233
235
  else
234
236
  cache! if !cached?
235
237
  store!
@@ -237,6 +239,39 @@ module CarrierWave
237
239
  end
238
240
 
239
241
  private
242
+
243
+ def set_versions_to_cache_and_store(names)
244
+ @versions_to_cache = source_versions_of(names)
245
+ @versions_to_store = active_versions_with_names_in(@versions_to_cache + names)
246
+ end
247
+
248
+ def reset_versions_to_cache_and_store
249
+ @versions_to_cache, @versions_to_store = nil, nil
250
+ end
251
+
252
+ def versions_to_cache
253
+ @versions_to_cache || dependent_versions
254
+ end
255
+
256
+ def versions_to_store
257
+ @versions_to_store || active_versions
258
+ end
259
+
260
+ def source_versions_of(requested_names)
261
+ versions.inject([]) do |sources, (name, uploader)|
262
+ next sources unless requested_names.include?(name)
263
+ next sources unless source_name = uploader.class.version_options[:from_version]
264
+
265
+ sources << [source_name, versions[source_name]]
266
+ end.uniq
267
+ end
268
+
269
+ def active_versions_with_names_in(names)
270
+ active_versions.select do |pretendent_name, uploader|
271
+ names.include?(pretendent_name)
272
+ end
273
+ end
274
+
240
275
  def assign_parent_cache_id(file)
241
276
  active_versions.each do |name, uploader|
242
277
  uploader.parent_cache_id = @cache_id
@@ -270,19 +305,14 @@ module CarrierWave
270
305
  end
271
306
 
272
307
  def cache_versions!(new_file)
273
- dependent_versions.each do |name, v|
308
+ versions_to_cache.each do |name, v|
274
309
  v.send(:cache_id=, @cache_id)
275
310
  v.cache!(new_file)
276
311
  end
277
312
  end
278
313
 
279
- def store_versions!(new_file, versions=nil)
280
- if versions
281
- active = Hash[active_versions]
282
- versions.each { |v| active[v].try(:store!, new_file) } unless active.empty?
283
- else
284
- active_versions.each { |name, v| v.store!(new_file) }
285
- end
314
+ def store_versions!(new_file)
315
+ versions_to_store.each { |name, v| v.store!(new_file) }
286
316
  end
287
317
 
288
318
  def remove_versions!
@@ -11,7 +11,7 @@ module CarrierWave
11
11
  class ProcessingValidator < ::ActiveModel::EachValidator
12
12
 
13
13
  def validate_each(record, attribute, value)
14
- if e = record.__send__("#{attribute}_processing_error")
14
+ record.__send__("#{attribute}_processing_errors").each do |e|
15
15
  message = (e.message == e.class.to_s) ? :carrierwave_processing_error : e.message
16
16
  record.errors.add(attribute, message)
17
17
  end
@@ -21,7 +21,7 @@ module CarrierWave
21
21
  class IntegrityValidator < ::ActiveModel::EachValidator
22
22
 
23
23
  def validate_each(record, attribute, value)
24
- if e = record.__send__("#{attribute}_integrity_error")
24
+ record.__send__("#{attribute}_integrity_errors").each do |e|
25
25
  message = (e.message == e.class.to_s) ? :carrierwave_integrity_error : e.message
26
26
  record.errors.add(attribute, message)
27
27
  end
@@ -31,7 +31,7 @@ module CarrierWave
31
31
  class DownloadValidator < ::ActiveModel::EachValidator
32
32
 
33
33
  def validate_each(record, attribute, value)
34
- if e = record.__send__("#{attribute}_download_error")
34
+ record.__send__("#{attribute}_download_errors").each do |e|
35
35
  message = (e.message == e.class.to_s) ? :carrierwave_download_error : e.message
36
36
  record.errors.add(attribute, message)
37
37
  end
@@ -1,3 +1,3 @@
1
1
  module CarrierWave
2
- VERSION = "1.3.1"
2
+ VERSION = "2.0.0.rc"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.1
4
+ version: 2.0.0.rc
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Nicklas
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-12-29 00:00:00.000000000 Z
11
+ date: 2019-06-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -16,42 +16,84 @@ dependencies:
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 4.0.0
19
+ version: 5.0.0
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
- version: 4.0.0
26
+ version: 5.0.0
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: activemodel
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
31
  - - ">="
32
32
  - !ruby/object:Gem::Version
33
- version: 4.0.0
33
+ version: 5.0.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: 4.0.0
40
+ version: 5.0.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: mime-types
42
+ name: mini_mime
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '1.16'
47
+ version: 0.1.3
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '1.16'
54
+ version: 0.1.3
55
+ - !ruby/object:Gem::Dependency
56
+ name: image_processing
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: '1.1'
62
+ type: :runtime
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: '1.1'
69
+ - !ruby/object:Gem::Dependency
70
+ name: mimemagic
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: 0.3.0
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: 0.3.0
83
+ - !ruby/object:Gem::Dependency
84
+ name: addressable
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '2.6'
90
+ type: :runtime
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '2.6'
55
97
  - !ruby/object:Gem::Dependency
56
98
  name: pg
57
99
  requirement: !ruby/object:Gem::Requirement
@@ -72,14 +114,14 @@ dependencies:
72
114
  requirements:
73
115
  - - ">="
74
116
  - !ruby/object:Gem::Version
75
- version: 4.0.0
117
+ version: 5.0.0
76
118
  type: :development
77
119
  prerelease: false
78
120
  version_requirements: !ruby/object:Gem::Requirement
79
121
  requirements:
80
122
  - - ">="
81
123
  - !ruby/object:Gem::Version
82
- version: 4.0.0
124
+ version: 5.0.0
83
125
  - !ruby/object:Gem::Dependency
84
126
  name: cucumber
85
127
  requirement: !ruby/object:Gem::Requirement
@@ -142,14 +184,14 @@ dependencies:
142
184
  requirements:
143
185
  - - "~>"
144
186
  - !ruby/object:Gem::Version
145
- version: 1.7.1
187
+ version: '1.7'
146
188
  type: :development
147
189
  prerelease: false
148
190
  version_requirements: !ruby/object:Gem::Requirement
149
191
  requirements:
150
192
  - - "~>"
151
193
  - !ruby/object:Gem::Version
152
- version: 1.7.1
194
+ version: '1.7'
153
195
  - !ruby/object:Gem::Dependency
154
196
  name: fog-local
155
197
  requirement: !ruby/object:Gem::Requirement
@@ -196,16 +238,16 @@ dependencies:
196
238
  name: rmagick
197
239
  requirement: !ruby/object:Gem::Requirement
198
240
  requirements:
199
- - - ">="
241
+ - - "~>"
200
242
  - !ruby/object:Gem::Version
201
- version: '0'
243
+ version: '2.16'
202
244
  type: :development
203
245
  prerelease: false
204
246
  version_requirements: !ruby/object:Gem::Requirement
205
247
  requirements:
206
- - - ">="
248
+ - - "~>"
207
249
  - !ruby/object:Gem::Version
208
- version: '0'
250
+ version: '2.16'
209
251
  - !ruby/object:Gem::Dependency
210
252
  name: timecop
211
253
  requirement: !ruby/object:Gem::Requirement
@@ -260,6 +302,8 @@ files:
260
302
  - README.md
261
303
  - lib/carrierwave.rb
262
304
  - lib/carrierwave/compatibility/paperclip.rb
305
+ - lib/carrierwave/downloader/base.rb
306
+ - lib/carrierwave/downloader/remote_file.rb
263
307
  - lib/carrierwave/error.rb
264
308
  - lib/carrierwave/locale/en.yml
265
309
  - lib/carrierwave/mount.rb
@@ -312,12 +356,12 @@ required_ruby_version: !ruby/object:Gem::Requirement
312
356
  requirements:
313
357
  - - ">="
314
358
  - !ruby/object:Gem::Version
315
- version: 2.0.0
359
+ version: 2.2.2
316
360
  required_rubygems_version: !ruby/object:Gem::Requirement
317
361
  requirements:
318
- - - ">="
362
+ - - ">"
319
363
  - !ruby/object:Gem::Version
320
- version: '0'
364
+ version: 1.3.1
321
365
  requirements: []
322
366
  rubyforge_project:
323
367
  rubygems_version: 2.7.8