delayed_paperclip 2.9.1 → 2.9.2

Sign up to get free protection for your applications and to get access to all the features.
Files changed (43) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +2 -2
  3. data/.travis.yml +5 -6
  4. data/Appraisals +1 -5
  5. data/CONTRIBUTING +0 -3
  6. data/README.md +43 -11
  7. data/Rakefile +0 -13
  8. data/delayed_paperclip.gemspec +3 -3
  9. data/gemfiles/3.2.gemfile +0 -1
  10. data/gemfiles/4.0.gemfile +0 -1
  11. data/gemfiles/4.1.gemfile +0 -1
  12. data/gemfiles/4.2.gemfile +0 -1
  13. data/lib/delayed_paperclip.rb +6 -7
  14. data/lib/delayed_paperclip/attachment.rb +12 -6
  15. data/lib/delayed_paperclip/jobs/active_job.rb +3 -5
  16. data/lib/delayed_paperclip/jobs/delayed_job.rb +3 -2
  17. data/lib/delayed_paperclip/jobs/resque.rb +2 -3
  18. data/lib/delayed_paperclip/jobs/sidekiq.rb +7 -1
  19. data/lib/delayed_paperclip/railtie.rb +1 -1
  20. data/lib/delayed_paperclip/url_generator.rb +19 -25
  21. data/lib/delayed_paperclip/version.rb +1 -1
  22. data/spec/delayed_paperclip/attachment_spec.rb +98 -26
  23. data/spec/delayed_paperclip/class_methods_spec.rb +20 -12
  24. data/spec/delayed_paperclip/instance_methods_spec.rb +8 -12
  25. data/spec/delayed_paperclip/url_generator_spec.rb +24 -24
  26. data/spec/delayed_paperclip_spec.rb +37 -22
  27. data/spec/integration/active_job_inline_spec.rb +3 -3
  28. data/spec/integration/active_job_resque_spec.rb +4 -7
  29. data/spec/integration/active_job_sidekiq_spec.rb +17 -18
  30. data/spec/integration/base_delayed_paperclip_spec.rb +5 -6
  31. data/spec/integration/delayed_job_spec.rb +3 -4
  32. data/spec/integration/examples/base.rb +33 -25
  33. data/spec/integration/resque_spec.rb +4 -6
  34. data/spec/integration/sidekiq_spec.rb +8 -11
  35. data/spec/spec_helper.rb +15 -0
  36. metadata +23 -19
  37. data/gemfiles/3.2.gemfile.lock +0 -162
  38. data/gemfiles/4.0.gemfile.lock +0 -156
  39. data/gemfiles/4.1.gemfile.lock +0 -156
  40. data/gemfiles/4.2.gemfile.lock +0 -181
  41. data/test/base_delayed_paperclip_test.rb +0 -254
  42. data/test/database.yml +0 -4
  43. data/test/test_helper.rb +0 -106
@@ -2,28 +2,35 @@ require 'spec_helper'
2
2
  require 'resque'
3
3
 
4
4
  describe DelayedPaperclip do
5
- before :all do
5
+ before :each do
6
6
  reset_dummy
7
7
  end
8
8
 
9
- describe ".options" do
10
- it ".options returns basic options" do
11
- DelayedPaperclip.options.should == {:background_job_class => DelayedPaperclip::Jobs::Resque,
12
- :url_with_processing => true,
13
- :processing_image_url => nil}
9
+ context "with Resque adapter" do
10
+ before :each do
11
+ DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::Resque
14
12
  end
15
- end
16
13
 
17
- describe ".processor" do
18
- it ".processor returns processor" do
19
- DelayedPaperclip.processor.should == DelayedPaperclip::Jobs::Resque
14
+ describe ".options" do
15
+ it ".options returns basic options" do
16
+ DelayedPaperclip.options.should == {:background_job_class => DelayedPaperclip::Jobs::Resque,
17
+ :url_with_processing => true,
18
+ :processing_image_url => nil,
19
+ :queue => "paperclip"}
20
+ end
20
21
  end
21
- end
22
22
 
23
- describe ".enqueue" do
24
- it "delegates to processor" do
25
- DelayedPaperclip::Jobs::Resque.expects(:enqueue_delayed_paperclip).with("Dummy", 1, :image)
26
- DelayedPaperclip.enqueue("Dummy", 1, :image)
23
+ describe ".processor" do
24
+ it ".processor returns processor" do
25
+ DelayedPaperclip.processor.should == DelayedPaperclip::Jobs::Resque
26
+ end
27
+ end
28
+
29
+ describe ".enqueue" do
30
+ it "delegates to processor" do
31
+ DelayedPaperclip::Jobs::Resque.expects(:enqueue_delayed_paperclip).with("Dummy", 1, :image)
32
+ DelayedPaperclip.enqueue("Dummy", 1, :image)
33
+ end
27
34
  end
28
35
  end
29
36
 
@@ -32,28 +39,36 @@ describe DelayedPaperclip do
32
39
 
33
40
  it "finds dummy and calls #process_delayed!" do
34
41
  dummy_stub = stub
35
- dummy_stub.expects(:find).with(dummy.id).returns(dummy)
42
+ dummy_stub.expects(:where).with(id: dummy.id).returns([dummy])
36
43
  Dummy.expects(:unscoped).returns(dummy_stub)
37
44
  dummy.image.expects(:process_delayed!)
38
45
  DelayedPaperclip.process_job("Dummy", dummy.id, :image)
39
46
  end
47
+
48
+ it "doesn't find dummy and it doesn't raise any exceptions" do
49
+ dummy_stub = stub
50
+ dummy_stub.expects(:where).with(id: dummy.id).returns([])
51
+ Dummy.expects(:unscoped).returns(dummy_stub)
52
+ expect do
53
+ DelayedPaperclip.process_job("Dummy", dummy.id, :image)
54
+ end.not_to raise_exception
55
+ end
40
56
  end
41
57
 
42
58
  describe "paperclip definitions" do
43
- before :all do
59
+ before :each do
44
60
  reset_dummy :paperclip => { styles: { thumbnail: "25x25"} }
45
61
  end
46
62
 
47
63
  it "returns paperclip options regardless of version" do
48
- Dummy.paperclip_definitions.should == {:image => { :styles => { :thumbnail => "25x25" },
64
+ expect(Dummy.paperclip_definitions).to eq({:image => { :styles => { :thumbnail => "25x25" },
49
65
  :delayed => { :priority => 0,
50
66
  :only_process => [],
51
67
  :url_with_processing => true,
52
68
  :processing_image_url => nil,
53
- :queue => nil}
69
+ :queue => "paperclip"}
54
70
  }
55
- }
71
+ })
56
72
  end
57
-
58
73
  end
59
- end
74
+ end
@@ -1,10 +1,10 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "ActiveJob inline" do
4
-
5
4
  if defined? ActiveJob
6
- before :all do
5
+ before :each do
7
6
  DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob
7
+ ActiveJob::Base.queue_adapter = :inline
8
8
  ActiveJob::Base.logger = nil
9
9
  end
10
10
 
@@ -23,4 +23,4 @@ describe "ActiveJob inline" do
23
23
  end
24
24
  end
25
25
  end
26
- end
26
+ end
@@ -3,8 +3,7 @@ require 'resque'
3
3
 
4
4
  if defined? ActiveJob
5
5
  describe "Active Job with Resque backend" do
6
-
7
- before :all do
6
+ before :each do
8
7
  DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob
9
8
  ActiveJob::Base.logger = nil
10
9
  ActiveJob::Base.queue_adapter = :resque
@@ -22,10 +21,8 @@ if defined? ActiveJob
22
21
  worker.process
23
22
  end
24
23
 
25
- def jobs_count
26
-
27
- Resque.size(:paperclip)
24
+ def jobs_count(queue = :paperclip)
25
+ Resque.size(queue)
28
26
  end
29
-
30
27
  end
31
- end
28
+ end
@@ -1,35 +1,34 @@
1
1
  require 'spec_helper'
2
- require 'sidekiq/api'
2
+ require 'sidekiq/testing'
3
3
 
4
4
  describe "ActiveJob with Sidekiq backend" do
5
+ if defined? ActiveJob
6
+ before :each do
7
+ DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob
8
+ ActiveJob::Base.logger = nil
9
+ ActiveJob::Base.queue_adapter = :sidekiq
10
+ Sidekiq::Queues["paperclip"].clear
11
+ end
5
12
 
6
- if defined? ActiveJob
7
- before :all do
8
- DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::ActiveJob
9
- ActiveJob::Base.logger = nil
10
- ActiveJob::Base.queue_adapter = :sidekiq
11
- end
12
-
13
- let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) }
13
+ let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) }
14
14
 
15
- describe "integration tests" do
16
- include_examples "base usage"
15
+ describe "integration tests" do
16
+ include_examples "base usage"
17
+ end
17
18
  end
18
- end
19
19
 
20
20
  def process_jobs
21
- Sidekiq::Queue.new(:paperclip).each do |job|
22
- worker = job.klass.constantize.new
23
- args = job.args
21
+ Sidekiq::Queues["paperclip"].each do |job|
22
+ worker = job["class"].constantize.new
23
+ args = job["args"]
24
24
  begin
25
25
  worker.perform(*args)
26
26
  rescue # Assume sidekiq handle exception properly
27
27
  end
28
- job.delete
29
28
  end
30
29
  end
31
30
 
32
- def jobs_count
33
- Sidekiq::Queue.new(:paperclip).size
31
+ def jobs_count(queue = "paperclip")
32
+ Sidekiq::Queues[queue].size
34
33
  end
35
34
  end
@@ -1,7 +1,7 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe "Base Delayed Paperclip Integration" do
4
- before :all do
4
+ before :each do
5
5
  DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::Resque
6
6
  Resque.remove_queue(:paperclip)
7
7
  end
@@ -14,16 +14,15 @@ describe "Base Delayed Paperclip Integration" do
14
14
 
15
15
  describe "double save" do
16
16
  before :each do
17
- dummy.image_processing.should be_false
17
+ dummy.image_processing.should be_falsey
18
18
  dummy.image = File.open("#{ROOT}/spec/fixtures/12k.png")
19
19
  dummy.save!
20
20
  end
21
21
 
22
22
  it "processing column remains true" do
23
- dummy.image_processing.should be_true
23
+ dummy.image_processing.should be_truthy
24
24
  dummy.save!
25
- dummy.image_processing.should be_true
25
+ dummy.image_processing.should be_truthy
26
26
  end
27
27
  end
28
-
29
- end
28
+ end
@@ -4,8 +4,7 @@ require 'delayed_job'
4
4
  Delayed::Worker.backend = :active_record
5
5
 
6
6
  describe "Delayed Job" do
7
-
8
- before :all do
7
+ before :each do
9
8
  DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::DelayedJob
10
9
  build_delayed_jobs
11
10
  end
@@ -34,7 +33,7 @@ describe "Delayed Job" do
34
33
  Delayed::Worker.new.work_off
35
34
  end
36
35
 
37
- def jobs_count
36
+ def jobs_count(queue = nil)
38
37
  Delayed::Job.count
39
38
  end
40
39
 
@@ -52,4 +51,4 @@ describe "Delayed Job" do
52
51
  table.timestamps null: true
53
52
  end
54
53
  end
55
- end
54
+ end
@@ -12,10 +12,10 @@ shared_examples "base usage" do
12
12
 
13
13
  it "allows normal paperclip functionality" do
14
14
  Paperclip::Attachment.any_instance.expects(:post_process)
15
- dummy.image.delay_processing?.should be_false
16
- dummy.image.post_processing.should be_true
17
- dummy.save.should be_true
18
- File.exists?(dummy.image.path).should be_true
15
+ dummy.image.delay_processing?.should be_falsey
16
+ dummy.image.post_processing.should be_truthy
17
+ dummy.save.should be_truthy
18
+ File.exists?(dummy.image.path).should be_truthy
19
19
  end
20
20
 
21
21
  context "missing url" do
@@ -52,16 +52,16 @@ shared_examples "base usage" do
52
52
  dummy.image.post_processing = true
53
53
  end
54
54
  it "has delay_processing is false" do
55
- dummy.image.delay_processing?.should be_false
55
+ dummy.image.delay_processing?.should be_falsey
56
56
  end
57
57
 
58
58
  it "post processing returns true" do
59
- dummy.image.post_processing.should be_true
59
+ dummy.image.post_processing.should be_truthy
60
60
  end
61
61
 
62
62
  it "writes the file" do
63
63
  dummy.save
64
- File.exists?(dummy.image.path).should be_true
64
+ File.exists?(dummy.image.path).should be_truthy
65
65
  end
66
66
  end
67
67
 
@@ -73,16 +73,16 @@ shared_examples "base usage" do
73
73
  end
74
74
 
75
75
  it "delays processing" do
76
- dummy.image.delay_processing?.should be_true
76
+ dummy.image.delay_processing?.should be_truthy
77
77
  end
78
78
 
79
79
  it "post_processing is false" do
80
- dummy.image.post_processing.should be_false
80
+ dummy.image.post_processing.should be_falsey
81
81
  end
82
82
 
83
83
  it "has file after save" do
84
84
  dummy.save
85
- File.exists?(dummy.image.path).should be_true
85
+ File.exists?(dummy.image.path).should be_truthy
86
86
  end
87
87
 
88
88
  end
@@ -98,9 +98,9 @@ shared_examples "base usage" do
98
98
  describe "processing column not altered" do
99
99
  it "resets after job finished" do
100
100
  dummy.save!
101
- dummy.image_processing?.should be_true
101
+ dummy.image_processing?.should be_truthy
102
102
  process_jobs
103
- dummy.reload.image_processing?.should be_false
103
+ dummy.reload.image_processing?.should be_falsey
104
104
  end
105
105
 
106
106
  context "with error" do
@@ -110,10 +110,10 @@ shared_examples "base usage" do
110
110
 
111
111
  it "stays true even if errored" do
112
112
  dummy.save!
113
- dummy.image_processing?.should be_true
113
+ dummy.image_processing?.should be_truthy
114
114
  process_jobs
115
- dummy.image_processing?.should be_true
116
- dummy.reload.image_processing?.should be_true
115
+ dummy.image_processing?.should be_truthy
116
+ dummy.reload.image_processing?.should be_truthy
117
117
  end
118
118
  end
119
119
  end
@@ -121,10 +121,10 @@ shared_examples "base usage" do
121
121
  # TODO: test appears redundant
122
122
  describe "processing is true for new record" do
123
123
  it "is true" do
124
- dummy.image_processing?.should be_false
125
- dummy.new_record?.should be_true
124
+ dummy.image_processing?.should be_falsey
125
+ dummy.new_record?.should be_truthy
126
126
  dummy.save!
127
- dummy.reload.image_processing?.should be_true
127
+ dummy.reload.image_processing?.should be_truthy
128
128
  end
129
129
  end
130
130
 
@@ -176,7 +176,7 @@ shared_examples "base usage" do
176
176
  context "paperclip callback" do
177
177
  before :each do
178
178
  Dummy.send(:define_method, :done_processing) { puts 'done' }
179
- Dummy.after_image_post_process :done_processing
179
+ Dummy.send(:after_image_post_process, :done_processing)
180
180
  Dummy.any_instance.expects(:done_processing).once
181
181
  end
182
182
 
@@ -243,7 +243,7 @@ shared_examples "base usage" do
243
243
  dummy.save!
244
244
  process_jobs
245
245
  dummy.reload.image.url(:thumbnail).should start_with("/system/dummies/images/000/000/001/thumbnail/12k.jpg")
246
- File.exists?(dummy.image.path).should be_true
246
+ File.exists?(dummy.image.path).should be_truthy
247
247
  end
248
248
  end
249
249
 
@@ -259,9 +259,9 @@ shared_examples "base usage" do
259
259
 
260
260
  it "does not increase jobs count" do
261
261
  dummy.save!
262
- dummy.image_processing?.should be_true
262
+ dummy.image_processing?.should be_truthy
263
263
  process_jobs
264
- dummy.reload.image_processing?.should be_false
264
+ dummy.reload.image_processing?.should be_falsey
265
265
 
266
266
  Paperclip::Attachment.any_instance.expects(:reprocess!).once
267
267
 
@@ -269,8 +269,8 @@ shared_examples "base usage" do
269
269
  dummy.image.reprocess_without_delay!(:thumbnail)
270
270
  existing_jobs.should == jobs_count
271
271
 
272
- dummy.image_processing?.should be_false
273
- File.exists?(dummy.image.path).should be_true
272
+ dummy.image_processing?.should be_falsey
273
+ File.exists?(dummy.image.path).should be_truthy
274
274
  end
275
275
 
276
276
  end
@@ -312,5 +312,13 @@ shared_examples "base usage" do
312
312
  end
313
313
  end
314
314
 
315
- end
315
+ describe "queue option" do
316
+ it "enqueues job with given queue name" do
317
+ reset_dummy :queue => "custom"
316
318
 
319
+ expect do
320
+ dummy.save!
321
+ end.to change { jobs_count("custom") }.by(1)
322
+ end
323
+ end
324
+ end
@@ -2,8 +2,7 @@ require 'spec_helper'
2
2
  require 'resque'
3
3
 
4
4
  describe "Resque" do
5
-
6
- before :all do
5
+ before :each do
7
6
  DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::Resque
8
7
  Resque.remove_queue(:paperclip)
9
8
  end
@@ -33,8 +32,7 @@ describe "Resque" do
33
32
  worker.process
34
33
  end
35
34
 
36
- def jobs_count
37
- Resque.size(:paperclip)
35
+ def jobs_count(queue = :paperclip)
36
+ Resque.size(queue)
38
37
  end
39
-
40
- end
38
+ end
@@ -1,12 +1,11 @@
1
1
  require 'spec_helper'
2
- require 'sidekiq/api'
2
+ require 'sidekiq/testing'
3
3
 
4
4
  describe "Sidekiq" do
5
-
6
- before :all do
5
+ before :each do
7
6
  Sidekiq.logger.level = Logger::ERROR
8
7
  DelayedPaperclip.options[:background_job_class] = DelayedPaperclip::Jobs::Sidekiq
9
- Sidekiq::Queue.new(:paperclip).clear
8
+ Sidekiq::Queues["paperclip"].clear
10
9
  end
11
10
 
12
11
  let(:dummy) { Dummy.new(:image => File.open("#{ROOT}/spec/fixtures/12k.png")) }
@@ -30,19 +29,17 @@ describe "Sidekiq" do
30
29
  end
31
30
 
32
31
  def process_jobs
33
- Sidekiq::Queue.new(:paperclip).each do |job|
34
- worker = job.klass.constantize.new
35
- args = job.args
32
+ Sidekiq::Queues["paperclip"].each do |job|
33
+ worker = job["class"].constantize.new
34
+ args = job["args"]
36
35
  begin
37
36
  worker.perform(*args)
38
37
  rescue # Assume sidekiq handle exception properly
39
38
  end
40
- job.delete
41
39
  end
42
40
  end
43
41
 
44
- def jobs_count
45
- Sidekiq::Queue.new(:paperclip).size
42
+ def jobs_count(queue = "paperclip")
43
+ Sidekiq::Queues[queue].size
46
44
  end
47
-
48
45
  end