carrierwave-mongoid 0.10.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
2
  SHA1:
3
- metadata.gz: e99261d64cb64243eef199fc22b4599d572c4034
4
- data.tar.gz: 6f33d3f051088d74eade5ccf6eeb34a563272330
3
+ metadata.gz: 04bf7a5d64de29d4e762df968da6ed5aaab22360
4
+ data.tar.gz: 46a9e9b1ab8d7708e909607b9b9d0c71c48b6640
5
5
  SHA512:
6
- metadata.gz: 351fa894f2dfb310e734f47d442c10a919387f3f466602677221cda23a5c7d0bced7cba49fa009a48e7a307a1d56b6d95d02e3b7ef3d046e4077b53c96757ac0
7
- data.tar.gz: 8c7280d676824d24a6071238a6c3319da67ed616f8cd458cc1bd4b78fd7c80016f1e22111283cba0e60f18db539e848ea54a0d85edab2e33333efd32088a2add
6
+ metadata.gz: 65b94440d485d166451a18d624e0ffa2418961fe45dde38c7a23b6fe2684586164b90d2aac2f07070a5c4b96571b9e2513edda55a41cfac1443eb50972ad89c0
7
+ data.tar.gz: f14e0428c3e97646c4a0465e06058077a577bfa016b22d6637ed3e2b5672f283bc934883b2b74d2367ac2fd284fb5fbb2712d8b95c7e2d10da54777ac41b92ac
@@ -7,26 +7,20 @@ notifications:
7
7
  language: ruby
8
8
  cache: bundler
9
9
  rvm:
10
- - 2.1.9
11
- - 2.2.5
12
- - 2.3.1
13
- - jruby-19mode
10
+ - 2.2.8
11
+ - 2.3.5
12
+ - 2.4.2
14
13
 
15
14
  gemfile:
16
15
  - Gemfile
17
- - gemfiles/carrierwave-0.9.gemfile
18
16
  - gemfiles/carrierwave-0.10.gemfile
19
- - gemfiles/carrierwave-master.gemfile
17
+ - gemfiles/carrierwave-0.11.gemfile
18
+ - gemfiles/carrierwave-1.0.gemfile
19
+ - gemfiles/carrierwave-1.1.gemfile
20
20
  - gemfiles/mongoid-3.1.gemfile
21
21
  - gemfiles/mongoid-4.0.gemfile
22
22
  - gemfiles/mongoid-5.0.gemfile
23
+ - gemfiles/mongoid-6.0.gemfile
23
24
 
24
25
  matrix:
25
- allow_failures:
26
- - gemfile: gemfiles/carrierwave-master.gemfile
27
26
  fast_finish: true
28
- include:
29
- - rvm: 2.2.5
30
- gemfile: gemfiles/mongoid-6.0.gemfile
31
- - rvm: 2.3.1
32
- gemfile: gemfiles/mongoid-6.0.gemfile
data/Gemfile CHANGED
@@ -1,8 +1,4 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- group :development, :test do
4
- gem 'json', :platforms => [:jruby]
5
- end
6
-
7
3
  # Specify your gem's dependencies in carrierwave-mongoid.gemspec
8
4
  gemspec
data/README.md CHANGED
@@ -156,18 +156,22 @@ match '/uploads/grid/user/avatar/:id/:filename' => 'gridfs#thumb_avatar', constr
156
156
 
157
157
  ## Version differences
158
158
 
159
- | Version | Notes |
160
- |----------|---------------------------------------------------------------------------------|
161
- | ~> 0.9.0 | ([compare][compare-0.9], [dependencies][deps-0.9]) Carrierwave 0.11 support |
162
- | ~> 0.8.0 | ([compare][compare-0.8], [dependencies][deps-0.8]) Mongoid 5 support, bug fixes |
163
- | ~> 0.7.0 | ([compare][compare-0.7], [dependencies][deps-0.7]) Mongoid 3 & 4, bug fixes |
164
- | ~> 0.6.0 | ([compare][compare-0.6], [dependencies][deps-0.6]) Mongoid 3 & 4, bug fixes |
165
- | ~> 0.5.0 | ([compare][compare-0.5], [dependencies][deps-0.5]) Mongoid::Paranoia support |
166
- | ~> 0.4.0 | ([compare][compare-0.4], [dependencies][deps-0.4]) Carrierwave bump |
167
- | ~> 0.3.0 | ([compare][compare-0.3], [dependencies][deps-0.3]) Mongoid >= 3.0 |
168
- | ~> 0.2.0 | ([compare][compare-0.2], [dependencies][deps-0.2]) Rails >= 3.2, Mongoid ~> 2.0 |
169
- | ~> 0.1.0 | ([compare][compare-0.1], [dependencies][deps-0.1]) Rails <= 3.1 |
170
-
159
+ | Version | Notes |
160
+ |-----------|---------------------------------------------------------------------------------|
161
+ | ~> 1.0.0 | ([compare][compare-1.0], [dependencies][deps-1.0]) Carrierwave 1.x support |
162
+ | ~> 0.10.0 | ([compare][compare-0.10], [dependencies][deps-0.10]) Mongoid 6.0 support |
163
+ | ~> 0.9.0 | ([compare][compare-0.9], [dependencies][deps-0.9]) Carrierwave 0.11 support |
164
+ | ~> 0.8.0 | ([compare][compare-0.8], [dependencies][deps-0.8]) Mongoid 5 support, bug fixes |
165
+ | ~> 0.7.0 | ([compare][compare-0.7], [dependencies][deps-0.7]) Mongoid 3 & 4, bug fixes |
166
+ | ~> 0.6.0 | ([compare][compare-0.6], [dependencies][deps-0.6]) Mongoid 3 & 4, bug fixes |
167
+ | ~> 0.5.0 | ([compare][compare-0.5], [dependencies][deps-0.5]) Mongoid::Paranoia support |
168
+ | ~> 0.4.0 | ([compare][compare-0.4], [dependencies][deps-0.4]) Carrierwave bump |
169
+ | ~> 0.3.0 | ([compare][compare-0.3], [dependencies][deps-0.3]) Mongoid >= 3.0 |
170
+ | ~> 0.2.0 | ([compare][compare-0.2], [dependencies][deps-0.2]) Rails >= 3.2, Mongoid ~> 2.0 |
171
+ | ~> 0.1.0 | ([compare][compare-0.1], [dependencies][deps-0.1]) Rails <= 3.1 |
172
+
173
+ [compare-1.0]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.10.0...v1.0.0
174
+ [compare-0.10]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.9.0...v0.10.0
171
175
  [compare-0.9]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.8.1...v0.9.0
172
176
  [compare-0.8]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.7.1...v0.8.1
173
177
  [compare-0.7]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.6.3...v0.7.1
@@ -178,6 +182,8 @@ match '/uploads/grid/user/avatar/:id/:filename' => 'gridfs#thumb_avatar', constr
178
182
  [compare-0.2]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.1.7...v0.2.2
179
183
  [compare-0.1]: https://github.com/carrierwaveuploader/carrierwave-mongoid/compare/v0.1.1...v0.1.7
180
184
 
185
+ [deps-1.0]: https://rubygems.org/gems/carrierwave-mongoid/versions/1.0.0
186
+ [deps-0.10]: https://rubygems.org/gems/carrierwave-mongoid/versions/0.10.0
181
187
  [deps-0.9]: https://rubygems.org/gems/carrierwave-mongoid/versions/0.9.0
182
188
  [deps-0.8]: https://rubygems.org/gems/carrierwave-mongoid/versions/0.8.1
183
189
  [deps-0.7]: https://rubygems.org/gems/carrierwave-mongoid/versions/0.7.1
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
20
20
  s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
21
21
  s.require_paths = ["lib"]
22
22
 
23
- s.add_dependency "carrierwave", [">= 0.8.0", "< 0.12.0"]
23
+ s.add_dependency "carrierwave", [">= 0.8", "< 1.3"]
24
24
  s.add_dependency "mongoid", [">= 3.0", "< 7.0"]
25
25
  s.add_dependency "mongoid-grid_fs", [">= 1.3", "< 3.0"]
26
26
  s.add_dependency "mime-types", "< 3" if RUBY_VERSION < "2.0" # mime-types 3+ doesn't support ruby 1.9
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "carrierwave", "~> 0.11.0"
4
+
5
+ gemspec path: "../"
@@ -1,5 +1,5 @@
1
1
  source "https://rubygems.org"
2
2
 
3
- gem "carrierwave", "~> 0.9.0"
3
+ gem "carrierwave", "~> 1.0.0"
4
4
 
5
5
  gemspec path: "../"
@@ -0,0 +1,5 @@
1
+ source "https://rubygems.org"
2
+
3
+ gem "carrierwave", "~> 1.1.0"
4
+
5
+ gemspec path: "../"
@@ -1,5 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gem "mongoid", "~> 4.0.0"
4
+ gem "carrierwave", "~> 0.11.0"
4
5
 
5
6
  gemspec path: "../"
@@ -1,5 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gem "mongoid", "~> 5.0.0"
4
+ gem "carrierwave", "~> 0.11.0"
4
5
 
5
6
  gemspec path: "../"
@@ -1,5 +1,6 @@
1
1
  source "https://rubygems.org"
2
2
 
3
3
  gem "mongoid", "~> 6.0.0.beta"
4
+ gem "carrierwave", "~> 0.11.0"
4
5
 
5
6
  gemspec path: "../"
@@ -29,13 +29,24 @@ module CarrierWave
29
29
  after_save :"store_#{column}!"
30
30
  before_save :"write_#{column}_identifier"
31
31
  after_destroy :"remove_#{column}!"
32
- before_update :"store_previous_model_for_#{column}"
32
+ if Gem::Version.new(CarrierWave::VERSION) >= Gem::Version.new("1.0.beta")
33
+ before_update :"store_previous_changes_for_#{column}"
34
+ else
35
+ before_update :"store_previous_model_for_#{column}"
36
+ end
33
37
  after_save :"remove_previously_stored_#{column}"
34
38
 
35
39
  class_eval <<-RUBY, __FILE__, __LINE__+1
36
40
  def #{column}=(new_file)
37
41
  column = _mounter(:#{column}).serialization_column
38
42
 
43
+ # We're using _new_ and _old_ placeholder values to force Mongoid to
44
+ # recognize changes in embedded documents. Before we assign these
45
+ # values, we need to store the original file name in case we need to
46
+ # delete it when document is saved.
47
+ previous_uploader_value = read_uploader(column)
48
+ @_previous_uploader_value_for_#{column} = previous_uploader_value
49
+
39
50
  # mongoid won't upload a new file if there was no file previously.
40
51
  write_uploader(column, '_old_') if self.persisted? && read_uploader(column).nil?
41
52
 
@@ -73,6 +84,29 @@ module CarrierWave
73
84
  changed_attributes["#{column}"] = '_new_'
74
85
  end
75
86
 
87
+ # Since we had to use tricks with _old_ and _new_ values to properly
88
+ # track changes in embedded documents, we need to overwrite this method
89
+ # to remove the original file if it was replaced with a new one that
90
+ # had a different name.
91
+ if Gem::Version.new(CarrierWave::VERSION) >= Gem::Version.new("1.0.beta")
92
+ def remove_previously_stored_#{column}
93
+ before, after = @_previous_changes_for_#{column}
94
+ # Don't delete if the files had the same name
95
+ return if before.nil? && after.nil?
96
+ # Proceed to remove the file, use the original name instead of '_new_'
97
+ before = @_previous_uploader_value_for_#{column} || before
98
+ _mounter(:#{column}).remove_previous([before], [after])
99
+ end
100
+ end
101
+
102
+ # CarrierWave 1.1 references ::ActiveRecord constant directly which
103
+ # will fail in projects without ActiveRecord. We need to overwrite this
104
+ # method to avoid it.
105
+ # See https://github.com/carrierwaveuploader/carrierwave/blob/07dc4d7bd7806ab4b963cf8acbad73d97cdfe74e/lib/carrierwave/mount.rb#L189
106
+ def store_previous_changes_for_#{column}
107
+ @_previous_changes_for_#{column} = changes[_mounter(:#{column}).serialization_column]
108
+ end
109
+
76
110
  def find_previous_model_for_#{column}
77
111
  if self.embedded?
78
112
  if self.respond_to?(:__metadata) # Mongoid >= 4.0.0.beta1
@@ -97,7 +131,12 @@ module CarrierWave
97
131
 
98
132
  self.class.uploaders.each do |column, uploader|
99
133
  if (!only && !except) || (only && only.include?(column.to_s)) || (except && !except.include?(column.to_s))
100
- hash[column.to_s] = _mounter(column.to_sym).uploader.serializable_hash
134
+ if Gem::Version.new(CarrierWave::VERSION) >= Gem::Version.new("1.0.beta")
135
+ next if _mounter(column.to_sym).uploaders.blank?
136
+ hash[column.to_s] = _mounter(column.to_sym).uploaders[0].serializable_hash
137
+ else
138
+ hash[column.to_s] = _mounter(column.to_sym).uploader.serializable_hash
139
+ end
101
140
  end
102
141
  end
103
142
  super(options).merge(hash)
@@ -1,5 +1,5 @@
1
1
  module Carrierwave
2
2
  module Mongoid
3
- VERSION = "0.10.0"
3
+ VERSION = "1.0.0"
4
4
  end
5
5
  end
@@ -117,7 +117,11 @@ describe CarrierWave::Mongoid do
117
117
  @doc.save!
118
118
  @doc.reload
119
119
 
120
- expect(JSON.parse({:data => @doc.image}.to_json)).to eq("data"=>{"image"=>{"url"=>"/uploads/test.jpeg"}})
120
+ if Gem::Version.new(CarrierWave::VERSION) >= Gem::Version.new("1.0.beta")
121
+ expect(JSON.parse({:data => @doc.image}.to_json)).to eq({"data"=>{"url"=>"/uploads/test.jpeg"}})
122
+ else
123
+ expect(JSON.parse({:data => @doc.image}.to_json)).to eq("data"=>{"image" => {"url"=>"/uploads/test.jpeg"}})
124
+ end
121
125
  end
122
126
 
123
127
  it "should respect options[:only] when passed to to_json for the serializable hash" do
@@ -409,7 +413,7 @@ describe CarrierWave::Mongoid do
409
413
  end
410
414
 
411
415
  after do
412
- FileUtils.rm_rf(file_path("uploads"))
416
+ FileUtils.rm_rf(public_path("uploads"))
413
417
  end
414
418
 
415
419
  describe 'normally' do
@@ -422,7 +426,7 @@ describe CarrierWave::Mongoid do
422
426
  end
423
427
 
424
428
  it "should not remove old file if old file had a different path but config is false" do
425
- allow(@uploader).to receive(:remove_previously_stored_files_after_update).and_return(false)
429
+ @doc.image.class.remove_previously_stored_files_after_update = false
426
430
  @doc.image = stub_file('new.jpeg')
427
431
  expect(@doc.save).to be_truthy
428
432
  expect(File.exists?(public_path('uploads/new.jpeg'))).to be_truthy
@@ -482,7 +486,7 @@ describe CarrierWave::Mongoid do
482
486
  end
483
487
 
484
488
  it "should not remove old file if old file had a different path but config is false" do
485
- allow(@embedded_doc.image).to receive(:remove_previously_stored_files_after_update).and_return(false)
489
+ @embedded_doc.image.class.remove_previously_stored_files_after_update = false
486
490
  @embedded_doc.image = stub_file('new.jpeg')
487
491
  expect(@embedded_doc.save).to be_truthy
488
492
  expect(File.exists?(public_path('uploads/new.jpeg'))).to be_truthy
@@ -520,7 +524,7 @@ describe CarrierWave::Mongoid do
520
524
  end
521
525
 
522
526
  it "should not remove old file if old file had a different path but config is false" do
523
- allow(@double_embedded_doc.image).to receive(:remove_previously_stored_files_after_update).and_return(false)
527
+ @double_embedded_doc.image.class.remove_previously_stored_files_after_update = false
524
528
  @double_embedded_doc.image = stub_file('new.jpeg')
525
529
  expect(@double_embedded_doc.save).to be_truthy
526
530
  expect(File.exists?(public_path('uploads/new.jpeg'))).to be_truthy
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: carrierwave-mongoid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 1.0.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonas Nicklas
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2016-08-09 00:00:00.000000000 Z
12
+ date: 2017-10-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: carrierwave
@@ -17,20 +17,20 @@ dependencies:
17
17
  requirements:
18
18
  - - ">="
19
19
  - !ruby/object:Gem::Version
20
- version: 0.8.0
20
+ version: '0.8'
21
21
  - - "<"
22
22
  - !ruby/object:Gem::Version
23
- version: 0.12.0
23
+ version: '1.3'
24
24
  type: :runtime
25
25
  prerelease: false
26
26
  version_requirements: !ruby/object:Gem::Requirement
27
27
  requirements:
28
28
  - - ">="
29
29
  - !ruby/object:Gem::Version
30
- version: 0.8.0
30
+ version: '0.8'
31
31
  - - "<"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.12.0
33
+ version: '1.3'
34
34
  - !ruby/object:Gem::Dependency
35
35
  name: mongoid
36
36
  requirement: !ruby/object:Gem::Requirement
@@ -142,8 +142,9 @@ files:
142
142
  - Rakefile
143
143
  - carrierwave-mongoid.gemspec
144
144
  - gemfiles/carrierwave-0.10.gemfile
145
- - gemfiles/carrierwave-0.9.gemfile
146
- - gemfiles/carrierwave-master.gemfile
145
+ - gemfiles/carrierwave-0.11.gemfile
146
+ - gemfiles/carrierwave-1.0.gemfile
147
+ - gemfiles/carrierwave-1.1.gemfile
147
148
  - gemfiles/mongoid-3.1.gemfile
148
149
  - gemfiles/mongoid-4.0.gemfile
149
150
  - gemfiles/mongoid-5.0.gemfile
@@ -182,7 +183,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
182
183
  version: '0'
183
184
  requirements: []
184
185
  rubyforge_project: carrierwave-mongoid
185
- rubygems_version: 2.6.4
186
+ rubygems_version: 2.6.13
186
187
  signing_key:
187
188
  specification_version: 4
188
189
  summary: Mongoid support for CarrierWave
@@ -1,5 +0,0 @@
1
- source "https://rubygems.org"
2
-
3
- gem "carrierwave", github: "carrierwaveuploader/carrierwave", branch: "master"
4
-
5
- gemspec path: "../"