delayed_paperclip 2.10.0 → 3.0.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 +4 -4
- data/Appraisals +1 -13
- data/README.md +41 -95
- data/delayed_paperclip.gemspec +7 -8
- data/gemfiles/5.0.gemfile +1 -1
- data/lib/delayed_paperclip.rb +3 -13
- data/lib/delayed_paperclip/process_job.rb +14 -0
- data/lib/delayed_paperclip/railtie.rb +10 -15
- data/lib/delayed_paperclip/version.rb +1 -1
- data/spec/delayed_paperclip/attachment_spec.rb +0 -1
- data/spec/delayed_paperclip/class_methods_spec.rb +0 -1
- data/spec/delayed_paperclip/instance_methods_spec.rb +0 -1
- data/spec/delayed_paperclip/url_generator_spec.rb +0 -1
- data/spec/delayed_paperclip_spec.rb +15 -22
- data/spec/integration/base_delayed_paperclip_spec.rb +0 -5
- data/spec/integration/examples/base.rb +6 -4
- data/spec/integration/process_job_spec.rb +26 -0
- data/spec/spec_helper.rb +7 -11
- metadata +22 -84
- data/gemfiles/3.2.gemfile +0 -7
- data/gemfiles/4.0.gemfile +0 -7
- data/gemfiles/4.1.gemfile +0 -7
- data/init.rb +0 -4
- data/lib/delayed_paperclip/jobs.rb +0 -8
- data/lib/delayed_paperclip/jobs/active_job.rb +0 -14
- data/lib/delayed_paperclip/jobs/delayed_job.rb +0 -46
- data/lib/delayed_paperclip/jobs/resque.rb +0 -22
- data/lib/delayed_paperclip/jobs/sidekiq.rb +0 -30
- data/rails/init.rb +0 -2
- data/spec/integration/active_job_inline_spec.rb +0 -26
- data/spec/integration/active_job_resque_spec.rb +0 -28
- data/spec/integration/active_job_sidekiq_spec.rb +0 -34
- data/spec/integration/delayed_job_spec.rb +0 -63
- data/spec/integration/resque_spec.rb +0 -47
- data/spec/integration/sidekiq_spec.rb +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 87f666e3339caae1a67262dc9d7a2e0a4735a4cb
|
4
|
+
data.tar.gz: 17312387a6ca724e835abee1b1aac059c28e24b2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd54dd5bf121d9d9b1bec0feeb669d8afed6dbf0edecc4088f14c84578d976e2cab2e55e5959f03a3b6aba0ca6a75870285870938f6b156ee8bf8d1e0c0402d2
|
7
|
+
data.tar.gz: 5731d670649b7b293b587192d7f569912caf43c717c100b384e24bbc2377b297f30346edf69c88a7c5320621ee1d5a1c9221abedeb59ee8f40e2c81b9ef83558
|
data/.travis.yml
CHANGED
@@ -9,19 +9,19 @@ rvm:
|
|
9
9
|
- 2.0
|
10
10
|
|
11
11
|
gemfile:
|
12
|
-
- gemfiles/3.2.gemfile
|
13
|
-
- gemfiles/4.0.gemfile
|
14
|
-
- gemfiles/4.1.gemfile
|
15
12
|
- gemfiles/4.2.gemfile
|
16
13
|
- gemfiles/5.0.gemfile
|
17
14
|
|
18
|
-
# Rails 5.0 requires Ruby >= 2.2
|
15
|
+
# Rails 5.0 requires Ruby >= 2.2.2
|
19
16
|
matrix:
|
20
17
|
exclude:
|
21
18
|
- rvm: 2.1.10
|
22
19
|
gemfile: gemfiles/5.0.gemfile
|
23
20
|
- rvm: 2.0
|
24
21
|
gemfile: gemfiles/5.0.gemfile
|
22
|
+
# Paperclip >= 5.0 requires Ruby 2.1
|
23
|
+
- rvm: 2.0
|
24
|
+
gemfile: gemfiles/4.2.gemfile
|
25
25
|
|
26
26
|
script: "bundle exec rake clean spec"
|
27
27
|
|
data/Appraisals
CHANGED
@@ -1,19 +1,7 @@
|
|
1
|
-
appraise "3.2" do
|
2
|
-
gem "rails", "~> 3.2.15"
|
3
|
-
end
|
4
|
-
|
5
|
-
appraise "4.0" do
|
6
|
-
gem "rails", "~> 4.0.0"
|
7
|
-
end
|
8
|
-
|
9
|
-
appraise "4.1" do
|
10
|
-
gem "rails", "~> 4.1.0"
|
11
|
-
end
|
12
|
-
|
13
1
|
appraise "4.2" do
|
14
2
|
gem "rails", "~> 4.2.0"
|
15
3
|
end
|
16
4
|
|
17
5
|
appraise "5.0" do
|
18
|
-
gem "rails", "~> 5.0.0
|
6
|
+
gem "rails", "~> 5.0.0"
|
19
7
|
end
|
data/README.md
CHANGED
@@ -3,10 +3,7 @@ Delayed::Paperclip [
|
6
|
-
attachments in a background task with
|
7
|
-
[ActiveJob](https://github.com/rails/rails/tree/master/activejob),
|
8
|
-
[DelayedJob](https://github.com/collectiveidea/delayed_job),
|
9
|
-
[Resque](https://github.com/resque/resque) or [Sidekiq](https://github.com/mperham/sidekiq).
|
6
|
+
attachments in a background task with [ActiveJob](https://github.com/rails/rails/tree/master/activejob)
|
10
7
|
|
11
8
|
Why?
|
12
9
|
----
|
@@ -14,8 +11,7 @@ Why?
|
|
14
11
|
The most common use case for Paperclip is to easily attach image files
|
15
12
|
to ActiveRecord models. Most of the time these image files will have
|
16
13
|
multiple styles and will need to be resized when they are created. This
|
17
|
-
is usually a pretty
|
18
|
-
background task.
|
14
|
+
is usually a pretty slow operation and should be handled in a background task.
|
19
15
|
|
20
16
|
I’m sure that everyone knows this, this gem just makes it easy to do.
|
21
17
|
|
@@ -24,28 +20,23 @@ Installation
|
|
24
20
|
|
25
21
|
Install the gem:
|
26
22
|
|
27
|
-
|
23
|
+
```
|
28
24
|
gem install delayed_paperclip
|
29
|
-
|
25
|
+
```
|
30
26
|
|
31
27
|
Or even better, add it to your Gemfile.
|
32
28
|
|
33
|
-
|
29
|
+
```
|
34
30
|
source "https://rubygems.org"
|
35
|
-
gem
|
36
|
-
|
37
|
-
|
38
|
-
Dependencies:
|
39
|
-
|
40
|
-
- Paperclip
|
41
|
-
- DJ, Resque or Sidekiq
|
31
|
+
gem "delayed_paperclip"
|
32
|
+
```
|
42
33
|
|
43
34
|
Usage
|
44
35
|
-----
|
45
36
|
|
46
37
|
In your model:
|
47
38
|
|
48
|
-
|
39
|
+
```ruby
|
49
40
|
class User < ActiveRecord::Base
|
50
41
|
has_attached_file :avatar, styles: {
|
51
42
|
medium: "300x300>",
|
@@ -54,57 +45,10 @@ class User < ActiveRecord::Base
|
|
54
45
|
|
55
46
|
process_in_background :avatar
|
56
47
|
end
|
57
|
-
|
48
|
+
```
|
58
49
|
|
59
50
|
Use your Paperclip attachment just like always in controllers and views.
|
60
51
|
|
61
|
-
To select between using Resque or Delayed::Job, just install and
|
62
|
-
configure your choice properly within your application, and
|
63
|
-
delayed_paperclip will do the rest. It will detect which library is
|
64
|
-
loaded and make a decision about which sort of job to enqueue at that
|
65
|
-
time.
|
66
|
-
|
67
|
-
### Active Job
|
68
|
-
|
69
|
-
[Active Job](https://github.com/rails/rails/tree/master/activejob) will take
|
70
|
-
precedence over any other installed library. Since it is installed as a
|
71
|
-
dependency with Rails 4.2.1 this might cause some confusion, so make sure that
|
72
|
-
Active Job is configured to use the correct queue adapter:
|
73
|
-
|
74
|
-
````ruby
|
75
|
-
module YourApp
|
76
|
-
class Application < Rails::Application
|
77
|
-
# Other code...
|
78
|
-
|
79
|
-
config.active_job.queue_adapter = :resque # Or :delayed_job or :sidekiq
|
80
|
-
end
|
81
|
-
end
|
82
|
-
````
|
83
|
-
|
84
|
-
### Resque
|
85
|
-
|
86
|
-
Resque adapter is deprecated. Please use ActiveJob one.
|
87
|
-
|
88
|
-
Make sure that you have [Resque](https://github.com/resque/resque) up and running. The jobs will be
|
89
|
-
dispatched to the <code>:paperclip</code> queue, so you can correctly
|
90
|
-
dispatch your worker. Configure resque and your workers exactly as you
|
91
|
-
would otherwise.
|
92
|
-
|
93
|
-
### DJ
|
94
|
-
|
95
|
-
DelayedJob adapter is deprecated. Please use ActiveJob one.
|
96
|
-
|
97
|
-
Just make sure that you have DJ up and running.
|
98
|
-
|
99
|
-
### Sidekiq
|
100
|
-
|
101
|
-
Sidekiq adapter is deprecated. Please use ActiveJob one.
|
102
|
-
|
103
|
-
Make sure that [Sidekiq](http://github.com/mperham/sidekiq) is running and listening to the
|
104
|
-
`paperclip` queue, either by adding it to your
|
105
|
-
`sidekiq.yml` config file under `- queues:` or by
|
106
|
-
passing the command line argument `-q paperclip` to Sidekiq.
|
107
|
-
|
108
52
|
### Displaying images during processing
|
109
53
|
|
110
54
|
In the default setup, when you upload an image for the first time and
|
@@ -117,7 +61,7 @@ To have the missing image url be outputted by paperclip while the image is being
|
|
117
61
|
`#{attachment_name}_processing` column to the specific model you want
|
118
62
|
to enable this feature for. This feature gracefully degrades and will not affect models which do not have the column added to them.
|
119
63
|
|
120
|
-
|
64
|
+
```ruby
|
121
65
|
class AddAvatarProcessingToUser < ActiveRecord::Migration
|
122
66
|
def self.up
|
123
67
|
add_column :users, :avatar_processing, :boolean
|
@@ -131,18 +75,19 @@ end
|
|
131
75
|
@user = User.new(avatar: File.new(...))
|
132
76
|
@user.save
|
133
77
|
@user.avatar.url #=> "/images/original/missing.png"
|
134
|
-
|
78
|
+
|
79
|
+
# Process job
|
135
80
|
|
136
81
|
@user.reload
|
137
82
|
@user.avatar.url #=> "/system/images/3/original/IMG_2772.JPG?1267562148"
|
138
|
-
|
83
|
+
```
|
139
84
|
|
140
85
|
#### Custom image for processing
|
141
86
|
|
142
87
|
This is useful if you have a difference between missing images and
|
143
88
|
images currently being processed.
|
144
89
|
|
145
|
-
|
90
|
+
```ruby
|
146
91
|
class User < ActiveRecord::Base
|
147
92
|
has_attached_file :avatar
|
148
93
|
|
@@ -152,17 +97,17 @@ end
|
|
152
97
|
@user = User.new(avatar: File.new(...))
|
153
98
|
@user.save
|
154
99
|
@user.avatar.url #=> "/images/original/processing.png"
|
155
|
-
|
100
|
+
|
101
|
+
# Process job
|
156
102
|
|
157
103
|
@user.reload
|
158
104
|
@user.avatar.url #=> "/system/images/3/original/IMG_2772.JPG?1267562148"
|
159
|
-
|
105
|
+
```
|
160
106
|
|
161
107
|
You can also define a custom logic for `processing_image_url`, for
|
162
|
-
example to display the original
|
163
|
-
picture while specific formats are being processed.
|
108
|
+
example to display the original picture while specific formats are being processed.
|
164
109
|
|
165
|
-
|
110
|
+
```ruby
|
166
111
|
class Item < ActiveRecord::Base
|
167
112
|
has_attached_file :photo
|
168
113
|
|
@@ -173,7 +118,7 @@ class Item < ActiveRecord::Base
|
|
173
118
|
options[:interpolator].interpolate(options[:url], photo, :original)
|
174
119
|
end
|
175
120
|
end
|
176
|
-
|
121
|
+
```
|
177
122
|
|
178
123
|
#### Have processing? status available, but construct image URLs as if delayed_paperclip wasn’t present
|
179
124
|
|
@@ -183,7 +128,7 @@ If you define the `#{attachment_name}_processing` column, but set the
|
|
183
128
|
Note especially the method #processing? which passes through the value
|
184
129
|
of the boolean created via migration.
|
185
130
|
|
186
|
-
|
131
|
+
```ruby
|
187
132
|
class User < ActiveRecord::Base
|
188
133
|
has_attached_file :avatar
|
189
134
|
|
@@ -194,36 +139,37 @@ end
|
|
194
139
|
@user.save
|
195
140
|
@user.avatar.url #=> "/system/images/3/original/IMG_2772.JPG?1267562148"
|
196
141
|
@user.avatar.processing? #=> true
|
197
|
-
|
142
|
+
|
143
|
+
# Process job
|
198
144
|
|
199
145
|
@user.reload
|
200
146
|
@user.avatar.url #=> "/system/images/3/original/IMG_2772.JPG?1267562148"
|
201
147
|
@user.avatar.processing? #=> false
|
202
|
-
|
148
|
+
```
|
203
149
|
|
204
150
|
#### Only process certain styles
|
205
151
|
|
206
152
|
This is useful if you don’t want the background job to reprocess all
|
207
153
|
styles.
|
208
154
|
|
209
|
-
|
155
|
+
```ruby
|
210
156
|
class User < ActiveRecord::Base
|
211
157
|
has_attached_file :avatar, styles: { small: "25x25#", medium: "50x50#" }
|
212
158
|
|
213
159
|
process_in_background :avatar, only_process: [:small]
|
214
160
|
end
|
215
|
-
|
161
|
+
```
|
216
162
|
|
217
163
|
Like paperclip, you could also supply a lambda function to define
|
218
164
|
`only_process` dynamically.
|
219
165
|
|
220
|
-
|
166
|
+
```ruby
|
221
167
|
class User < ActiveRecord::Base
|
222
168
|
has_attached_file :avatar, styles: { small: "25x25#", medium: "50x50#" }
|
223
169
|
|
224
170
|
process_in_background :avatar, only_process: lambda { |a| a.instance.small_supported? ? [:small, :large] : [:large] }
|
225
171
|
end
|
226
|
-
|
172
|
+
```
|
227
173
|
|
228
174
|
#### Split processing
|
229
175
|
|
@@ -231,21 +177,21 @@ You can process some styles in the foreground and some in the background
|
|
231
177
|
by setting `only_process` on both `has_attached_file` and
|
232
178
|
`process_in_background`.
|
233
179
|
|
234
|
-
|
180
|
+
```ruby
|
235
181
|
class User < ActiveRecord::Base
|
236
182
|
has_attached_file :avatar, styles: { small: "25x25#", medium: "50x50#" }, only_process: [:small]
|
237
183
|
|
238
184
|
process_in_background :avatar, only_process: [:medium]
|
239
185
|
end
|
240
|
-
|
186
|
+
```
|
241
187
|
|
242
188
|
#### Reprocess Without Delay
|
243
189
|
|
244
190
|
This is useful if you don’t want the background job. It accepts
|
245
|
-
individual styles
|
191
|
+
individual styles too. Take note, normal `reprocess!` does not accept styles as arguments anymore. It will delegate to DelayedPaperclip and
|
246
192
|
reprocess all styles.
|
247
193
|
|
248
|
-
|
194
|
+
```ruby
|
249
195
|
class User < ActiveRecord::Base
|
250
196
|
has_attached_file :avatar, styles: { small: "25x25#", medium: "50x50#" }
|
251
197
|
|
@@ -254,7 +200,7 @@ end
|
|
254
200
|
|
255
201
|
@user.avatar.url #=> "/system/images/3/original/IMG_2772.JPG?1267562148"
|
256
202
|
@user.avatar.reprocess_without_delay!(:medium)
|
257
|
-
|
203
|
+
```
|
258
204
|
|
259
205
|
#### Set queue name
|
260
206
|
|
@@ -278,7 +224,7 @@ defined by changing the DelayedPaperclip.options Hash, this can be useful for se
|
|
278
224
|
If you’re using Rails you can define a Hash with default options in
|
279
225
|
config/application.rb or in any of the config/environments/\*.rb files on `config.delayed_paperclip_defaults`, these will get merged into DelayedPaperclip.options as your Rails app boots. An example:
|
280
226
|
|
281
|
-
|
227
|
+
```ruby
|
282
228
|
module YourApp
|
283
229
|
class Application < Rails::Application
|
284
230
|
# Other code...
|
@@ -289,7 +235,7 @@ module YourApp
|
|
289
235
|
}
|
290
236
|
end
|
291
237
|
end
|
292
|
-
|
238
|
+
```
|
293
239
|
|
294
240
|
What if I’m not using images?
|
295
241
|
-----------------------------
|
@@ -301,7 +247,7 @@ Paperclip Post-processors are not working
|
|
301
247
|
-----------------------------------------
|
302
248
|
|
303
249
|
If you are using custom [post-processing processors](https://github.com/thoughtbot/paperclip#post-processing)
|
304
|
-
like this:
|
250
|
+
like this:
|
305
251
|
|
306
252
|
```ruby
|
307
253
|
# ...
|
@@ -311,14 +257,14 @@ process_in_background :avatar
|
|
311
257
|
|
312
258
|
def rotate!
|
313
259
|
# ...
|
314
|
-
avatar.reprocess!
|
260
|
+
avatar.reprocess!
|
315
261
|
# ...
|
316
262
|
end
|
317
263
|
|
318
264
|
# ...
|
319
265
|
```
|
320
266
|
|
321
|
-
...you may encounter an issue where your post-processors are ignored
|
267
|
+
...you may encounter an issue where your post-processors are ignored
|
322
268
|
([more info](https://github.com/jrgifford/delayed_paperclip/issues/171)).
|
323
269
|
In order to avoid this use `reprocess_without_delay!`
|
324
270
|
|
@@ -327,7 +273,7 @@ In order to avoid this use `reprocess_without_delay!`
|
|
327
273
|
|
328
274
|
def rotate!
|
329
275
|
# ...
|
330
|
-
avatar.reprocess_without_delay!
|
276
|
+
avatar.reprocess_without_delay!
|
331
277
|
# ...
|
332
278
|
end
|
333
279
|
|
@@ -344,7 +290,7 @@ Contributing
|
|
344
290
|
|
345
291
|
Checkout out [CONTRIBUTING](https://github.com/jrgifford/delayed_paperclip/blob/master/CONTRIBUTING). Run specs with:
|
346
292
|
|
347
|
-
|
293
|
+
```
|
348
294
|
# Rspec on all versions
|
349
295
|
bundle exec appraisal install
|
350
296
|
bundle exec appraisal rake
|
@@ -354,4 +300,4 @@ bundle exec rake
|
|
354
300
|
|
355
301
|
# Rspec on specific rails version
|
356
302
|
bundle exec appraisal 5.0 rake
|
357
|
-
|
303
|
+
```
|
data/delayed_paperclip.gemspec
CHANGED
@@ -6,25 +6,24 @@ Gem::Specification.new do |s|
|
|
6
6
|
s.version = DelayedPaperclip::VERSION
|
7
7
|
|
8
8
|
s.authors = ["Jesse Storimer", "Bert Goethals", "James Gifford", "Scott Carleton"]
|
9
|
-
s.summary = %q{Process your Paperclip attachments in the background
|
10
|
-
s.description = %q{Process your Paperclip attachments in the background with
|
9
|
+
s.summary = %q{Process your Paperclip attachments in the background}
|
10
|
+
s.description = %q{Process your Paperclip attachments in the background with ActiveJob}
|
11
11
|
s.email = %w{james@jamesrgifford.com scott@artsicle.com}
|
12
|
-
s.homepage = %q{
|
12
|
+
s.homepage = %q{https://github.com/jrgifford/delayed_paperclip}
|
13
|
+
|
14
|
+
s.required_ruby_version = ">= 2.0.0"
|
13
15
|
|
14
16
|
s.add_dependency 'paperclip', [">= 3.3"]
|
17
|
+
s.add_dependency 'activejob', ">= 4.2"
|
15
18
|
|
16
19
|
s.add_development_dependency 'mocha'
|
17
20
|
s.add_development_dependency "rspec", '< 3.0'
|
18
21
|
s.add_development_dependency 'sqlite3'
|
19
|
-
s.add_development_dependency 'delayed_job'
|
20
|
-
s.add_development_dependency 'delayed_job_active_record'
|
21
|
-
s.add_development_dependency 'resque'
|
22
|
-
s.add_development_dependency 'sidekiq', '>= 4.0'
|
23
22
|
s.add_development_dependency 'appraisal'
|
24
23
|
s.add_development_dependency 'rake', '~> 10.5.0'
|
25
24
|
s.add_development_dependency 'bundler'
|
25
|
+
s.add_development_dependency 'activerecord'
|
26
26
|
s.add_development_dependency 'railties'
|
27
|
-
s.add_development_dependency 'fakeredis'
|
28
27
|
|
29
28
|
s.files = `git ls-files`.split("\n")
|
30
29
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/gemfiles/5.0.gemfile
CHANGED
data/lib/delayed_paperclip.rb
CHANGED
@@ -1,28 +1,19 @@
|
|
1
|
-
require 'delayed_paperclip/
|
1
|
+
require 'delayed_paperclip/process_job'
|
2
2
|
require 'delayed_paperclip/attachment'
|
3
3
|
require 'delayed_paperclip/url_generator'
|
4
|
-
require 'delayed_paperclip/railtie'
|
4
|
+
require 'delayed_paperclip/railtie' if defined?(Rails)
|
5
5
|
|
6
6
|
module DelayedPaperclip
|
7
|
-
|
8
7
|
class << self
|
9
|
-
|
10
8
|
def options
|
11
9
|
@options ||= {
|
12
|
-
:background_job_class =>
|
10
|
+
:background_job_class => DelayedPaperclip::ProcessJob,
|
13
11
|
:url_with_processing => true,
|
14
12
|
:processing_image_url => nil,
|
15
13
|
:queue => "paperclip"
|
16
14
|
}
|
17
15
|
end
|
18
16
|
|
19
|
-
def detect_background_task
|
20
|
-
return DelayedPaperclip::Jobs::ActiveJob if defined? ::ActiveJob::Base
|
21
|
-
return DelayedPaperclip::Jobs::DelayedJob if defined? ::Delayed::Job
|
22
|
-
return DelayedPaperclip::Jobs::Resque if defined? ::Resque
|
23
|
-
return DelayedPaperclip::Jobs::Sidekiq if defined? ::Sidekiq
|
24
|
-
end
|
25
|
-
|
26
17
|
def processor
|
27
18
|
options[:background_job_class]
|
28
19
|
end
|
@@ -120,6 +111,5 @@ module DelayedPaperclip
|
|
120
111
|
@_enqued_for_processing ||= []
|
121
112
|
@_enqued_for_processing << name
|
122
113
|
end
|
123
|
-
|
124
114
|
end
|
125
115
|
end
|