carrierwave-processor 1.0.3 → 1.1.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|