paperclip 5.2.1 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 4ebdb8da166672a655196d2eb60fbe6e399174db
4
- data.tar.gz: 5182c61f74ed23c5f51ed7bb4fce43d50bf4a979
3
+ metadata.gz: 823fa4ed80655c6ae50b1d241142e5afb3ed9e22
4
+ data.tar.gz: bb9ceacd62b0e1f6167f6d0c6392a696b788ca73
5
5
  SHA512:
6
- metadata.gz: eff0177912c71bb236706f5776ab3bd3ec47f33d5c62f1b2bee5e455c64ddc46b7e16dd4e26a1026d34b570a43dc3c09d337104991e34d3b9eb82f37cb278834
7
- data.tar.gz: 3713cc0cd0c873bd3c4bb6f32845d9cfa9242545e417ed52cdb50a1ca99e425d5dfd49324e4f40560626fa787f8abfff1b450707ce1b82638661e3d58335b122
6
+ metadata.gz: 4e5b7a64e9db33be68a6a5b8467a8df6c074d16990e51c93bea5a070896b2ce3905ccdc0cad6323148229f3a03209974791a90234d948bb65f7f85868cab35f2
7
+ data.tar.gz: 376768f292bdc225375aee8dce8c22b58e22904dabbf5044a7a2383b760b362e7a39830e9c63091e5ff1774b49ecd6f1dfbfdb293f198c66f80d3d8bb1fe1987
data/NEWS CHANGED
@@ -1,3 +1,17 @@
1
+ 5.3.0 (2018-03-09):
2
+
3
+ * Improvement: Use `FactoryBot` instead of `FactoryGirl` (https://github.com/thoughtbot/paperclip/pull/2501)
4
+ * Improvement: README updates (https://github.com/thoughtbot/paperclip/pull/2411, https://github.com/thoughtbot/paperclip/pull/2433, https://github.com/thoughtbot/paperclip/pull/2374, https://github.com/thoughtbot/paperclip/pull/2417, https://github.com/thoughtbot/paperclip/pull/2536)
5
+ * Improvement: Remove Ruby 2.4 deprecation warning (https://github.com/thoughtbot/paperclip/pull/2401)
6
+ * Improvement: Rails 5 migration compatibility (https://github.com/thoughtbot/paperclip/pull/2470)
7
+ * Improvement: Documentation around post processing (https://github.com/thoughtbot/paperclip/pull/2381)
8
+ * Improvement: S3 hostname example documentation (https://github.com/thoughtbot/paperclip/pull/2379)
9
+ * Bugfix: Allow paperclip to load in IRB (https://github.com/thoughtbot/paperclip/pull/2369)
10
+ * Bugfix: MIME type detection (https://github.com/thoughtbot/paperclip/issues/2527)
11
+ * Bugfix: Bad tempfile state after symlink failure (https://github.com/thoughtbot/paperclip/pull/2540)
12
+ * Bugfix: Rewind file after Fog bucket creation (https://github.com/thoughtbot/paperclip/pull/2572)
13
+ * Improvement: Use `Terrapin` instead of `Cocaine` (https://github.com/thoughtbot/paperclip/pull/2553)
14
+
1
15
  5.2.1 (2018-01-25):
2
16
 
3
17
  * Bugfix: Fix copying files on Windows. (#2532)
@@ -36,6 +50,7 @@
36
50
  * Improvement: S3 storage option `:s3_prefixes_in_alias`. (#2287)
37
51
  * Improvement: Fog option `:fog_public` can be a lambda. (#2302)
38
52
  * Improvement: One fewer warning on JRuby. (#2352)
53
+ * Ruby 2.4.0 compatibility (doesn't use Fixnum anymore)
39
54
 
40
55
  5.1.0 (2016-08-19):
41
56
 
data/README.md CHANGED
@@ -87,7 +87,7 @@ Requirements
87
87
  ### Ruby and Rails
88
88
 
89
89
  Paperclip now requires Ruby version **>= 2.1** and Rails version **>= 4.2**
90
- (only if you're going to use Paperclip with Ruby on Rails.)
90
+ (only if you're going to use Paperclip with Ruby on Rails).
91
91
 
92
92
  ### Image Processor
93
93
 
@@ -105,7 +105,7 @@ In development mode, you might add this line to `config/environments/development
105
105
  Paperclip.options[:command_path] = "/usr/local/bin/"
106
106
  ```
107
107
 
108
- If you're on Mac OS X, you'll want to run the following with [Homebrew] (http://www.brew.sh):
108
+ If you're on Mac OS X, you'll want to run the following with [Homebrew](http://www.brew.sh):
109
109
 
110
110
  brew install imagemagick
111
111
 
@@ -167,7 +167,7 @@ Paperclip is distributed as a gem, which is how it should be used in your app.
167
167
  Include the gem in your Gemfile:
168
168
 
169
169
  ```ruby
170
- gem "paperclip", "~> 5.0.0"
170
+ gem "paperclip", "~> 5.2.1"
171
171
  ```
172
172
 
173
173
  Or, if you want to get the latest, you can get master from the main paperclip repository:
@@ -206,6 +206,8 @@ end
206
206
 
207
207
  ### Migrations
208
208
 
209
+
210
+ Assuming you have a `users` table, add an `avatar` column to the `users` table:
209
211
  ```ruby
210
212
  class AddAvatarColumnsToUsers < ActiveRecord::Migration
211
213
  def up
@@ -221,10 +223,11 @@ end
221
223
  (Or you can use the Rails migration generator: `rails generate paperclip user avatar`)
222
224
 
223
225
  ### Edit and New Views
224
-
226
+ Make sure you have corresponding methods in your controller:
225
227
  ```erb
226
228
  <%= form_for @user, url: users_path, html: { multipart: true } do |form| %>
227
229
  <%= form.file_field :avatar %>
230
+ <%= form.submit %>
228
231
  <% end %>
229
232
  ```
230
233
 
@@ -233,6 +236,7 @@ end
233
236
  ```erb
234
237
  <%= simple_form_for @user, url: users_path do |form| %>
235
238
  <%= form.input :avatar, as: :file %>
239
+ <%= form.submit %>
236
240
  <% end %>
237
241
  ```
238
242
 
@@ -240,7 +244,7 @@ end
240
244
 
241
245
  ```ruby
242
246
  def create
243
- @user = User.create( user_params )
247
+ @user = User.create(user_params)
244
248
  end
245
249
 
246
250
  private
@@ -254,7 +258,7 @@ end
254
258
  ```
255
259
 
256
260
  ### View Helpers
257
-
261
+ Add these to the view where you want your images displayed:
258
262
  ```erb
259
263
  <%= image_tag @user.avatar.url %>
260
264
  <%= image_tag @user.avatar.url(:medium) %>
@@ -347,7 +351,7 @@ called with valid attachments._
347
351
 
348
352
  ```ruby
349
353
  class Message < ActiveRecord::Base
350
- has_attached_file :asset, styles: {thumb: "100x100#"}
354
+ has_attached_file :asset, styles: { thumb: "100x100#" }
351
355
 
352
356
  before_post_process :skip_for_audio
353
357
 
@@ -363,7 +367,7 @@ afterwards, then assign manually:
363
367
 
364
368
  ```ruby
365
369
  class Book < ActiveRecord::Base
366
- has_attached_file :document, styles: {thumbnail: "60x60#"}
370
+ has_attached_file :document, styles: { thumbnail: "60x60#" }
367
371
  validates_attachment :document, content_type: { content_type: "application/pdf" }
368
372
  validates_something_else # Other validations that conflict with Paperclip's
369
373
  end
@@ -656,6 +660,14 @@ JPGs will remain JPGs). `Paperclip::Thumbnail` uses ImageMagick to process
656
660
  images; [ImageMagick's geometry documentation](http://www.imagemagick.org/script/command-line-processing.php#geometry)
657
661
  has more information on the accepted style formats.
658
662
 
663
+ For more fine-grained control of the conversion process, `source_file_options` and `convert_options` can be used to pass flags and settings directly to ImageMagick's powerful Convert tool, [documented here](https://www.imagemagick.org/script/convert.php). For example:
664
+
665
+ ```ruby
666
+ has_attached_file :image, styles: { regular: ['800x800>', :png]},
667
+ source_file_options: { regular: "-density 96 -depth 8 -quality 85" },
668
+ convert_options: { regular: "-posterize 3"}
669
+ ```
670
+
659
671
  ImageMagick supports a number of environment variables for controlling its resource limits. For example, you can enforce memory or execution time limits by setting the following variables in your application's process environment:
660
672
 
661
673
  * `MAGICK_MEMORY_LIMIT=128MiB`
@@ -738,7 +750,7 @@ called with valid attachments._
738
750
 
739
751
  ```ruby
740
752
  class Message < ActiveRecord::Base
741
- has_attached_file :asset, styles: {thumb: "100x100#"}
753
+ has_attached_file :asset, styles: { thumb: "100x100#" }
742
754
 
743
755
  before_post_process :skip_for_audio
744
756
 
@@ -983,7 +995,7 @@ similar mechanism for whichever parallel testing library you use.
983
995
 
984
996
  **Integration Tests**
985
997
 
986
- Using integration tests with FactoryGirl may save multiple copies of
998
+ Using integration tests with FactoryBot may save multiple copies of
987
999
  your test files within the app. To avoid this, specify a custom path in
988
1000
  the `config/environments/test.rb` like so:
989
1001
 
@@ -1000,11 +1012,11 @@ config.after(:suite) do
1000
1012
  end
1001
1013
  ```
1002
1014
 
1003
- **Example of test configuration with Factory Girl**
1015
+ **Example of test configuration with Factory Bot**
1004
1016
 
1005
1017
 
1006
1018
  ```ruby
1007
- FactoryGirl.define do
1019
+ FactoryBot.define do
1008
1020
  factory :user do
1009
1021
  avatar { File.new("#{Rails.root}/spec/support/fixtures/image.jpg") }
1010
1022
  end
@@ -13,7 +13,9 @@ class PaperclipGenerator < ActiveRecord::Generators::Base
13
13
  end
14
14
 
15
15
  def generate_migration
16
- migration_template "paperclip_migration.rb.erb", "db/migrate/#{migration_file_name}"
16
+ migration_template("paperclip_migration.rb.erb",
17
+ "db/migrate/#{migration_file_name}",
18
+ migration_version: migration_version)
17
19
  end
18
20
 
19
21
  def migration_name
@@ -27,4 +29,10 @@ class PaperclipGenerator < ActiveRecord::Generators::Base
27
29
  def migration_class_name
28
30
  migration_name.camelize
29
31
  end
32
+
33
+ def migration_version
34
+ if Rails.version.start_with? "5"
35
+ "[#{Rails::VERSION::MAJOR}.#{Rails::VERSION::MINOR}]"
36
+ end
37
+ end
30
38
  end
@@ -1,4 +1,4 @@
1
- class <%= migration_class_name %> < ActiveRecord::Migration
1
+ class <%= migration_class_name %> < ActiveRecord::Migration<%= migration_version %>
2
2
  def self.up
3
3
  change_table :<%= table_name %> do |t|
4
4
  <% attachment_names.each do |attachment| -%>
@@ -67,7 +67,7 @@ end
67
67
  require 'mimemagic'
68
68
  require 'mimemagic/overlay'
69
69
  require 'logger'
70
- require 'cocaine'
70
+ require 'terrapin'
71
71
 
72
72
  require 'paperclip/railtie' if defined?(Rails::Railtie)
73
73
 
@@ -16,7 +16,7 @@ module Paperclip
16
16
  # On BSDs, `file` doesn't give a result code of 1 if the file doesn't exist.
17
17
  type = begin
18
18
  Paperclip.run("file", "-b --mime :file", file: @filename)
19
- rescue Cocaine::CommandLineError => e
19
+ rescue Terrapin::CommandLineError => e
20
20
  Paperclip.log("Error while determining content type: #{e}")
21
21
  SENSIBLE_DEFAULT
22
22
  end
@@ -24,9 +24,9 @@ module Paperclip
24
24
  :swallow_stderr => true
25
25
  }
26
26
  )
27
- rescue Cocaine::ExitStatusError
27
+ rescue Terrapin::ExitStatusError
28
28
  ""
29
- rescue Cocaine::CommandNotFoundError => e
29
+ rescue Terrapin::CommandNotFoundError => e
30
30
  raise_because_imagemagick_missing
31
31
  end
32
32
  end
@@ -27,12 +27,12 @@ module Paperclip
27
27
  #
28
28
  def run(cmd, arguments = "", interpolation_values = {}, local_options = {})
29
29
  command_path = options[:command_path]
30
- cocaine_path_array = Cocaine::CommandLine.path.try(:split, Cocaine::OS.path_separator)
31
- Cocaine::CommandLine.path = [cocaine_path_array, command_path].flatten.compact.uniq
30
+ terrapin_path_array = Terrapin::CommandLine.path.try(:split, Terrapin::OS.path_separator)
31
+ Terrapin::CommandLine.path = [terrapin_path_array, command_path].flatten.compact.uniq
32
32
  if logging? && (options[:log_command] || local_options[:log_command])
33
33
  local_options = local_options.merge(:logger => logger)
34
34
  end
35
- Cocaine::CommandLine.new(cmd, arguments, local_options).run(interpolation_values)
35
+ Terrapin::CommandLine.new(cmd, arguments, local_options).run(interpolation_values)
36
36
  end
37
37
 
38
38
  # Find all instances of the given Active Record model +klass+ with attachment +name+.
@@ -62,8 +62,12 @@ module Paperclip
62
62
  @destination.close
63
63
  @destination.open.binmode
64
64
  rescue Errno::EXDEV, Errno::EPERM, Errno::ENOENT, Errno::EEXIST => e
65
- Paperclip.log("Link failed with #{e.message}; copying link #{src} to #{dest}")
65
+ Paperclip.log(
66
+ "Link failed with #{e.message}; copying link #{src} to #{dest}"
67
+ )
66
68
  FileUtils.cp(src, dest)
69
+ @destination.close
70
+ @destination.open.binmode
67
71
  end
68
72
  end
69
73
  end
@@ -72,8 +72,9 @@ module Paperclip
72
72
 
73
73
  def type_from_file_command
74
74
  begin
75
- Paperclip.run("file", "-b --mime :file", :file => @file.path).split(/[:;]\s+/).first
76
- rescue Cocaine::CommandLineError
75
+ Paperclip.run("file", "-b --mime :file", file: @file.path).
76
+ split(/[:;\s]+/).first
77
+ rescue Terrapin::CommandLineError
77
78
  ""
78
79
  end
79
80
  end
@@ -117,6 +117,7 @@ module Paperclip
117
117
  raise if retried
118
118
  retried = true
119
119
  directory.save
120
+ file.rewind
120
121
  retry
121
122
  ensure
122
123
  file.rewind
@@ -184,7 +185,7 @@ module Paperclip
184
185
  private
185
186
 
186
187
  def convert_time(time)
187
- if time.is_a?(Fixnum)
188
+ if time.is_a?(Integer)
188
189
  time = Time.now + time
189
190
  end
190
191
  time
@@ -94,7 +94,8 @@ module Paperclip
94
94
  # to interpolate. Keys should be unique, like filenames, and despite the fact that
95
95
  # S3 (strictly speaking) does not support directories, you can still use a / to
96
96
  # separate parts of your file name.
97
- # * +s3_host_name+: If you are using your bucket in Tokyo region etc, write host_name.
97
+ # * +s3_host_name+: If you are using your bucket in Tokyo region
98
+ # etc, write host_name (e.g., 's3-ap-northeast-1.amazonaws.com').
98
99
  # * +s3_region+: For aws-sdk v2, s3_region is required.
99
100
  # * +s3_metadata+: These key/value pairs will be stored with the
100
101
  # object. This option works by prefixing each key with
@@ -84,9 +84,9 @@ module Paperclip
84
84
  source: "#{File.expand_path(src.path)}#{frame}",
85
85
  dest: File.expand_path(dst.path),
86
86
  )
87
- rescue Cocaine::ExitStatusError => e
87
+ rescue Terrapin::ExitStatusError => e
88
88
  raise Paperclip::Error, "There was an error processing the thumbnail for #{@basename}" if @whiny
89
- rescue Cocaine::CommandNotFoundError => e
89
+ rescue Terrapin::CommandNotFoundError => e
90
90
  raise Paperclip::Errors::CommandNotFoundError.new("Could not run the `convert` command. Please install ImageMagick.")
91
91
  end
92
92
 
@@ -122,9 +122,9 @@ module Paperclip
122
122
  @identified_as_animated = ANIMATED_FORMATS.include? identify("-format %m :file", :file => "#{@file.path}[0]").to_s.downcase.strip
123
123
  end
124
124
  @identified_as_animated
125
- rescue Cocaine::ExitStatusError => e
125
+ rescue Terrapin::ExitStatusError => e
126
126
  raise Paperclip::Error, "There was an error running `identify` for #{@basename}" if @whiny
127
- rescue Cocaine::CommandNotFoundError => e
127
+ rescue Terrapin::CommandNotFoundError => e
128
128
  raise Paperclip::Errors::CommandNotFoundError.new("Could not run the `identify` command. Please install ImageMagick.")
129
129
  end
130
130
  end
@@ -1,4 +1,5 @@
1
1
  require 'uri'
2
+ require 'active_support/core_ext/module/delegation'
2
3
 
3
4
  module Paperclip
4
5
  class UrlGenerator
@@ -1,5 +1,5 @@
1
1
  module Paperclip
2
2
  unless defined?(Paperclip::VERSION)
3
- VERSION = "5.2.1".freeze
3
+ VERSION = "5.3.0".freeze
4
4
  end
5
5
  end
@@ -26,7 +26,7 @@ Gem::Specification.new do |s|
26
26
 
27
27
  s.add_dependency('activemodel', '>= 4.2.0')
28
28
  s.add_dependency('activesupport', '>= 4.2.0')
29
- s.add_dependency('cocaine', '~> 0.5.5')
29
+ s.add_dependency('terrapin', '~> 0.6.0')
30
30
  s.add_dependency('mime-types')
31
31
  s.add_dependency('mimemagic', '~> 0.3.0')
32
32
 
@@ -41,7 +41,7 @@ describe Paperclip::ContentTypeDetector do
41
41
  end
42
42
 
43
43
  it 'returns a sensible default when the file command is missing' do
44
- Paperclip.stubs(:run).raises(Cocaine::CommandLineError.new)
44
+ Paperclip.stubs(:run).raises(Terrapin::CommandLineError.new)
45
45
  @filename = "/path/to/something"
46
46
  assert_equal "application/octet-stream", Paperclip::ContentTypeDetector.new(@filename).detect
47
47
  end
@@ -12,7 +12,7 @@ describe Paperclip::FileCommandContentTypeDetector do
12
12
  end
13
13
 
14
14
  it 'returns a sensible default when the file command is missing' do
15
- Paperclip.stubs(:run).raises(Cocaine::CommandLineError.new)
15
+ Paperclip.stubs(:run).raises(Terrapin::CommandLineError.new)
16
16
  @filename = "/path/to/something"
17
17
  assert_equal "application/octet-stream",
18
18
  Paperclip::FileCommandContentTypeDetector.new(@filename).detect
@@ -23,4 +23,18 @@ describe Paperclip::FileCommandContentTypeDetector do
23
23
  assert_equal "application/octet-stream",
24
24
  Paperclip::FileCommandContentTypeDetector.new("windows").detect
25
25
  end
26
+
27
+ context "#type_from_file_command" do
28
+ let(:detector) { Paperclip::FileCommandContentTypeDetector.new("html") }
29
+
30
+ it "does work with the output of old versions of file" do
31
+ Paperclip.stubs(:run).returns("text/html charset=us-ascii")
32
+ expect(detector.detect).to eq("text/html")
33
+ end
34
+
35
+ it "does work with the output of new versions of file" do
36
+ Paperclip.stubs(:run).returns("text/html; charset=us-ascii")
37
+ expect(detector.detect).to eq("text/html")
38
+ end
39
+ end
26
40
  end
@@ -98,4 +98,35 @@ describe Paperclip::AbstractAdapter do
98
98
  expect { subject.original_filename = nil }.not_to raise_error
99
99
  end
100
100
  end
101
+
102
+ context "#link_or_copy_file" do
103
+ class TestLinkOrCopyAdapter < Paperclip::AbstractAdapter
104
+ public :copy_to_tempfile, :destination
105
+ end
106
+
107
+ subject { TestLinkOrCopyAdapter.new(nil) }
108
+ let(:body) { "body" }
109
+
110
+ let(:file) do
111
+ t = Tempfile.new("destination")
112
+ t.print(body)
113
+ t.rewind
114
+ t
115
+ end
116
+
117
+ after do
118
+ file.close
119
+ file.unlink
120
+ end
121
+
122
+ it "should be able to read the file" do
123
+ expect(subject.copy_to_tempfile(file).read).to eq(body)
124
+ end
125
+
126
+ it "should be able to reopen the file after symlink has failed" do
127
+ FileUtils.expects(:ln).raises(Errno::EXDEV)
128
+
129
+ expect(subject.copy_to_tempfile(file).read).to eq(body)
130
+ end
131
+ end
101
132
  end
@@ -76,4 +76,19 @@ describe Paperclip::MediaTypeSpoofDetector do
76
76
  Paperclip.options[:content_type_mappings] = {}
77
77
  end
78
78
  end
79
+
80
+ context "#type_from_file_command" do
81
+ let(:file) { File.new(fixture_file("empty.html")) }
82
+ let(:detector) { Paperclip::MediaTypeSpoofDetector.new(file, "html", "") }
83
+
84
+ it "does work with the output of old versions of file" do
85
+ Paperclip.stubs(:run).returns("text/html charset=us-ascii")
86
+ expect(detector.send(:type_from_file_command)).to eq("text/html")
87
+ end
88
+
89
+ it "does work with the output of new versions of file" do
90
+ Paperclip.stubs(:run).returns("text/html; charset=us-ascii")
91
+ expect(detector.send(:type_from_file_command)).to eq("text/html")
92
+ end
93
+ end
79
94
  end
@@ -4,40 +4,40 @@ describe Paperclip do
4
4
  context ".run" do
5
5
  before do
6
6
  Paperclip.options[:log_command] = false
7
- Cocaine::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
8
- @original_command_line_path = Cocaine::CommandLine.path
7
+ Terrapin::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
8
+ @original_command_line_path = Terrapin::CommandLine.path
9
9
  end
10
10
 
11
11
  after do
12
12
  Paperclip.options[:log_command] = true
13
- Cocaine::CommandLine.path = @original_command_line_path
13
+ Terrapin::CommandLine.path = @original_command_line_path
14
14
  end
15
15
 
16
- it "runs the command with Cocaine" do
16
+ it "runs the command with Terrapin" do
17
17
  Paperclip.run("convert", "stuff")
18
18
  end
19
19
 
20
- it "saves Cocaine::CommandLine.path that set before" do
21
- Cocaine::CommandLine.path = "/opt/my_app/bin"
20
+ it "saves Terrapin::CommandLine.path that set before" do
21
+ Terrapin::CommandLine.path = "/opt/my_app/bin"
22
22
  Paperclip.run("convert", "stuff")
23
- expect(Cocaine::CommandLine.path).to match("/opt/my_app/bin")
23
+ expect(Terrapin::CommandLine.path).to match("/opt/my_app/bin")
24
24
  end
25
25
 
26
- it "does not duplicate Cocaine::CommandLine.path on multiple runs" do
27
- Cocaine::CommandLine.expects(:new).with("convert", "more_stuff", {}).returns(stub(:run))
28
- Cocaine::CommandLine.path = nil
26
+ it "does not duplicate Terrapin::CommandLine.path on multiple runs" do
27
+ Terrapin::CommandLine.expects(:new).with("convert", "more_stuff", {}).returns(stub(:run))
28
+ Terrapin::CommandLine.path = nil
29
29
  Paperclip.options[:command_path] = "/opt/my_app/bin"
30
30
  Paperclip.run("convert", "stuff")
31
31
  Paperclip.run("convert", "more_stuff")
32
32
 
33
33
  cmd_path = Paperclip.options[:command_path]
34
- assert_equal 1, Cocaine::CommandLine.path.scan(cmd_path).count
34
+ assert_equal 1, Terrapin::CommandLine.path.scan(cmd_path).count
35
35
  end
36
36
  end
37
37
 
38
38
  it 'does not raise errors when doing a lot of running' do
39
39
  Paperclip.options[:command_path] = ["/usr/local/bin"] * 1024
40
- Cocaine::CommandLine.path = "/something/else"
40
+ Terrapin::CommandLine.path = "/something/else"
41
41
  100.times do |x|
42
42
  Paperclip.run("echo", x.to_s)
43
43
  end
@@ -63,7 +63,7 @@ describe Paperclip do
63
63
  context "Calling Paperclip.run with a logger" do
64
64
  it "passes the defined logger if :log_command is set" do
65
65
  Paperclip.options[:log_command] = true
66
- Cocaine::CommandLine.expects(:new).with("convert", "stuff", logger: Paperclip.logger).returns(stub(:run))
66
+ Terrapin::CommandLine.expects(:new).with("convert", "stuff", logger: Paperclip.logger).returns(stub(:run))
67
67
  Paperclip.run("convert", "stuff")
68
68
  end
69
69
  end
@@ -9,17 +9,17 @@ describe Paperclip::Processor do
9
9
  end
10
10
 
11
11
  context "Calling #convert" do
12
- it "runs the convert command with Cocaine" do
12
+ it "runs the convert command with Terrapin" do
13
13
  Paperclip.options[:log_command] = false
14
- Cocaine::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
14
+ Terrapin::CommandLine.expects(:new).with("convert", "stuff", {}).returns(stub(:run))
15
15
  Paperclip::Processor.new('filename').convert("stuff")
16
16
  end
17
17
  end
18
18
 
19
19
  context "Calling #identify" do
20
- it "runs the identify command with Cocaine" do
20
+ it "runs the identify command with Terrapin" do
21
21
  Paperclip.options[:log_command] = false
22
- Cocaine::CommandLine.expects(:new).with("identify", "stuff", {}).returns(stub(:run))
22
+ Terrapin::CommandLine.expects(:new).with("identify", "stuff", {}).returns(stub(:run))
23
23
  Paperclip::Processor.new('filename').identify("stuff")
24
24
  end
25
25
  end
@@ -206,6 +206,11 @@ describe Paperclip::Storage::Fog do
206
206
  assert @dummy.save
207
207
  assert @connection.directories.get(@fog_directory)
208
208
  end
209
+
210
+ it "sucessfully rewinds the file during bucket creation" do
211
+ assert @dummy.save
212
+ expect(Paperclip.io_adapters.for(@dummy.avatar).read.length).to be > 0
213
+ end
209
214
  end
210
215
 
211
216
  context "with a bucket" do
@@ -48,7 +48,7 @@ describe Paperclip::Thumbnail do
48
48
  it "lets us know when a command isn't found versus a processing error" do
49
49
  old_path = ENV['PATH']
50
50
  begin
51
- Cocaine::CommandLine.path = ''
51
+ Terrapin::CommandLine.path = ''
52
52
  Paperclip.options[:command_path] = ''
53
53
  ENV['PATH'] = ''
54
54
  assert_raises(Paperclip::Errors::CommandNotFoundError) do
@@ -102,7 +102,7 @@ describe Paperclip::Thumbnail do
102
102
 
103
103
  output_file = thumb.make
104
104
 
105
- command = Cocaine::CommandLine.new("identify", "-format %wx%h :file")
105
+ command = Terrapin::CommandLine.new("identify", "-format %wx%h :file")
106
106
  assert_equal "50x50", command.run(file: output_file.path).strip
107
107
  end
108
108
 
@@ -189,7 +189,7 @@ describe Paperclip::Thumbnail do
189
189
  it "lets us know when a command isn't found versus a processing error" do
190
190
  old_path = ENV['PATH']
191
191
  begin
192
- Cocaine::CommandLine.path = ''
192
+ Terrapin::CommandLine.path = ''
193
193
  Paperclip.options[:command_path] = ''
194
194
  ENV['PATH'] = ''
195
195
  assert_raises(Paperclip::Errors::CommandNotFoundError) do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: paperclip
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.2.1
4
+ version: 5.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jon Yurek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-01-25 00:00:00.000000000 Z
11
+ date: 2018-03-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -39,19 +39,19 @@ dependencies:
39
39
  - !ruby/object:Gem::Version
40
40
  version: 4.2.0
41
41
  - !ruby/object:Gem::Dependency
42
- name: cocaine
42
+ name: terrapin
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 0.5.5
47
+ version: 0.6.0
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 0.5.5
54
+ version: 0.6.0
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: mime-types
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -611,8 +611,113 @@ required_rubygems_version: !ruby/object:Gem::Requirement
611
611
  requirements:
612
612
  - ImageMagick
613
613
  rubyforge_project:
614
- rubygems_version: 2.6.13
614
+ rubygems_version: 2.6.11
615
615
  signing_key:
616
616
  specification_version: 4
617
617
  summary: File attachments as attributes for ActiveRecord
618
- test_files: []
618
+ test_files:
619
+ - features/basic_integration.feature
620
+ - features/migration.feature
621
+ - features/rake_tasks.feature
622
+ - features/step_definitions/attachment_steps.rb
623
+ - features/step_definitions/html_steps.rb
624
+ - features/step_definitions/rails_steps.rb
625
+ - features/step_definitions/s3_steps.rb
626
+ - features/step_definitions/web_steps.rb
627
+ - features/support/env.rb
628
+ - features/support/fakeweb.rb
629
+ - features/support/file_helpers.rb
630
+ - features/support/fixtures/boot_config.txt
631
+ - features/support/fixtures/gemfile.txt
632
+ - features/support/fixtures/preinitializer.txt
633
+ - features/support/paths.rb
634
+ - features/support/rails.rb
635
+ - features/support/selectors.rb
636
+ - spec/database.yml
637
+ - spec/paperclip/attachment_definitions_spec.rb
638
+ - spec/paperclip/attachment_processing_spec.rb
639
+ - spec/paperclip/attachment_registry_spec.rb
640
+ - spec/paperclip/attachment_spec.rb
641
+ - spec/paperclip/content_type_detector_spec.rb
642
+ - spec/paperclip/file_command_content_type_detector_spec.rb
643
+ - spec/paperclip/filename_cleaner_spec.rb
644
+ - spec/paperclip/geometry_detector_spec.rb
645
+ - spec/paperclip/geometry_parser_spec.rb
646
+ - spec/paperclip/geometry_spec.rb
647
+ - spec/paperclip/glue_spec.rb
648
+ - spec/paperclip/has_attached_file_spec.rb
649
+ - spec/paperclip/integration_spec.rb
650
+ - spec/paperclip/interpolations_spec.rb
651
+ - spec/paperclip/io_adapters/abstract_adapter_spec.rb
652
+ - spec/paperclip/io_adapters/attachment_adapter_spec.rb
653
+ - spec/paperclip/io_adapters/data_uri_adapter_spec.rb
654
+ - spec/paperclip/io_adapters/empty_string_adapter_spec.rb
655
+ - spec/paperclip/io_adapters/file_adapter_spec.rb
656
+ - spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb
657
+ - spec/paperclip/io_adapters/identity_adapter_spec.rb
658
+ - spec/paperclip/io_adapters/nil_adapter_spec.rb
659
+ - spec/paperclip/io_adapters/registry_spec.rb
660
+ - spec/paperclip/io_adapters/stringio_adapter_spec.rb
661
+ - spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb
662
+ - spec/paperclip/io_adapters/uri_adapter_spec.rb
663
+ - spec/paperclip/matchers/have_attached_file_matcher_spec.rb
664
+ - spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb
665
+ - spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb
666
+ - spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb
667
+ - spec/paperclip/media_type_spoof_detector_spec.rb
668
+ - spec/paperclip/meta_class_spec.rb
669
+ - spec/paperclip/paperclip_missing_attachment_styles_spec.rb
670
+ - spec/paperclip/paperclip_spec.rb
671
+ - spec/paperclip/plural_cache_spec.rb
672
+ - spec/paperclip/processor_helpers_spec.rb
673
+ - spec/paperclip/processor_spec.rb
674
+ - spec/paperclip/rails_environment_spec.rb
675
+ - spec/paperclip/rake_spec.rb
676
+ - spec/paperclip/schema_spec.rb
677
+ - spec/paperclip/storage/filesystem_spec.rb
678
+ - spec/paperclip/storage/fog_spec.rb
679
+ - spec/paperclip/storage/s3_live_spec.rb
680
+ - spec/paperclip/storage/s3_spec.rb
681
+ - spec/paperclip/style_spec.rb
682
+ - spec/paperclip/tempfile_factory_spec.rb
683
+ - spec/paperclip/tempfile_spec.rb
684
+ - spec/paperclip/thumbnail_spec.rb
685
+ - spec/paperclip/url_generator_spec.rb
686
+ - spec/paperclip/validators/attachment_content_type_validator_spec.rb
687
+ - spec/paperclip/validators/attachment_file_name_validator_spec.rb
688
+ - spec/paperclip/validators/attachment_presence_validator_spec.rb
689
+ - spec/paperclip/validators/attachment_size_validator_spec.rb
690
+ - spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb
691
+ - spec/paperclip/validators_spec.rb
692
+ - spec/spec_helper.rb
693
+ - spec/support/assertions.rb
694
+ - spec/support/conditional_filter_helper.rb
695
+ - spec/support/fake_model.rb
696
+ - spec/support/fake_rails.rb
697
+ - spec/support/fixtures/12k.png
698
+ - spec/support/fixtures/50x50.png
699
+ - spec/support/fixtures/5k.png
700
+ - spec/support/fixtures/animated
701
+ - spec/support/fixtures/animated.gif
702
+ - spec/support/fixtures/animated.unknown
703
+ - spec/support/fixtures/bad.png
704
+ - spec/support/fixtures/empty.html
705
+ - spec/support/fixtures/empty.xlsx
706
+ - spec/support/fixtures/fog.yml
707
+ - spec/support/fixtures/rotated.jpg
708
+ - spec/support/fixtures/s3.yml
709
+ - spec/support/fixtures/spaced file.jpg
710
+ - spec/support/fixtures/spaced file.png
711
+ - spec/support/fixtures/text.txt
712
+ - spec/support/fixtures/twopage.pdf
713
+ - spec/support/fixtures/uppercase.PNG
714
+ - spec/support/matchers/accept.rb
715
+ - spec/support/matchers/exist.rb
716
+ - spec/support/matchers/have_column.rb
717
+ - spec/support/mock_attachment.rb
718
+ - spec/support/mock_interpolator.rb
719
+ - spec/support/mock_url_generator_builder.rb
720
+ - spec/support/model_reconstruction.rb
721
+ - spec/support/reporting.rb
722
+ - spec/support/test_data.rb
723
+ - spec/support/version_helper.rb