carrierwave_reupload_fix 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +130 -0
- data/Rakefile +12 -0
- data/carrierwave_reupload_fix.gemspec +28 -0
- data/lib/carrierwave_reupload_fix.rb +48 -0
- data/lib/carrierwave_reupload_fix/extensions_assigner.rb +10 -0
- data/lib/carrierwave_reupload_fix/reupload_fixer.rb +55 -0
- data/lib/carrierwave_reupload_fix/version.rb +3 -0
- data/lib/carrierwave_reupload_fix/versions_recreator.rb +9 -0
- data/spec/carrierwave_reupload_fix/extenions_assigner_spec.rb +13 -0
- data/spec/carrierwave_reupload_fix/reupload_fixer_spec.rb +59 -0
- data/spec/carrierwave_reupload_fix/versions_recreator_spec.rb +13 -0
- data/spec/carrierwave_reupload_fix_spec.rb +73 -0
- data/spec/spec_helper.rb +7 -0
- metadata +148 -0
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Azdaroth
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,130 @@
|
|
1
|
+
# CarrierwaveReuploadFix
|
2
|
+
|
3
|
+
Extension for fixing processing images with carrierwave on reupload when file extension changes.
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'carrierwave_reupload_fix'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install carrierwave_reupload_fix
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Consider a Carrierwave uploader below:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
class SomeUploader < CarrierWave::Uploader::Base
|
25
|
+
|
26
|
+
# some code
|
27
|
+
|
28
|
+
def filename
|
29
|
+
"original.#{model.logo.file.extension}" if original_filename
|
30
|
+
end
|
31
|
+
|
32
|
+
version :thumb do
|
33
|
+
# some processing
|
34
|
+
process :convert => 'png'
|
35
|
+
def full_filename(for_file)
|
36
|
+
"thumb.png"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
end
|
41
|
+
```
|
42
|
+
|
43
|
+
When you upload an image for the first time, e.g. img.jpg, the original file is saved as original.jpg and thumb.png is created, when reuploading file with the same extension, everything works as expected, the uploaded file is again stored as original.jpg and a thumb is created. But if a file with diffrent extension is reuploaded, thumb version is not being processed. This gem solves this problem by overriding original ActiveRecord::Persistence#update method when CarrierwaveReuploadFix module is included to a model. It requires string database column, which stores the extension of the file, so that it knows, when to call #recreate_versions!, e.g. when you have :image column, the :image_extension column is also required.
|
44
|
+
|
45
|
+
To fix images on reupload, add this in your model:
|
46
|
+
|
47
|
+
```ruby
|
48
|
+
fix_on_reupload :image_column, :another_image_column
|
49
|
+
```
|
50
|
+
|
51
|
+
It works also with nested attributes, just add symbols with associations e.g.:
|
52
|
+
|
53
|
+
```ruby
|
54
|
+
nested_fix_on_reupload :photos, :profile
|
55
|
+
```
|
56
|
+
|
57
|
+
And restart your application.
|
58
|
+
|
59
|
+
Example:
|
60
|
+
|
61
|
+
|
62
|
+
```ruby
|
63
|
+
class DummyModel < ActiveRecord::Base
|
64
|
+
|
65
|
+
include CarrierwaveReuploadFix
|
66
|
+
|
67
|
+
has_many :associated_records
|
68
|
+
has_one :profile
|
69
|
+
|
70
|
+
accepts_nested_attributes_for :associated_records
|
71
|
+
accepts_nested_attributes_for :profile
|
72
|
+
|
73
|
+
mount_uploader :logo, LogoUploader
|
74
|
+
mount_uploader :image, ImageUploader
|
75
|
+
|
76
|
+
# add logo_extension and image_extension columns
|
77
|
+
|
78
|
+
fix_on_reupload :logo, :image
|
79
|
+
nested_fix_on_reupload :associated_records, :profile
|
80
|
+
|
81
|
+
end
|
82
|
+
|
83
|
+
class AssociatedRecord < ActiveRecord::Base
|
84
|
+
|
85
|
+
include CarrierwaveReuploadFix
|
86
|
+
|
87
|
+
belongs_to :dummy_model
|
88
|
+
|
89
|
+
# add photo_extension column
|
90
|
+
|
91
|
+
mount_uploader :photo, PhotoUploader
|
92
|
+
fix_on_reupload :photo
|
93
|
+
|
94
|
+
end
|
95
|
+
|
96
|
+
class Profile < ActiveRecord::Base
|
97
|
+
|
98
|
+
include CarrierwaveReuploadFix
|
99
|
+
|
100
|
+
belongs_to :dummy_model
|
101
|
+
|
102
|
+
# add img_extension column
|
103
|
+
|
104
|
+
mount_uploader :img, ImgUploader
|
105
|
+
fix_on_reupload :img
|
106
|
+
|
107
|
+
end
|
108
|
+
```
|
109
|
+
|
110
|
+
Use ActiveRecord::Persistence#update method:
|
111
|
+
|
112
|
+
```ruby
|
113
|
+
DummyModel.find(id).update(some_attributes)
|
114
|
+
```
|
115
|
+
|
116
|
+
Restart your application and enjoy.
|
117
|
+
|
118
|
+
Works with Rails 4. If you are using Rails 3, you should alias update_attributes to update:
|
119
|
+
|
120
|
+
```ruby
|
121
|
+
alias :update :update_attributes
|
122
|
+
```
|
123
|
+
|
124
|
+
## Contributing
|
125
|
+
|
126
|
+
1. Fork it
|
127
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
128
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
129
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
130
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'carrierwave_reupload_fix/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "carrierwave_reupload_fix"
|
8
|
+
spec.version = CarrierwaveReuploadFix::VERSION
|
9
|
+
spec.authors = ["Azdaroth"]
|
10
|
+
spec.email = ["azdaroth@gmail.com"]
|
11
|
+
spec.description = %q{Extension for fixing processing images with carrierwave on reupload
|
12
|
+
when file extension changes}
|
13
|
+
spec.summary = %q{Extension for fixing processing images with carrierwave}
|
14
|
+
spec.homepage = "https://github.com/Azdaroth/carrierwave_reupload_fix"
|
15
|
+
spec.license = "MIT"
|
16
|
+
|
17
|
+
spec.files = `git ls-files`.split($/)
|
18
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
19
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
|
22
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
23
|
+
spec.add_development_dependency "rake"
|
24
|
+
spec.add_development_dependency "rspec"
|
25
|
+
spec.add_dependency "carrierwave"
|
26
|
+
spec.add_dependency("rails", [">= 3.0"])
|
27
|
+
|
28
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require "carrierwave_reupload_fix/version"
|
2
|
+
require "carrierwave_reupload_fix/reupload_fixer"
|
3
|
+
require "carrierwave_reupload_fix/versions_recreator"
|
4
|
+
require "carrierwave_reupload_fix/extensions_assigner"
|
5
|
+
require 'active_support/concern'
|
6
|
+
require 'active_support/core_ext/object'
|
7
|
+
|
8
|
+
module CarrierwaveReuploadFix
|
9
|
+
extend ActiveSupport::Concern
|
10
|
+
|
11
|
+
included do
|
12
|
+
|
13
|
+
def self.carrierwave_fields_marked_for_fix_on_reupload
|
14
|
+
@carrierwave_fields_marked_for_fix_on_reupload ||= []
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.associations_marked_for_fix_in_nested_attributes
|
18
|
+
@associations_marked_for_fix_in_nested_attributes ||= []
|
19
|
+
end
|
20
|
+
|
21
|
+
def self.fix_on_reupload(*marked_fields)
|
22
|
+
fields = carrierwave_fields_marked_for_fix_on_reupload
|
23
|
+
marked_fields.each { |field| fields << field }
|
24
|
+
@carrierwave_fields_marked_for_fix_on_reupload = fields
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.nested_fix_on_reupload(*associations)
|
28
|
+
assocs = associations_marked_for_fix_in_nested_attributes
|
29
|
+
associations.each { |assoc| assocs << assoc }
|
30
|
+
@associations_marked_for_fix_in_nested_attributes = assocs
|
31
|
+
end
|
32
|
+
|
33
|
+
def carrierwave_fields_marked_for_fix_on_reupload
|
34
|
+
self.class.carrierwave_fields_marked_for_fix_on_reupload
|
35
|
+
end
|
36
|
+
|
37
|
+
def associations_marked_for_fix_in_nested_attributes
|
38
|
+
self.class.associations_marked_for_fix_in_nested_attributes
|
39
|
+
end
|
40
|
+
|
41
|
+
alias :original_update :update
|
42
|
+
|
43
|
+
def update(attributes)
|
44
|
+
original_update(attributes)
|
45
|
+
ReuploadFixer.new(self, VersionsRecreator.new, ExtensionsAssigner.new).fix
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,55 @@
|
|
1
|
+
module CarrierwaveReuploadFix
|
2
|
+
class ReuploadFixer
|
3
|
+
|
4
|
+
attr_reader :model_instance, :versions_recreator, :extension_assigner
|
5
|
+
def initialize(model_instance, versions_recreator, extension_assigner)
|
6
|
+
@model_instance = model_instance
|
7
|
+
@versions_recreator = versions_recreator
|
8
|
+
@extension_assigner = extension_assigner
|
9
|
+
end
|
10
|
+
|
11
|
+
def fix
|
12
|
+
fix_carrierwave_processing(model_instance)
|
13
|
+
handle_associations
|
14
|
+
end
|
15
|
+
|
16
|
+
def handle_associations
|
17
|
+
model_instance.associations_marked_for_fix_in_nested_attributes.each do |assoc|
|
18
|
+
Array(model_instance.send(assoc)).each do |record|
|
19
|
+
fix_carrierwave_processing(record) if record.carrierwave_fields_marked_for_fix_on_reupload.present?
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def fix_carrierwave_processing(obj)
|
25
|
+
fix_carrierwave(obj)
|
26
|
+
assign_extensions(obj)
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def fix_carrierwave(obj)
|
32
|
+
obj.carrierwave_fields_marked_for_fix_on_reupload.each do |field|
|
33
|
+
versions_recreator.recreate!(obj, field) if extension_changed?(obj, field)
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
def assign_extensions(obj)
|
38
|
+
obj.carrierwave_fields_marked_for_fix_on_reupload.each do |field|
|
39
|
+
current_extension = get_current_extension(obj, field)
|
40
|
+
extension_assigner.assign(obj, field, current_extension) unless current_extension.nil?
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
def extension_changed?(obj, field)
|
45
|
+
previous_extension = obj.send("#{field}_extension".to_sym)
|
46
|
+
current_extension = get_current_extension(obj, field)
|
47
|
+
current_extension.present? and current_extension != previous_extension
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_current_extension(obj, field)
|
51
|
+
obj.send(field).to_s.split('.').last
|
52
|
+
end
|
53
|
+
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CarrierwaveReuploadFix::ExtensionsAssigner do
|
4
|
+
|
5
|
+
it "assigns extenions and saves record" do
|
6
|
+
obj = double(:obj)
|
7
|
+
assigner = CarrierwaveReuploadFix::ExtensionsAssigner.new
|
8
|
+
obj.should_receive("image_extension=").with("jpg") { obj }
|
9
|
+
obj.should_receive(:save)
|
10
|
+
assigner.assign(obj, :image, "jpg")
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,59 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe CarrierwaveReuploadFix::ReuploadFixer do
|
4
|
+
|
5
|
+
let(:associated_obj) { double(:associated_obj,
|
6
|
+
image: "image.jpg",
|
7
|
+
image_extension: "pdf",
|
8
|
+
carrierwave_fields_marked_for_fix_on_reupload: [:image] ) }
|
9
|
+
|
10
|
+
let(:associated_records) { [associated_obj] }
|
11
|
+
|
12
|
+
let(:model_instance) { double(:model_instance,
|
13
|
+
logo: "logo.jpg",
|
14
|
+
logo_extension: "pdf",
|
15
|
+
photos: associated_records,
|
16
|
+
carrierwave_fields_marked_for_fix_on_reupload: [:logo],
|
17
|
+
associations_marked_for_fix_in_nested_attributes: [] ) }
|
18
|
+
|
19
|
+
let(:versions_recreator) { double(:versions_recreator) }
|
20
|
+
let(:extensions_assigner) { double(:extensions_assigner) }
|
21
|
+
|
22
|
+
describe "no associations passed" do
|
23
|
+
|
24
|
+
context "extensions changed" do
|
25
|
+
it "recreates versions and assigns new extensions" do
|
26
|
+
fixer = CarrierwaveReuploadFix::ReuploadFixer.new(model_instance,
|
27
|
+
versions_recreator, extensions_assigner)
|
28
|
+
versions_recreator.should_receive(:recreate!).with(model_instance, :logo) { true }
|
29
|
+
extensions_assigner.should_receive(:assign).with(model_instance, :logo, "jpg")
|
30
|
+
fixer.fix
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
34
|
+
context "has not changed" do
|
35
|
+
it "does not recreate_versions but assign extensions" do
|
36
|
+
fixer = CarrierwaveReuploadFix::ReuploadFixer.new(model_instance,
|
37
|
+
versions_recreator, extensions_assigner)
|
38
|
+
model_instance.stub(:logo_extension) { "jpg" }
|
39
|
+
versions_recreator.should_not_receive(:recreate!).with(model_instance, :logo)
|
40
|
+
extensions_assigner.should_receive(:assign).with(model_instance, :logo, "jpg")
|
41
|
+
fixer.fix
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
context "associations passed" do
|
49
|
+
it "recreates versions and assigns extensions on associated objects" do
|
50
|
+
fixer = CarrierwaveReuploadFix::ReuploadFixer.new(model_instance,
|
51
|
+
versions_recreator, extensions_assigner)
|
52
|
+
model_instance.stub(:associations_marked_for_fix_in_nested_attributes) { [:photos] }
|
53
|
+
versions_recreator.should_receive(:recreate!).with(associated_obj, :image)
|
54
|
+
extensions_assigner.should_receive(:assign).with(associated_obj, :image, "jpg") { true }
|
55
|
+
fixer.handle_associations
|
56
|
+
end
|
57
|
+
end
|
58
|
+
|
59
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe CarrierwaveReuploadFix::VersionsRecreator do
|
5
|
+
|
6
|
+
it "calls recreate_version! on specified file" do
|
7
|
+
recreator = CarrierwaveReuploadFix::VersionsRecreator.new
|
8
|
+
obj = double(:obj, image: double)
|
9
|
+
obj.image.should_receive(:recreate_versions!)
|
10
|
+
recreator.recreate!(obj, :image)
|
11
|
+
end
|
12
|
+
|
13
|
+
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
$: << File.join(File.dirname(__FILE__), "/../lib")
|
2
|
+
require 'spec_helper'
|
3
|
+
require_relative '../lib/carrierwave_reupload_fix'
|
4
|
+
|
5
|
+
|
6
|
+
class DummyMainModel
|
7
|
+
def update(args) ; end
|
8
|
+
|
9
|
+
include CarrierwaveReuploadFix
|
10
|
+
|
11
|
+
def offers
|
12
|
+
[DummyAssociatedModel.new, DummyAssociatedModel.new]
|
13
|
+
end
|
14
|
+
|
15
|
+
def logo; end
|
16
|
+
|
17
|
+
def image; end
|
18
|
+
|
19
|
+
fix_on_reupload :logo, :image
|
20
|
+
nested_fix_on_reupload :offers
|
21
|
+
|
22
|
+
end
|
23
|
+
|
24
|
+
class DummyAssociatedModel
|
25
|
+
|
26
|
+
def update(args) ; end
|
27
|
+
|
28
|
+
include CarrierwaveReuploadFix
|
29
|
+
|
30
|
+
def photo; end
|
31
|
+
|
32
|
+
fix_on_reupload :photo
|
33
|
+
end
|
34
|
+
|
35
|
+
|
36
|
+
describe CarrierwaveReuploadFix do
|
37
|
+
|
38
|
+
it "adds fields to be fixed to class instance variables" do
|
39
|
+
expect(DummyMainModel.carrierwave_fields_marked_for_fix_on_reupload).to eq [:logo, :image]
|
40
|
+
end
|
41
|
+
|
42
|
+
it "adds associations to be fixed" do
|
43
|
+
expect(DummyMainModel.associations_marked_for_fix_in_nested_attributes).to eq [:offers]
|
44
|
+
end
|
45
|
+
|
46
|
+
specify "instances of models know about fields to be fixed" do
|
47
|
+
expect(DummyMainModel.new.carrierwave_fields_marked_for_fix_on_reupload).to eq [:logo, :image]
|
48
|
+
end
|
49
|
+
|
50
|
+
specify "instances of models know about associations to be fixed" do
|
51
|
+
expect(DummyMainModel.new.associations_marked_for_fix_in_nested_attributes).to eq [:offers]
|
52
|
+
end
|
53
|
+
|
54
|
+
it "aliases update to original_update" do
|
55
|
+
expect(DummyMainModel.new).to respond_to :original_update
|
56
|
+
expect(DummyMainModel.new).to respond_to :update
|
57
|
+
end
|
58
|
+
|
59
|
+
it "calls fixer on update" do
|
60
|
+
model_instance = DummyMainModel.new
|
61
|
+
fixer = double(:fixer)
|
62
|
+
recreator = double(:recreator)
|
63
|
+
assigner = double(:assigner)
|
64
|
+
CarrierwaveReuploadFix::VersionsRecreator.stub(:new) { recreator }
|
65
|
+
CarrierwaveReuploadFix::ExtensionsAssigner.stub(:new) { assigner }
|
66
|
+
CarrierwaveReuploadFix::ReuploadFixer.should_receive(:new).with(model_instance,
|
67
|
+
recreator, assigner) { fixer }
|
68
|
+
fixer.should_receive(:fix)
|
69
|
+
model_instance.update({})
|
70
|
+
end
|
71
|
+
|
72
|
+
end
|
73
|
+
|
data/spec/spec_helper.rb
ADDED
metadata
ADDED
@@ -0,0 +1,148 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: carrierwave_reupload_fix
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
prerelease:
|
6
|
+
platform: ruby
|
7
|
+
authors:
|
8
|
+
- Azdaroth
|
9
|
+
autorequire:
|
10
|
+
bindir: bin
|
11
|
+
cert_chain: []
|
12
|
+
date: 2013-07-09 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
15
|
+
name: bundler
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ~>
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '1.3'
|
22
|
+
type: :development
|
23
|
+
prerelease: false
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ~>
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '1.3'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: rake
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
- !ruby/object:Gem::Dependency
|
47
|
+
name: rspec
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
49
|
+
none: false
|
50
|
+
requirements:
|
51
|
+
- - ! '>='
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: '0'
|
54
|
+
type: :development
|
55
|
+
prerelease: false
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: carrierwave
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
78
|
+
- !ruby/object:Gem::Dependency
|
79
|
+
name: rails
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
81
|
+
none: false
|
82
|
+
requirements:
|
83
|
+
- - ! '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '3.0'
|
86
|
+
type: :runtime
|
87
|
+
prerelease: false
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '3.0'
|
94
|
+
description: ! "Extension for fixing processing images with carrierwave on reupload\n
|
95
|
+
\ when file extension changes"
|
96
|
+
email:
|
97
|
+
- azdaroth@gmail.com
|
98
|
+
executables: []
|
99
|
+
extensions: []
|
100
|
+
extra_rdoc_files: []
|
101
|
+
files:
|
102
|
+
- .gitignore
|
103
|
+
- Gemfile
|
104
|
+
- LICENSE.txt
|
105
|
+
- README.md
|
106
|
+
- Rakefile
|
107
|
+
- carrierwave_reupload_fix.gemspec
|
108
|
+
- lib/carrierwave_reupload_fix.rb
|
109
|
+
- lib/carrierwave_reupload_fix/extensions_assigner.rb
|
110
|
+
- lib/carrierwave_reupload_fix/reupload_fixer.rb
|
111
|
+
- lib/carrierwave_reupload_fix/version.rb
|
112
|
+
- lib/carrierwave_reupload_fix/versions_recreator.rb
|
113
|
+
- spec/carrierwave_reupload_fix/extenions_assigner_spec.rb
|
114
|
+
- spec/carrierwave_reupload_fix/reupload_fixer_spec.rb
|
115
|
+
- spec/carrierwave_reupload_fix/versions_recreator_spec.rb
|
116
|
+
- spec/carrierwave_reupload_fix_spec.rb
|
117
|
+
- spec/spec_helper.rb
|
118
|
+
homepage: https://github.com/Azdaroth/carrierwave_reupload_fix
|
119
|
+
licenses:
|
120
|
+
- MIT
|
121
|
+
post_install_message:
|
122
|
+
rdoc_options: []
|
123
|
+
require_paths:
|
124
|
+
- lib
|
125
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
126
|
+
none: false
|
127
|
+
requirements:
|
128
|
+
- - ! '>='
|
129
|
+
- !ruby/object:Gem::Version
|
130
|
+
version: '0'
|
131
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
132
|
+
none: false
|
133
|
+
requirements:
|
134
|
+
- - ! '>='
|
135
|
+
- !ruby/object:Gem::Version
|
136
|
+
version: '0'
|
137
|
+
requirements: []
|
138
|
+
rubyforge_project:
|
139
|
+
rubygems_version: 1.8.25
|
140
|
+
signing_key:
|
141
|
+
specification_version: 3
|
142
|
+
summary: Extension for fixing processing images with carrierwave
|
143
|
+
test_files:
|
144
|
+
- spec/carrierwave_reupload_fix/extenions_assigner_spec.rb
|
145
|
+
- spec/carrierwave_reupload_fix/reupload_fixer_spec.rb
|
146
|
+
- spec/carrierwave_reupload_fix/versions_recreator_spec.rb
|
147
|
+
- spec/carrierwave_reupload_fix_spec.rb
|
148
|
+
- spec/spec_helper.rb
|