carrierwave-processor 1.0.3 → 1.1.0
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 +4 -4
- data/.travis.yml +16 -0
- data/Appraisals +31 -0
- data/Gemfile +1 -1
- data/carrierwave-processor.gemspec +3 -2
- data/gemfiles/4.0.4.gemfile +7 -0
- data/gemfiles/4.0.5.gemfile +7 -0
- data/gemfiles/4.0.6.gemfile +7 -0
- data/gemfiles/4.0.7.gemfile +7 -0
- data/gemfiles/4.0.8.gemfile +7 -0
- data/gemfiles/4.1.0.gemfile +7 -0
- data/gemfiles/4.1.1.gemfile +7 -0
- data/gemfiles/4.1.2.gemfile +7 -0
- data/gemfiles/4.1.3.gemfile +7 -0
- data/gemfiles/4.1.4.gemfile +7 -0
- data/lib/carrierwave/processor/backend/base.rb +47 -0
- data/lib/carrierwave/processor/backend/sucker_punch.rb +24 -0
- data/lib/carrierwave/processor/configuration.rb +48 -0
- data/lib/carrierwave/processor/injector.rb +52 -37
- data/lib/carrierwave/processor/uploader_dsl.rb +26 -11
- data/lib/carrierwave/processor/version.rb +1 -1
- data/lib/carrierwave/processor.rb +23 -1
- data/spec/active_support_spec.rb +1 -1
- data/spec/configuration_spec.rb +25 -0
- data/spec/delay_spec.rb +47 -0
- data/spec/spec_helper.rb +8 -3
- data/spec/sucker_punch_spec.rb +14 -0
- data/spec/uploader_dsl_spec.rb +21 -0
- data/spec/utils/raise_matcher.rb +46 -0
- metadata +41 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70be514842d8aa58960b8a3bb8416f6fc2ef44b3
|
4
|
+
data.tar.gz: 323278b9642952d54c9b33103b5eec629078b970
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 975b9b419329fbce3db9c19f15103ed6db19df9934c7beb01c6c80365a1a905489e8b34839f7f1cd2e7c4524f7107852b9ecd5c1ab952062065a3db9a564811a
|
7
|
+
data.tar.gz: 5acdefa441a443219bac52a9f488919e0854a6700e3edbc0d18ff4dc6631d886a02561b569a79d338fd273d053160f5ad9b7a7707289971d6ca4dc938c9764be
|
data/.travis.yml
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
---
|
2
|
+
language: ruby
|
3
|
+
rvm:
|
4
|
+
- '2.1'
|
5
|
+
script: bundle exec rspec spec
|
6
|
+
gemfile:
|
7
|
+
- gemfiles/4.0.4.gemfile
|
8
|
+
- gemfiles/4.0.5.gemfile
|
9
|
+
- gemfiles/4.0.6.gemfile
|
10
|
+
- gemfiles/4.0.7.gemfile
|
11
|
+
- gemfiles/4.0.8.gemfile
|
12
|
+
- gemfiles/4.1.0.gemfile
|
13
|
+
- gemfiles/4.1.1.gemfile
|
14
|
+
- gemfiles/4.1.2.gemfile
|
15
|
+
- gemfiles/4.1.3.gemfile
|
16
|
+
- gemfiles/4.1.4.gemfile
|
data/Appraisals
ADDED
@@ -0,0 +1,31 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
|
3
|
+
ruby_versions = ['2.1']
|
4
|
+
|
5
|
+
minor_4_0 = 4..8
|
6
|
+
minor_4_1 = 0..4
|
7
|
+
|
8
|
+
minor_4_0.each do |i|
|
9
|
+
appraisal_version = "4.0.#{i}"
|
10
|
+
appraise "4.0.#{i}" do
|
11
|
+
gem "rails", appraisal_version
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
minor_4_1.each do |i|
|
16
|
+
appraisal_version = "4.1.#{i}"
|
17
|
+
appraise "4.1.#{i}" do
|
18
|
+
gem "rails", appraisal_version
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
::File.open('.travis.yml', 'w+') do |f|
|
23
|
+
travis_hash = {
|
24
|
+
'language' => 'ruby',
|
25
|
+
'rvm' => ruby_versions,
|
26
|
+
'script' => 'bundle exec rspec spec',
|
27
|
+
'gemfile' => Dir.glob('gemfiles/*.gemfile')
|
28
|
+
}
|
29
|
+
travis = ::YAML.dump(travis_hash)
|
30
|
+
f.write travis
|
31
|
+
end
|
data/Gemfile
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
2
|
|
3
|
-
gem 'rails', :git => "git@github.com:rails/rails.git", :branch => "4-0-stable"
|
3
|
+
#gem 'rails', :git => "git@github.com:rails/rails.git", :branch => "4-0-stable"
|
4
4
|
|
5
5
|
# Specify your gem's dependencies in carrierwave-processing.gemspec
|
6
6
|
gemspec
|
@@ -19,9 +19,10 @@ Gem::Specification.new do |spec|
|
|
19
19
|
spec.require_paths = ["lib", "lib/carrierwave"]
|
20
20
|
|
21
21
|
spec.add_dependency 'carrierwave'
|
22
|
-
spec.add_dependency 'activesupport', '>= 4.0.4'
|
22
|
+
spec.add_dependency 'activesupport', '>= 4.0.4' # for rails prepend support
|
23
23
|
spec.add_development_dependency "bundler", "~> 1.3"
|
24
|
+
spec.add_development_dependency "appraisal"
|
24
25
|
spec.add_development_dependency "rake"
|
25
26
|
spec.add_development_dependency "rspec"
|
26
|
-
spec.add_development_dependency
|
27
|
+
spec.add_development_dependency 'sucker_punch'
|
27
28
|
end
|
@@ -0,0 +1,47 @@
|
|
1
|
+
module CarrierWave::Processor
|
2
|
+
module Backend
|
3
|
+
class Base
|
4
|
+
attr_accessor :options, :delays, :uploaders
|
5
|
+
def initialize options={}
|
6
|
+
@options = options
|
7
|
+
end
|
8
|
+
def errback &block
|
9
|
+
errbacks << block
|
10
|
+
end
|
11
|
+
|
12
|
+
def callback &block
|
13
|
+
callbacks << block
|
14
|
+
end
|
15
|
+
|
16
|
+
def callbacks
|
17
|
+
@callbacks ||= []
|
18
|
+
end
|
19
|
+
|
20
|
+
def errbacks
|
21
|
+
@callbacks ||= []
|
22
|
+
end
|
23
|
+
|
24
|
+
def stub &block
|
25
|
+
@stub = block
|
26
|
+
end
|
27
|
+
|
28
|
+
def stub_cache &block
|
29
|
+
@stub_cache = block
|
30
|
+
end
|
31
|
+
|
32
|
+
def uploaders
|
33
|
+
@uploaders ||= []
|
34
|
+
end
|
35
|
+
|
36
|
+
def delay uploader, uniq_version_name
|
37
|
+
@delays ||= {}
|
38
|
+
@delays[uploader] ||= []
|
39
|
+
@delays[uploader] << uniq_version_name if uniq_version_name
|
40
|
+
end
|
41
|
+
|
42
|
+
def create_worker *args, &block
|
43
|
+
raise NotImplementedError.new
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'sucker_punch'
|
2
|
+
require_relative './base'
|
3
|
+
module CarrierWave::Processor::Backend
|
4
|
+
class SuckerPunch < Base
|
5
|
+
|
6
|
+
class Worker
|
7
|
+
include ::SuckerPunch::Job
|
8
|
+
|
9
|
+
def perform uploader_inst
|
10
|
+
Thread.current[:uploader] = uploader_inst.class
|
11
|
+
uploader_inst.recreate_versions!
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
def create_worker
|
16
|
+
Worker.new.async
|
17
|
+
end
|
18
|
+
|
19
|
+
def can_build_uploader? uploader
|
20
|
+
return false if Thread.current[:uploader].nil?
|
21
|
+
Thread.current[:uploader] == uploader
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'carrierwave/processor/backend/base'
|
2
|
+
module CarrierWave::Processor
|
3
|
+
|
4
|
+
class BackendNotInitializedError < StandardError
|
5
|
+
def initialize msg="set up backend first"
|
6
|
+
super
|
7
|
+
end
|
8
|
+
end
|
9
|
+
|
10
|
+
class BackendNotFound < StandardError
|
11
|
+
def initialize name
|
12
|
+
super("backend with name #{name.to_s.classify} not found")
|
13
|
+
end
|
14
|
+
end
|
15
|
+
|
16
|
+
class Configuration
|
17
|
+
delegate :callback, :errback, :stub, :stub_cache, :to => :backend
|
18
|
+
|
19
|
+
attr_writer :backend
|
20
|
+
|
21
|
+
def delay
|
22
|
+
self
|
23
|
+
end
|
24
|
+
|
25
|
+
def backend name=nil, options={}
|
26
|
+
if name
|
27
|
+
backends_path = (::CarrierWave::Processor.root + 'carrierwave/processor/backend')
|
28
|
+
backend_file = backends_path.entries.detect{|i| i.basename('.rb').to_s == name.to_s}
|
29
|
+
raise BackendNotFound.new(name) unless backend_file
|
30
|
+
backend_file = backends_path + backend_file
|
31
|
+
require backend_file
|
32
|
+
raise BackendNotFound.new(name) unless backend_file
|
33
|
+
begin
|
34
|
+
klass = ::CarrierWave::Processor::Backend.const_get(name.to_s.classify.to_sym)
|
35
|
+
rescue NameError
|
36
|
+
raise BackendNotFound.new(name)
|
37
|
+
end
|
38
|
+
options = @backend.options.merge(options) if @backend
|
39
|
+
@backend = klass.new options
|
40
|
+
elsif @backend
|
41
|
+
@backend
|
42
|
+
else
|
43
|
+
raise BackendNotInitializedError.new
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
48
|
+
end
|
@@ -1,50 +1,65 @@
|
|
1
1
|
require 'delegate'
|
2
2
|
require 'active_support/core_ext/class'
|
3
|
+
module CarrierWave::Processor
|
4
|
+
class Injector < Module
|
3
5
|
|
4
|
-
|
6
|
+
# PLUGIN_OPTIONS = [:outer_version, :root_uploader]
|
5
7
|
|
6
|
-
|
8
|
+
def initialize uploader, opts = {}, &block
|
9
|
+
@uploader = uploader
|
10
|
+
@outer_version = opts.delete(:outer_version)
|
11
|
+
@root_uploader = opts.delete(:root_uploader)
|
12
|
+
unless @root_uploader
|
13
|
+
@root_uploader = @uploader
|
14
|
+
unless CarrierWave::Processor.configuration.backend.uploaders.include? @root_uploader
|
15
|
+
CarrierWave::Processor.configuration.backend.uploaders << @root_uploader
|
16
|
+
@root_uploader.after :store, :perform_delayed
|
17
|
+
end
|
18
|
+
end
|
19
|
+
@options = opts
|
20
|
+
self.class_eval &block
|
21
|
+
@uploader.send :prepend, self
|
22
|
+
end
|
7
23
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
24
|
+
def process *args, &block
|
25
|
+
processed_options = ::CarrierWave::Processor.arguments_merge *args
|
26
|
+
unless @outer_version
|
27
|
+
new_if = ::CarrierWave::Processor.conditions_merge(@options[:if], processed_options[:if])
|
28
|
+
processed_options[:if] = new_if if new_if
|
29
|
+
end
|
30
|
+
@uploader.process processed_options, &block
|
31
|
+
end
|
16
32
|
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
33
|
+
def version *args, &block
|
34
|
+
options = args.extract_options! || {}
|
35
|
+
version_options = @options.merge options
|
36
|
+
ifs_array = [@options[:if], options[:if]]
|
37
|
+
new_if = ::CarrierWave::Processor.conditions_merge *ifs_array
|
38
|
+
version_options[:if] = new_if
|
39
|
+
version_options.delete :if if version_options[:if].nil?
|
40
|
+
version_options[:from_version] = @outer_version if @outer_version
|
41
|
+
passing_options = {:if => ifs_array}
|
42
|
+
passing_options[:outer_version] = args.first if args.first
|
43
|
+
passing_options[:root_uploader] = @root_uploader
|
44
|
+
version_args = version_options.empty? ? args : (args + [version_options])
|
45
|
+
passing_options[:root_uploader].version *version_args do
|
46
|
+
Injector.new(self, passing_options, &block)
|
47
|
+
end
|
22
48
|
end
|
23
|
-
@uploader.process processed_options, &block
|
24
|
-
end
|
25
49
|
|
26
|
-
|
27
|
-
|
28
|
-
version_options = @options.merge options
|
29
|
-
ifs_array = [@options[:if], options[:if]]
|
30
|
-
new_if = ::CarrierWave::Processor.conditions_merge *ifs_array
|
31
|
-
version_options[:if] = new_if
|
32
|
-
version_options.delete :if if version_options[:if].nil?
|
33
|
-
version_options[:from_version] = @outer_version if @outer_version
|
34
|
-
passing_options = {:if => ifs_array}
|
35
|
-
passing_options[:outer_version] = args.first if args.first
|
36
|
-
passing_options[:root_uploader] = @root_uploader || @uploader
|
37
|
-
version_args = version_options.empty? ? args : (args + [version_options])
|
38
|
-
passing_options[:root_uploader].version *version_args do
|
39
|
-
Injector.new(self, passing_options, &block)
|
50
|
+
def method_missing *args, &block
|
51
|
+
@uploader.send *args, &block
|
40
52
|
end
|
41
|
-
end
|
42
53
|
|
43
|
-
|
44
|
-
|
45
|
-
|
54
|
+
def delay *args, &block
|
55
|
+
options = args.extract_options!
|
56
|
+
uniq_version_name = "version_#{SecureRandom.hex}".to_sym
|
57
|
+
backend = ::CarrierWave::Processor.configuration.backend
|
58
|
+
root_uploader_closure = @root_uploader
|
59
|
+
delay_check = ->(uploader, options){ ::CarrierWave::Processor.configuration.backend.can_build_uploader?(root_uploader_closure) }
|
60
|
+
backend.delay @uploader, uniq_version_name
|
61
|
+
version(uniq_version_name, :if => delay_check, &block)
|
62
|
+
end
|
46
63
|
|
47
|
-
def delay *args, &block
|
48
64
|
end
|
49
|
-
|
50
65
|
end
|
@@ -4,21 +4,36 @@ module CarrierWave
|
|
4
4
|
module Processor
|
5
5
|
module UploaderDsl
|
6
6
|
|
7
|
-
def
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
7
|
+
def self.included base
|
8
|
+
base.extend ClassMethods
|
9
|
+
end
|
10
|
+
|
11
|
+
module ClassMethods
|
12
|
+
|
13
|
+
def use_processor *args
|
14
|
+
options = args.extract_options!
|
15
|
+
args.each do |processor|
|
16
|
+
if processor and not ::CarrierWave::Processor.processors.blank? and real_processor = ::CarrierWave::Processor.processors[processor] and real_processor[:block]
|
17
|
+
new_if = [options[:if], real_processor[:options][:if]]
|
18
|
+
merged_options = real_processor[:options].merge options
|
19
|
+
merged_options[:if] = new_if if new_if
|
20
|
+
Injector.new(self, merged_options, &real_processor[:block])
|
21
|
+
else
|
22
|
+
raise ProcessorNotFoundError, processor
|
23
|
+
end
|
17
24
|
end
|
18
25
|
end
|
26
|
+
|
27
|
+
alias_method :use_processors, :use_processor
|
28
|
+
|
19
29
|
end
|
20
30
|
|
21
|
-
|
31
|
+
def perform_delayed *args
|
32
|
+
backend = ::CarrierWave::Processor.configuration.backend
|
33
|
+
if !backend.can_build_uploader?(self.class) and backend.uploaders.include? self.class
|
34
|
+
::CarrierWave::Processor.configuration.backend.create_worker.perform(self)
|
35
|
+
end
|
36
|
+
end
|
22
37
|
|
23
38
|
end
|
24
39
|
end
|
@@ -3,15 +3,37 @@ require 'carrierwave'
|
|
3
3
|
require "carrierwave/processor/version"
|
4
4
|
require "carrierwave/processor/injector"
|
5
5
|
require 'carrierwave/processor/uploader_dsl'
|
6
|
+
require 'carrierwave/processor/configuration'
|
7
|
+
require 'pathname'
|
6
8
|
|
7
9
|
module CarrierWave
|
8
10
|
module Processor
|
11
|
+
def self.root
|
12
|
+
Pathname.new(File.expand_path '../..', __FILE__)
|
13
|
+
end
|
9
14
|
|
10
15
|
class ProcessorNotFoundError < ::StandardError
|
11
16
|
end
|
12
17
|
|
13
18
|
class << self
|
14
19
|
attr_accessor :processors
|
20
|
+
attr_writer :configuration
|
21
|
+
end
|
22
|
+
|
23
|
+
def self.configuration
|
24
|
+
@configuration ||= Configuration.new
|
25
|
+
end
|
26
|
+
|
27
|
+
def self.configure options={}, &block
|
28
|
+
c = configuration
|
29
|
+
options.each do |k, v|
|
30
|
+
c.send "#{k}=", v
|
31
|
+
end
|
32
|
+
yield c
|
33
|
+
end
|
34
|
+
|
35
|
+
def self.async_processing? async_id
|
36
|
+
false
|
15
37
|
end
|
16
38
|
|
17
39
|
def self.conditions_merge *args
|
@@ -45,4 +67,4 @@ module CarrierWave
|
|
45
67
|
end
|
46
68
|
|
47
69
|
Object.send :include, CarrierWave::Processor::Dsl
|
48
|
-
CarrierWave::Uploader::Base.
|
70
|
+
CarrierWave::Uploader::Base.include CarrierWave::Processor::UploaderDsl
|
data/spec/active_support_spec.rb
CHANGED
@@ -0,0 +1,25 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
|
4
|
+
describe CarrierWave::Processor::Configuration do
|
5
|
+
subject {CarrierWave::Processor::Configuration.new}
|
6
|
+
it 'raises exception when no backend found' do
|
7
|
+
expect{subject.backend(:undefined_backend)}.to raise_error(CarrierWave::Processor::BackendNotFound)
|
8
|
+
end
|
9
|
+
|
10
|
+
it 'doesnt raise exception when backend found' do
|
11
|
+
expect{subject.backend(:base)}.not_to raise_error
|
12
|
+
end
|
13
|
+
|
14
|
+
context 'configure block' do
|
15
|
+
it 'sets backend instance if backend chosen' do
|
16
|
+
CarrierWave::Processor.configure do |config|
|
17
|
+
config.backend :base
|
18
|
+
end
|
19
|
+
|
20
|
+
CarrierWave::Processor.configuration.backend.should be_kind_of CarrierWave::Processor::Backend::Base
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
|
25
|
+
end
|
data/spec/delay_spec.rb
ADDED
@@ -0,0 +1,47 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe 'Injector#delay' do
|
4
|
+
|
5
|
+
before :all do
|
6
|
+
carrierwave_processor :delay_processor do
|
7
|
+
delay do
|
8
|
+
process :test
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
12
|
+
|
13
|
+
before :each do
|
14
|
+
if Object.constants.include?(:FooUploader)
|
15
|
+
Object.send(:remove_const, :FooUploader)
|
16
|
+
end
|
17
|
+
class FooUploader < CarrierWave::Uploader::Base
|
18
|
+
version :alalas do
|
19
|
+
def chacha
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def test_me
|
24
|
+
"original"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
CarrierWave::Processor.configuration = nil
|
28
|
+
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'raise error on #delay if no backend chosen' do
|
32
|
+
CarrierWave::Processor.configuration.backend = nil
|
33
|
+
expect{FooUploader.send(:use_processor, :delay_processor)}.to raise_error(CarrierWave::Processor::BackendNotInitializedError)
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'doesnt raise BackendNotInitializedError error if backend chosen' do
|
37
|
+
CarrierWave::Processor.configure do |config|
|
38
|
+
config.backend :base
|
39
|
+
end
|
40
|
+
begin
|
41
|
+
expect{FooUploader.send(:use_processor, :delay_processor)}.to never_raise(CarrierWave::Processor::BackendNotInitializedError)
|
42
|
+
rescue NotImplementedError
|
43
|
+
# can raise NotImplemented
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,14 +1,19 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
require 'bundler/setup'
|
3
3
|
require 'carrierwave'
|
4
|
+
require_relative 'utils/raise_matcher'
|
5
|
+
|
4
6
|
$:.unshift File.dirname(__FILE__) + '/../lib'
|
5
7
|
require 'carrierwave/processor'
|
6
8
|
|
7
9
|
RSpec.configure do |config|
|
8
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
9
10
|
config.run_all_when_everything_filtered = true
|
10
11
|
config.filter_run :focus
|
11
12
|
config.order = 'random'
|
13
|
+
config.expect_with :rspec do |c|
|
14
|
+
c.syntax = [:should, :expect]
|
15
|
+
end
|
16
|
+
config.mock_with :rspec do |c|
|
17
|
+
c.syntax = [:should, :expect]
|
18
|
+
end
|
12
19
|
end
|
13
|
-
|
14
|
-
|
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
require 'carrierwave/processor/backend/sucker_punch'
|
3
|
+
|
4
|
+
describe CarrierWave::Processor::Backend::SuckerPunch do
|
5
|
+
context 'configure block' do
|
6
|
+
it 'sets backend instance if backend chosen' do
|
7
|
+
CarrierWave::Processor.configure do |config|
|
8
|
+
config.backend :sucker_punch
|
9
|
+
end
|
10
|
+
|
11
|
+
CarrierWave::Processor.configuration.backend.should be_kind_of CarrierWave::Processor::Backend::Base
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
data/spec/uploader_dsl_spec.rb
CHANGED
@@ -211,5 +211,26 @@ describe CarrierWave::Processor::UploaderDsl do
|
|
211
211
|
FooUploader.new.versions.map{|name, uploader| uploader.should be_kind_of FooUploader}
|
212
212
|
end
|
213
213
|
|
214
|
+
it 'run block into delay with adding if to options' do
|
215
|
+
CarrierWave::Processor::Backend::Base.any_instance.stub(:create_worker).and_return nil
|
216
|
+
CarrierWave::Processor.configure do |config|
|
217
|
+
config.backend :base
|
218
|
+
end
|
219
|
+
carrierwave_processor :some_proc do
|
220
|
+
version :some_version do
|
221
|
+
process :inner_processing
|
222
|
+
end
|
223
|
+
delay do
|
224
|
+
process :processing
|
225
|
+
end
|
226
|
+
end
|
227
|
+
|
228
|
+
FooUploader.should_receive(:version).with(:some_version).and_call_original
|
229
|
+
FooUploader.should_receive(:version).and_call_original
|
230
|
+
FooUploader.should_receive(:process).with(:inner_processing => [])
|
231
|
+
FooUploader.should_receive(:process).with(hash_including(:processing))
|
232
|
+
FooUploader.send(:use_processor, :some_proc)
|
233
|
+
end
|
234
|
+
|
214
235
|
|
215
236
|
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
# This matcher will return:
|
2
|
+
# 1. TRUE if the code was run without exceptions
|
3
|
+
# 2. FALSE if the code was run but raised (only) the specified exception
|
4
|
+
#
|
5
|
+
# It *will* raise an exception if the block of code raises an exception other than
|
6
|
+
# (the exception specified)
|
7
|
+
#
|
8
|
+
# To use it
|
9
|
+
#
|
10
|
+
# expect {
|
11
|
+
# code
|
12
|
+
# }.to never_raise(MySpecificException)
|
13
|
+
#
|
14
|
+
RSpec::Matchers.define :never_raise do |exception_class|
|
15
|
+
global_result = nil
|
16
|
+
|
17
|
+
match do |block|
|
18
|
+
begin
|
19
|
+
block.call
|
20
|
+
rescue exception_class
|
21
|
+
global_result = "expected #{block.source_location[0]}:#{block.source_location[1]} to never raise #{exception_class.name}, but did"
|
22
|
+
false # we did NOT never raise this exception
|
23
|
+
|
24
|
+
rescue RSpec::Expectations::ExpectationNotMetError => exception
|
25
|
+
global_result = "expectation failed inside block at #{block.source_location[0]}:#{block.source_location[1]}: #{exception}"
|
26
|
+
# give us a pretty error message in addition to the error message from the exception
|
27
|
+
raise exception
|
28
|
+
|
29
|
+
rescue
|
30
|
+
# handle other exceptions by reraising them. They are exceptional!!!
|
31
|
+
# (also, no pretty error messages here)
|
32
|
+
raise
|
33
|
+
|
34
|
+
else
|
35
|
+
true # everything ran, nothing raised at all, thus code did in fact not raise anything
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
failure_message do |player|
|
40
|
+
global_result
|
41
|
+
end
|
42
|
+
|
43
|
+
def supports_block_expectations?
|
44
|
+
true
|
45
|
+
end
|
46
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: carrierwave-processor
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Kostrov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-07-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: carrierwave
|
@@ -52,6 +52,20 @@ dependencies:
|
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: appraisal
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
55
69
|
- !ruby/object:Gem::Dependency
|
56
70
|
name: rake
|
57
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,7 +95,7 @@ dependencies:
|
|
81
95
|
- !ruby/object:Gem::Version
|
82
96
|
version: '0'
|
83
97
|
- !ruby/object:Gem::Dependency
|
84
|
-
name:
|
98
|
+
name: sucker_punch
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
86
100
|
requirements:
|
87
101
|
- - ">="
|
@@ -103,20 +117,39 @@ extra_rdoc_files: []
|
|
103
117
|
files:
|
104
118
|
- ".gitignore"
|
105
119
|
- ".rspec"
|
120
|
+
- ".travis.yml"
|
121
|
+
- Appraisals
|
106
122
|
- Gemfile
|
107
123
|
- LICENSE.txt
|
108
124
|
- README.md
|
109
125
|
- Rakefile
|
110
126
|
- carrierwave-processor.gemspec
|
127
|
+
- gemfiles/4.0.4.gemfile
|
128
|
+
- gemfiles/4.0.5.gemfile
|
129
|
+
- gemfiles/4.0.6.gemfile
|
130
|
+
- gemfiles/4.0.7.gemfile
|
131
|
+
- gemfiles/4.0.8.gemfile
|
132
|
+
- gemfiles/4.1.0.gemfile
|
133
|
+
- gemfiles/4.1.1.gemfile
|
134
|
+
- gemfiles/4.1.2.gemfile
|
135
|
+
- gemfiles/4.1.3.gemfile
|
136
|
+
- gemfiles/4.1.4.gemfile
|
111
137
|
- lib/carrierwave/processor.rb
|
138
|
+
- lib/carrierwave/processor/backend/base.rb
|
139
|
+
- lib/carrierwave/processor/backend/sucker_punch.rb
|
140
|
+
- lib/carrierwave/processor/configuration.rb
|
112
141
|
- lib/carrierwave/processor/dsl.rb
|
113
142
|
- lib/carrierwave/processor/injector.rb
|
114
143
|
- lib/carrierwave/processor/uploader_dsl.rb
|
115
144
|
- lib/carrierwave/processor/version.rb
|
116
145
|
- spec/active_support_spec.rb
|
146
|
+
- spec/configuration_spec.rb
|
147
|
+
- spec/delay_spec.rb
|
117
148
|
- spec/dsl_spec.rb
|
118
149
|
- spec/spec_helper.rb
|
150
|
+
- spec/sucker_punch_spec.rb
|
119
151
|
- spec/uploader_dsl_spec.rb
|
152
|
+
- spec/utils/raise_matcher.rb
|
120
153
|
homepage: http://github.com/bombazook/carrierwave-processor
|
121
154
|
licenses:
|
122
155
|
- MIT
|
@@ -138,12 +171,16 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
138
171
|
version: '0'
|
139
172
|
requirements: []
|
140
173
|
rubyforge_project:
|
141
|
-
rubygems_version: 2.2.
|
174
|
+
rubygems_version: 2.2.2
|
142
175
|
signing_key:
|
143
176
|
specification_version: 4
|
144
177
|
summary: Carrierwave distinct processing declaration
|
145
178
|
test_files:
|
146
179
|
- spec/active_support_spec.rb
|
180
|
+
- spec/configuration_spec.rb
|
181
|
+
- spec/delay_spec.rb
|
147
182
|
- spec/dsl_spec.rb
|
148
183
|
- spec/spec_helper.rb
|
184
|
+
- spec/sucker_punch_spec.rb
|
149
185
|
- spec/uploader_dsl_spec.rb
|
186
|
+
- spec/utils/raise_matcher.rb
|