copy_carrierwave_file 1.0.1
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.
- checksums.yaml +7 -0
- data/.gitignore +20 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +56 -0
- data/Rakefile +11 -0
- data/copy_carrierwave_file.gemspec +28 -0
- data/lib/copy_carrierwave_file.rb +8 -0
- data/lib/copy_carrierwave_file/copy_file_service.rb +68 -0
- data/lib/copy_carrierwave_file/version.rb +3 -0
- data/test/copy_carrierwave_file_test.rb +16 -0
- data/test/copy_file_service_wrong_initialization_test.rb +39 -0
- data/test/copy_local_storage_file_test.rb +31 -0
- data/test/copy_remote_storage_file_test.rb +28 -0
- data/test/fixtures/uploads/test_file1.txt +1 -0
- data/test/fixtures/uploads/test_file2.txt +1 -0
- data/test/support/upload_file_macros.rb +32 -0
- data/test/test_helper.rb +40 -0
- metadata +168 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: caa9347179a5352c6a262d62a95ca3b06de71de2
|
4
|
+
data.tar.gz: c8aa2af194cd3048d0163dd6274393e814b6d8f5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: fd24f51d96cece94dc37113f5e6aac680b32ad3b9824dc7fd778f0573630f291e84b8deb92abe4d2d846451385638adb4ac4e8473d72368198a0d5d2b1c562e4
|
7
|
+
data.tar.gz: 0231a474da06baad11cc7da34f66a06403424ad1ffc7286de9b67a645a7a2d51f5c3866fd351245651417eccf4525fc667b9ecc621e0212de7e9a90c52578c42
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2013 Tomas Valent
|
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,56 @@
|
|
1
|
+
# CopyCarrierwaveFile
|
2
|
+
|
3
|
+
|
4
|
+
Simple gem for copying [CarrierWave](https://github.com/carrierwaveuploader/carrierwave) files between resources.
|
5
|
+
It's solving issues with local and remote storage discussed
|
6
|
+
[here](http://stackoverflow.com/questions/9921085/whats-the-proper-way-to-copy-a-carrierwave-file-from-one-record-to-another)
|
7
|
+
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Add this line to your application's Gemfile:
|
12
|
+
|
13
|
+
gem 'copy_carrierwave_file', github: 'equivalent/copy_carrierwave_file'
|
14
|
+
|
15
|
+
And then execute:
|
16
|
+
|
17
|
+
$ bundle
|
18
|
+
|
19
|
+
|
20
|
+
## Usage
|
21
|
+
|
22
|
+
You can use service class directly:
|
23
|
+
|
24
|
+
original_resource = User.last
|
25
|
+
new_resource = User.new
|
26
|
+
|
27
|
+
CopyCarrierwaveFile::CopyFileService.new(original_resource, new_resource, :avatar).set_file
|
28
|
+
# :avatar represents mount point
|
29
|
+
|
30
|
+
new_resource.save
|
31
|
+
|
32
|
+
or you can include `CopyCarrierwaveFile` module and call `copy_carrierwave_file` :
|
33
|
+
|
34
|
+
|
35
|
+
class Document
|
36
|
+
include CopyCarrierwaveFile
|
37
|
+
mount_uplader :content_file, MyUploader
|
38
|
+
|
39
|
+
def duplicate_file(original)
|
40
|
+
copy_carrierwave_file(original, self, :content_file)
|
41
|
+
self.save!
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
document = Document.new
|
46
|
+
document.duplicate_file(Document.last)
|
47
|
+
|
48
|
+
Functionality is the same
|
49
|
+
|
50
|
+
## Contributing
|
51
|
+
|
52
|
+
1. Fork it
|
53
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
54
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
55
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
56
|
+
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 'copy_carrierwave_file/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "copy_carrierwave_file"
|
8
|
+
spec.version = CopyCarrierwaveFile::VERSION
|
9
|
+
spec.authors = ["Tomas Valent"]
|
10
|
+
spec.email = ["equivalent@eq8.eu"]
|
11
|
+
spec.description = %q{Gems main responsibility is to provide service for copying Carrierwave files between records }
|
12
|
+
spec.summary = %q{Copy Carrierwave files between records}
|
13
|
+
spec.homepage = "http://eq8.eu"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_dependency "rake"
|
22
|
+
spec.add_dependency "carrierwave", "~> 0.9"
|
23
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
+
spec.add_development_dependency "activerecord", "~> 3.2"
|
25
|
+
spec.add_development_dependency "minitest", "~> 5"
|
26
|
+
spec.add_development_dependency "mocha", "~> 0.14"
|
27
|
+
spec.add_development_dependency "sqlite3"
|
28
|
+
end
|
@@ -0,0 +1,8 @@
|
|
1
|
+
require "copy_carrierwave_file/version"
|
2
|
+
require "copy_carrierwave_file/copy_file_service"
|
3
|
+
|
4
|
+
module CopyCarrierwaveFile
|
5
|
+
def copy_carrierwave_file(original_resource, destination_resource, mount_point)
|
6
|
+
CopyCarrierwaveFile::CopyFileService.new(original_resource, destination_resource, mount_point).set_file
|
7
|
+
end
|
8
|
+
end
|
@@ -0,0 +1,68 @@
|
|
1
|
+
module CopyCarrierwaveFile
|
2
|
+
class CopyFileService
|
3
|
+
attr_reader :original_resource, :resource, :mount_point
|
4
|
+
|
5
|
+
def initialize(original_resource, resource, mount_point)
|
6
|
+
@mount_point = mount_point.to_sym
|
7
|
+
|
8
|
+
raise "#{original_resource} is not a resource with uploader" unless original_resource.class.respond_to? :uploaders
|
9
|
+
raise "#{original_resource} doesn't have mount point #{mount_point}" unless original_resource.class.uploaders[@mount_point]
|
10
|
+
|
11
|
+
raise "#{resource} is not a resource with uploader" unless resource.class.respond_to? :uploaders
|
12
|
+
raise "#{resource} doesn't have mount point #{mount_point}" unless resource.class.uploaders[@mount_point]
|
13
|
+
|
14
|
+
@original_resource = original_resource
|
15
|
+
@resource = resource
|
16
|
+
end
|
17
|
+
|
18
|
+
# Set file from original resource
|
19
|
+
#
|
20
|
+
# Founded originally at http://bit.ly/ROGtPR
|
21
|
+
#
|
22
|
+
def set_file
|
23
|
+
if have_file?
|
24
|
+
begin
|
25
|
+
set_file_for_remote_storage
|
26
|
+
rescue Errno::ENOENT
|
27
|
+
set_file_for_local_storage
|
28
|
+
rescue NoMethodError
|
29
|
+
raise "Original resource has no File"
|
30
|
+
end
|
31
|
+
else
|
32
|
+
raise "Original resource has no File"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def have_file?
|
37
|
+
original_resource_mounter.file.present?
|
38
|
+
end
|
39
|
+
|
40
|
+
# Set file when you use remote storage for your files (like S3)
|
41
|
+
#
|
42
|
+
# will try to fetch full remote path of a file with `open-uri`
|
43
|
+
#
|
44
|
+
# If you use local storage, `doc.avatar.url` will return relative path, therefor
|
45
|
+
# this will fail with Errno::ENOENT
|
46
|
+
#
|
47
|
+
# If you have issues with code try alternative code:
|
48
|
+
#
|
49
|
+
# resource.remote_file_url = original_resource.avatar.url
|
50
|
+
#
|
51
|
+
def set_file_for_remote_storage
|
52
|
+
set_resource_mounter_file open(original_resource_mounter.url)
|
53
|
+
end
|
54
|
+
|
55
|
+
def set_file_for_local_storage
|
56
|
+
set_resource_mounter_file File.open(original_resource_mounter.file.file)
|
57
|
+
end
|
58
|
+
|
59
|
+
def original_resource_mounter
|
60
|
+
original_resource.send(mount_point)
|
61
|
+
end
|
62
|
+
|
63
|
+
def set_resource_mounter_file(file)
|
64
|
+
resource.send( :"#{mount_point.to_s}=", file)
|
65
|
+
end
|
66
|
+
|
67
|
+
end
|
68
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
describe 'CopyCarrierwaveFile', 'included module' do
|
3
|
+
|
4
|
+
before do
|
5
|
+
Document.send :include, CopyCarrierwaveFile
|
6
|
+
end
|
7
|
+
|
8
|
+
it do
|
9
|
+
file_service_object = mock()
|
10
|
+
file_service_object.expects(:set_file).at_least_once.returns(true)
|
11
|
+
|
12
|
+
CopyCarrierwaveFile::CopyFileService.expects(:new).with('one', 'two', :file).returns(file_service_object)
|
13
|
+
Document.new.copy_carrierwave_file('one','two', :file)
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
|
4
|
+
class User
|
5
|
+
# has no uploader
|
6
|
+
end
|
7
|
+
|
8
|
+
describe CopyCarrierwaveFile::CopyFileService, 'initialization' do
|
9
|
+
|
10
|
+
context 'with resources with uploader and right mount point' do
|
11
|
+
it "should not raise an error" do
|
12
|
+
CopyCarrierwaveFile::CopyFileService.new(Document.new, Document.new, :file)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
context 'when original resources without uploader' do
|
17
|
+
it "should raise an error" do
|
18
|
+
proc{ CopyCarrierwaveFile::CopyFileService.new(User.new, Document.new, :file) }.
|
19
|
+
must_raise RuntimeError
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
|
24
|
+
context 'when resources without uploader' do
|
25
|
+
it "should raise an error" do
|
26
|
+
proc{ CopyCarrierwaveFile::CopyFileService.new(Document.new, User.new, :file) }.
|
27
|
+
must_raise RuntimeError
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
context 'with resources with uploader but wrong mount point' do
|
32
|
+
it do
|
33
|
+
proc{ CopyCarrierwaveFile::CopyFileService.new(Document.new, Document.new, :foo) }.
|
34
|
+
must_raise RuntimeError
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
|
39
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe 'CopyCarrierwaveFile', 'copying local storage file' do
|
4
|
+
include UploadedFileMacros
|
5
|
+
|
6
|
+
def remove_uploaded_test_files
|
7
|
+
FileUtils.rm_rf(Dir.glob(TEST_DIR+"/tmp/uploads/*"))
|
8
|
+
end
|
9
|
+
|
10
|
+
let(:document) { Document.new }
|
11
|
+
let(:copy_service){ CopyCarrierwaveFile::CopyFileService.new(original_document, document, :file)}
|
12
|
+
let(:original_document) do
|
13
|
+
doc = Document.new
|
14
|
+
doc.file = test_file1
|
15
|
+
doc.save
|
16
|
+
doc
|
17
|
+
end
|
18
|
+
|
19
|
+
after(:all){ remove_uploaded_test_files }
|
20
|
+
|
21
|
+
subject{ FileUtils.identical?(original_document.file.file.file, document.file.file.file) }
|
22
|
+
|
23
|
+
before do
|
24
|
+
copy_service.set_file
|
25
|
+
document.save
|
26
|
+
end
|
27
|
+
|
28
|
+
it 'Document file must be identical to Original document file' do
|
29
|
+
subject.must_equal true
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
describe CopyCarrierwaveFile::CopyFileService, 'copying remote storage file' do
|
4
|
+
include UploadedFileMacros
|
5
|
+
|
6
|
+
let(:document) { Document.new }
|
7
|
+
let(:copy_service){ CopyCarrierwaveFile::CopyFileService.new(original_document, document, :file)}
|
8
|
+
let(:original_document){ Document.create }
|
9
|
+
|
10
|
+
after(:all){ remove_uploaded_test_files }
|
11
|
+
|
12
|
+
subject{ FileUtils.identical?(test_file1, document.file.file.file) }
|
13
|
+
|
14
|
+
|
15
|
+
it 'Document file must be identical to Original document file' do
|
16
|
+
mock_file = mock()
|
17
|
+
mock_file.expects(:file).at_least_once.returns('a_file_mock')
|
18
|
+
mock_file.expects(:url).at_least_once.returns('http://foo')
|
19
|
+
|
20
|
+
original_document.stubs(:file).returns(mock_file)
|
21
|
+
CopyCarrierwaveFile::CopyFileService.any_instance.expects(:open).with('http://foo').returns(test_file1)
|
22
|
+
|
23
|
+
copy_service.set_file
|
24
|
+
document.save
|
25
|
+
|
26
|
+
subject.must_equal true
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1 @@
|
|
1
|
+
this is test file
|
@@ -0,0 +1 @@
|
|
1
|
+
this is different test file
|
@@ -0,0 +1,32 @@
|
|
1
|
+
require 'carrierwave/test/matchers'
|
2
|
+
|
3
|
+
# UploadedFileMacros
|
4
|
+
#
|
5
|
+
# set of file upload helpers for CarrierWave
|
6
|
+
#
|
7
|
+
# If you want to lern more read my scrap on CarrierWave
|
8
|
+
# https://github.com/equivalent/scrapbook2/blob/master/carrierwave.md
|
9
|
+
#
|
10
|
+
module UploadedFileMacros
|
11
|
+
|
12
|
+
def uploaded_test_file1
|
13
|
+
ActionDispatch::Http::UploadedFile.new({
|
14
|
+
:filename => 'test_file1',
|
15
|
+
:content_type => 'txt',
|
16
|
+
:tempfile => test_file1
|
17
|
+
})
|
18
|
+
end
|
19
|
+
|
20
|
+
# For comparing the upladed file match
|
21
|
+
#
|
22
|
+
# document.file.file.file.should be_identical_to file_for_upload
|
23
|
+
#
|
24
|
+
def test_file1
|
25
|
+
File.new("#{TEST_DIR}/fixtures/uploads/test_file1.txt")
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_file2
|
29
|
+
File.new("#{TEST_DIR}/fixtures/uploads/test_file2.txt")
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
data/test/test_helper.rb
ADDED
@@ -0,0 +1,40 @@
|
|
1
|
+
require 'bundler/setup'
|
2
|
+
require 'copy_carrierwave_file'
|
3
|
+
require 'minitest/autorun'
|
4
|
+
require 'mocha/setup'
|
5
|
+
require 'active_record'
|
6
|
+
require 'carrierwave'
|
7
|
+
require 'carrierwave/orm/activerecord'
|
8
|
+
|
9
|
+
TEST_DIR = File.dirname(__FILE__)
|
10
|
+
#require './test/support/upload_file_macros.rb'
|
11
|
+
Dir[TEST_DIR+"/support/**/*.rb"].each{|f| require f}
|
12
|
+
|
13
|
+
class Minitest::Spec
|
14
|
+
class << self
|
15
|
+
alias :context :describe
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
ActiveRecord::Base::establish_connection(adapter: 'sqlite3', database: ':memory:')
|
20
|
+
ActiveRecord::Base.connection.execute(%{CREATE TABLE documents (id INTEGER PRIMARY KEY, file STRING );})
|
21
|
+
|
22
|
+
|
23
|
+
class FileUploader < CarrierWave::Uploader::Base
|
24
|
+
storage :file
|
25
|
+
|
26
|
+
def root
|
27
|
+
"#{TEST_DIR}/tmp/" #
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
|
32
|
+
class Document < ActiveRecord::Base
|
33
|
+
mount_uploader :file, FileUploader
|
34
|
+
end
|
35
|
+
|
36
|
+
def remove_uploaded_test_files
|
37
|
+
FileUtils.rm_rf(Dir.glob(TEST_DIR+"/tmp/uploads/*"))
|
38
|
+
end
|
39
|
+
|
40
|
+
|
metadata
ADDED
@@ -0,0 +1,168 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: copy_carrierwave_file
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Tomas Valent
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-13 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: rake
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: carrierwave
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.9'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.9'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: activerecord
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '3.2'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '3.2'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: minitest
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '5'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '5'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: mocha
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0.14'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0.14'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: sqlite3
|
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'
|
111
|
+
description: 'Gems main responsibility is to provide service for copying Carrierwave
|
112
|
+
files between records '
|
113
|
+
email:
|
114
|
+
- equivalent@eq8.eu
|
115
|
+
executables: []
|
116
|
+
extensions: []
|
117
|
+
extra_rdoc_files: []
|
118
|
+
files:
|
119
|
+
- ".gitignore"
|
120
|
+
- Gemfile
|
121
|
+
- LICENSE.txt
|
122
|
+
- README.md
|
123
|
+
- Rakefile
|
124
|
+
- copy_carrierwave_file.gemspec
|
125
|
+
- lib/copy_carrierwave_file.rb
|
126
|
+
- lib/copy_carrierwave_file/copy_file_service.rb
|
127
|
+
- lib/copy_carrierwave_file/version.rb
|
128
|
+
- test/copy_carrierwave_file_test.rb
|
129
|
+
- test/copy_file_service_wrong_initialization_test.rb
|
130
|
+
- test/copy_local_storage_file_test.rb
|
131
|
+
- test/copy_remote_storage_file_test.rb
|
132
|
+
- test/fixtures/uploads/test_file1.txt
|
133
|
+
- test/fixtures/uploads/test_file2.txt
|
134
|
+
- test/support/upload_file_macros.rb
|
135
|
+
- test/test_helper.rb
|
136
|
+
homepage: http://eq8.eu
|
137
|
+
licenses:
|
138
|
+
- MIT
|
139
|
+
metadata: {}
|
140
|
+
post_install_message:
|
141
|
+
rdoc_options: []
|
142
|
+
require_paths:
|
143
|
+
- lib
|
144
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
145
|
+
requirements:
|
146
|
+
- - ">="
|
147
|
+
- !ruby/object:Gem::Version
|
148
|
+
version: '0'
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
150
|
+
requirements:
|
151
|
+
- - ">="
|
152
|
+
- !ruby/object:Gem::Version
|
153
|
+
version: '0'
|
154
|
+
requirements: []
|
155
|
+
rubyforge_project:
|
156
|
+
rubygems_version: 2.2.2
|
157
|
+
signing_key:
|
158
|
+
specification_version: 4
|
159
|
+
summary: Copy Carrierwave files between records
|
160
|
+
test_files:
|
161
|
+
- test/copy_carrierwave_file_test.rb
|
162
|
+
- test/copy_file_service_wrong_initialization_test.rb
|
163
|
+
- test/copy_local_storage_file_test.rb
|
164
|
+
- test/copy_remote_storage_file_test.rb
|
165
|
+
- test/fixtures/uploads/test_file1.txt
|
166
|
+
- test/fixtures/uploads/test_file2.txt
|
167
|
+
- test/support/upload_file_macros.rb
|
168
|
+
- test/test_helper.rb
|