paperclip 5.1.0 → 5.2.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (63) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +17 -0
  3. data/.hound.yml +5 -16
  4. data/.travis.yml +14 -15
  5. data/Appraisals +3 -23
  6. data/Gemfile +1 -0
  7. data/NEWS +36 -1
  8. data/README.md +58 -10
  9. data/Rakefile +1 -1
  10. data/UPGRADING +1 -1
  11. data/features/step_definitions/attachment_steps.rb +6 -6
  12. data/features/step_definitions/rails_steps.rb +29 -22
  13. data/features/step_definitions/s3_steps.rb +1 -1
  14. data/features/support/env.rb +1 -0
  15. data/features/support/paths.rb +1 -1
  16. data/features/support/rails.rb +0 -24
  17. data/gemfiles/{4.2.awsv2.0.gemfile → 4.2.gemfile} +1 -1
  18. data/gemfiles/{5.0.awsv2.1.gemfile → 5.0.gemfile} +2 -2
  19. data/lib/paperclip.rb +12 -10
  20. data/lib/paperclip/attachment.rb +10 -4
  21. data/lib/paperclip/io_adapters/abstract_adapter.rb +24 -2
  22. data/lib/paperclip/io_adapters/attachment_adapter.rb +10 -5
  23. data/lib/paperclip/io_adapters/data_uri_adapter.rb +8 -8
  24. data/lib/paperclip/io_adapters/empty_string_adapter.rb +5 -4
  25. data/lib/paperclip/io_adapters/file_adapter.rb +12 -6
  26. data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +7 -7
  27. data/lib/paperclip/io_adapters/identity_adapter.rb +12 -6
  28. data/lib/paperclip/io_adapters/nil_adapter.rb +8 -5
  29. data/lib/paperclip/io_adapters/registry.rb +6 -2
  30. data/lib/paperclip/io_adapters/stringio_adapter.rb +9 -6
  31. data/lib/paperclip/io_adapters/uploaded_file_adapter.rb +9 -5
  32. data/lib/paperclip/io_adapters/uri_adapter.rb +13 -11
  33. data/lib/paperclip/storage/filesystem.rb +13 -2
  34. data/lib/paperclip/storage/fog.rb +7 -4
  35. data/lib/paperclip/storage/s3.rb +31 -3
  36. data/lib/paperclip/thumbnail.rb +14 -4
  37. data/lib/paperclip/version.rb +1 -1
  38. data/lib/tasks/paperclip.rake +17 -3
  39. data/paperclip.gemspec +3 -3
  40. data/spec/paperclip/attachment_spec.rb +39 -8
  41. data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +44 -21
  42. data/spec/paperclip/io_adapters/attachment_adapter_spec.rb +6 -3
  43. data/spec/paperclip/io_adapters/data_uri_adapter_spec.rb +7 -1
  44. data/spec/paperclip/io_adapters/file_adapter_spec.rb +2 -2
  45. data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +6 -1
  46. data/spec/paperclip/io_adapters/identity_adapter_spec.rb +1 -1
  47. data/spec/paperclip/io_adapters/registry_spec.rb +2 -2
  48. data/spec/paperclip/io_adapters/stringio_adapter_spec.rb +1 -1
  49. data/spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb +3 -3
  50. data/spec/paperclip/io_adapters/uri_adapter_spec.rb +6 -1
  51. data/spec/paperclip/storage/fog_spec.rb +16 -0
  52. data/spec/paperclip/storage/s3_live_spec.rb +12 -10
  53. data/spec/paperclip/storage/s3_spec.rb +85 -4
  54. data/spec/paperclip/tempfile_spec.rb +35 -0
  55. data/spec/paperclip/thumbnail_spec.rb +35 -32
  56. data/spec/spec_helper.rb +3 -1
  57. data/spec/support/assertions.rb +5 -1
  58. data/spec/support/conditional_filter_helper.rb +5 -0
  59. metadata +31 -135
  60. data/gemfiles/4.2.awsv2.1.gemfile +0 -17
  61. data/gemfiles/4.2.awsv2.gemfile +0 -20
  62. data/gemfiles/5.0.awsv2.0.gemfile +0 -17
  63. data/gemfiles/5.0.awsv2.gemfile +0 -20
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 70e53f15c9fc9e1ffd3097f25a2fd58de617aa80
4
- data.tar.gz: 5c2d008914407061d105a5b18d97e9c4e0c88c74
3
+ metadata.gz: 569debc832514cb262986c31782d4590065f944b
4
+ data.tar.gz: b65dbae4e73cddd0c685e0c1bd4fc101ef09d251
5
5
  SHA512:
6
- metadata.gz: 368a451123ff0522cf60676a0925d2b69b6529db7ad4ef91ff03f41ef08910016a9d1715c618d90f451754982395259264be9869f290fd91591c7723b3a23f7b
7
- data.tar.gz: b69604376b66abe5a599fef4c72be3771822d6bb9f05a3732b2e5a91853ff61fc659f77541bafcb219bd5d5f15fcd61f79134ee654714e36b2a795d7da9c8198
6
+ metadata.gz: f0890bb495c49f763d1765015e5e7818c3d7ae6e50fbb33281226c6ccf3a316dd39b6c7e0df20fbe559522fb0c1fdc8b61c824fd954a8c5699920dcd2db88992
7
+ data.tar.gz: 7913049f0c5cbdd2b3912dfea1121fce81ea002bcdee5924ad2e48c2fc03fa5dc391922666d48310957444123d495a6e6266b6433fb51c7b512980322d527485
@@ -0,0 +1,17 @@
1
+ ---
2
+ engines:
3
+ duplication:
4
+ enabled: true
5
+ config:
6
+ languages:
7
+ - ruby
8
+ fixme:
9
+ enabled: true
10
+ rubocop:
11
+ enabled: true
12
+ ratings:
13
+ paths:
14
+ - "**.rb"
15
+ exclude_paths:
16
+ - features/
17
+ - spec/
data/.hound.yml CHANGED
@@ -20,7 +20,8 @@ AllCops:
20
20
  - "db/schema.rb"
21
21
  - 'vendor/**/*'
22
22
  - 'gemfiles/vendor/**/*'
23
- RunRailsCops: false
23
+ Rails:
24
+ Enabled: false
24
25
  DisplayCopNames: false
25
26
  StyleGuideCopsOnly: false
26
27
  Style/AccessModifierIndentation:
@@ -434,7 +435,7 @@ Style/TrailingBlankLines:
434
435
  SupportedStyles:
435
436
  - final_newline
436
437
  - final_blank_line
437
- Style/TrailingComma:
438
+ Style/TrailingCommaInLiteral:
438
439
  Description: Checks for trailing comma in parameter lists and literals.
439
440
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-trailing-array-commas
440
441
  Enabled: false
@@ -560,11 +561,6 @@ Rails/ActionFilter:
560
561
  - filter
561
562
  Include:
562
563
  - app/controllers/**/*.rb
563
- Rails/DefaultScope:
564
- Description: Checks if the argument passed to default_scope is a block.
565
- Enabled: true
566
- Include:
567
- - app/models/**/*.rb
568
564
  Rails/HasAndBelongsToMany:
569
565
  Description: Prefer has_many :through to has_and_belongs_to_many.
570
566
  Enabled: true
@@ -685,10 +681,6 @@ Style/DefWithParentheses:
685
681
  Description: Use def with parentheses when there are arguments.
686
682
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#method-parens
687
683
  Enabled: true
688
- Style/DeprecatedHashMethods:
689
- Description: Checks for use of deprecated Hash methods.
690
- StyleGuide: https://github.com/bbatsov/ruby-style-guide#hash-key
691
- Enabled: false
692
684
  Style/Documentation:
693
685
  Description: Document classes and non-namespace modules.
694
686
  Enabled: false
@@ -840,7 +832,7 @@ Style/SelfAssignment:
840
832
  used.
841
833
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#self-assignment
842
834
  Enabled: false
843
- Style/SingleSpaceBeforeFirstArg:
835
+ Style/SpaceBeforeFirstArg:
844
836
  Description: Checks that exactly one space is used between a method name and the
845
837
  first argument for method calls without parentheses.
846
838
  Enabled: true
@@ -852,7 +844,7 @@ Style/SpaceAfterComma:
852
844
  Description: Use spaces after commas.
853
845
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
854
846
  Enabled: true
855
- Style/SpaceAfterControlKeyword:
847
+ Style/SpaceAroundKeyword:
856
848
  Description: Use spaces after if/elsif/unless/while/until/case/when.
857
849
  Enabled: true
858
850
  Style/SpaceAfterMethodName:
@@ -881,9 +873,6 @@ Style/SpaceAroundOperators:
881
873
  Description: Use spaces around operators.
882
874
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#spaces-operators
883
875
  Enabled: true
884
- Style/SpaceBeforeModifierKeyword:
885
- Description: Put a space before the modifier keyword.
886
- Enabled: true
887
876
  Style/SpaceInsideBrackets:
888
877
  Description: No spaces after [ or before ].
889
878
  StyleGuide: https://github.com/bbatsov/ruby-style-guide#no-spaces-braces
@@ -1,26 +1,25 @@
1
+ language: ruby
2
+ sudo: false
3
+
1
4
  rvm:
2
5
  - 2.1
3
- - 2.2.2
6
+ - 2.2
7
+ - 2.3
8
+ - 2.4
4
9
 
5
10
  script: "bundle exec rake clean spec cucumber"
6
11
 
12
+ addons:
13
+ apt:
14
+ packages:
15
+ - ghostscript
16
+
7
17
  gemfile:
8
- - gemfiles/4.2.awsv2.0.gemfile
9
- - gemfiles/4.2.awsv2.1.gemfile
10
- - gemfiles/5.0.awsv2.0.gemfile
11
- - gemfiles/5.0.awsv2.1.gemfile
18
+ - gemfiles/4.2.gemfile
19
+ - gemfiles/5.0.gemfile
12
20
 
13
21
  matrix:
14
22
  fast_finish: true
15
23
  exclude:
16
- - gemfile: gemfiles/5.0.awsv2.0.gemfile
17
- rvm: 2.0
18
- - gemfile: gemfiles/5.0.awsv2.1.gemfile
19
- rvm: 2.0
20
- - gemfile: gemfiles/5.0.awsv2.0.gemfile
24
+ - gemfile: gemfiles/5.0.gemfile
21
25
  rvm: 2.1
22
- - gemfile: gemfiles/5.0.awsv2.1.gemfile
23
- rvm: 2.1
24
-
25
- sudo: false
26
- cache: bundler
data/Appraisals CHANGED
@@ -1,27 +1,7 @@
1
- appraise "4.2.awsv2.0" do
1
+ appraise "4.2" do
2
2
  gem "rails", "~> 4.2.0"
3
- gem "aws-sdk", "~> 2.0.0"
4
3
  end
5
4
 
6
- appraise "4.2.awsv2.1" do
7
- gem "rails", "~> 4.2.0"
8
- gem "aws-sdk", "~> 2.1.0"
9
-
10
- group :development, :test do
11
- gem 'mime-types', '>= 1.16', '< 4'
12
- end
13
- end
14
-
15
- appraise "5.0.awsv2.0" do
16
- gem "rails", "5.0.0.beta3"
17
- gem "aws-sdk", "~> 2.0.0"
18
-
19
- group :development, :test do
20
- gem 'mime-types', '>= 1.16', '< 4'
21
- end
22
- end
23
-
24
- appraise "5.0.awsv2.1" do
25
- gem "rails", "5.0.0.beta3"
26
- gem "aws-sdk", "~> 2.1.0"
5
+ appraise "5.0" do
6
+ gem "rails", "~> 5.0.0"
27
7
  end
data/Gemfile CHANGED
@@ -12,4 +12,5 @@ group :development, :test do
12
12
  gem 'mime-types'
13
13
  gem 'builder'
14
14
  gem 'rubocop', require: false
15
+ gem 'rspec'
15
16
  end
data/NEWS CHANGED
@@ -1,4 +1,39 @@
1
- master:
1
+ 5.2.0 (2018-01-23):
2
+
3
+ * Security: Remove the automatic loading of URI adapters. Some of these
4
+ adapters can be specially crafted to expose your network topology. (#2435)
5
+ * Bugfix: The rake task no longer rescues `Exception`. (#2476)
6
+ * Bugfix: Handle malformed `Content-Disposition` headers (#2283)
7
+ * Bugfix: The `:only_process` option works when passed a lambda again. (#2289)
8
+ * Improvement: Added `:use_accelerate_endpoint` option when using S3 to enable
9
+ [Amazon S3 Transfer Acceleration](http://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
10
+ (#2291)
11
+ * Improvement: Make the fingerprint digest configurable per attachment. The
12
+ default remains MD5. Making this configurable means it can change in a future
13
+ version because it is not considered secure anymore against intentional file
14
+ corruption. For more info, see https://en.wikipedia.org/wiki/MD5#Security
15
+
16
+ You can change the digest used for an attachment by adding the
17
+ `:adapter_options` parameter to the `has_attached_file` options like this:
18
+ `has_attached_file :avatar, adapter_options: { hash_digest: Digest::SHA256 }`
19
+
20
+ Use the rake task to regenerate fingerprints with the new digest for a given
21
+ class. Note that this does **not** check the file integrity using the old
22
+ fingerprint. Run the following command to regenerate fingerprints for all
23
+ User attachments:
24
+ `CLASS=User rake paperclip:refresh:fingerprints`
25
+ You can optionally limit the attachment that will be processed, e.g:
26
+ `CLASS=User ATTACHMENT=avatar rake paperclip:refresh:fingerprints` (#2229)
27
+ * Improvement: The new `frame_index` option on the thumbnail processor allows
28
+ you to select a specific frame from an animated upload to use as a thumbnail.
29
+ Initial support is for mkv, avi, MP4, mov, MPEG, and GIF. (#2155)
30
+ * Improvement: Instead of copying files, use hard links. This is an
31
+ optimization. (#2120)
32
+ * Improvement: S3 storage option `:s3_prefixes_in_alias`. (#2287)
33
+ * Improvement: Fog option `:fog_public` can be a lambda. (#2302)
34
+ * Improvement: One fewer warning on JRuby. (#2352)
35
+
36
+ 5.1.0 (2016-08-19):
2
37
 
3
38
  * Add default `content_type_detector` to `UploadedFileAdapter` (#2270)
4
39
  * Default S3 protocol to empty string (#2038)
data/README.md CHANGED
@@ -17,7 +17,6 @@ https://github.com/thoughtbot/paperclip/releases
17
17
  <!-- START doctoc generated TOC please keep comment here to allow auto update -->
18
18
  <!-- DON'T EDIT THIS SECTION, INSTEAD RE-RUN doctoc TO UPDATE -->
19
19
 
20
-
21
20
  - [Requirements](#requirements)
22
21
  - [Ruby and Rails](#ruby-and-rails)
23
22
  - [Image Processor](#image-processor)
@@ -30,6 +29,7 @@ https://github.com/thoughtbot/paperclip/releases
30
29
  - [Edit and New Views with Simple Form](#edit-and-new-views-with-simple-form)
31
30
  - [Controller](#controller)
32
31
  - [View Helpers](#view-helpers)
32
+ - [Checking a File Exists](#checking-a-file-exists)
33
33
  - [Deleting an Attachment](#deleting-an-attachment)
34
34
  - [Usage](#usage)
35
35
  - [Validations](#validations)
@@ -39,14 +39,15 @@ https://github.com/thoughtbot/paperclip/releases
39
39
  - [Migrations](#migrations-1)
40
40
  - [Add Attachment Column To A Table](#add-attachment-column-to-a-table)
41
41
  - [Schema Definition](#schema-definition)
42
- - [Vintage syntax](#vintage-syntax)
42
+ - [Vintage Syntax](#vintage-syntax)
43
43
  - [Storage](#storage)
44
44
  - [Understanding Storage](#understanding-storage)
45
+ - [IO Adapters](#io-adapters)
45
46
  - [Post Processing](#post-processing)
46
47
  - [Custom Attachment Processors](#custom-attachment-processors)
47
48
  - [Events](#events)
48
49
  - [URI Obfuscation](#uri-obfuscation)
49
- - [MD5 Checksum / Fingerprint](#md5-checksum--fingerprint)
50
+ - [Checksum / Fingerprint](#checksum--fingerprint)
50
51
  - [File Preservation for Soft-Delete](#file-preservation-for-soft-delete)
51
52
  - [Dynamic Configuration](#dynamic-configuration)
52
53
  - [Dynamic Styles:](#dynamic-styles)
@@ -260,7 +261,7 @@ end
260
261
  <%= image_tag @user.avatar.url(:thumb) %>
261
262
  ```
262
263
 
263
- ### Checking a file exists
264
+ ### Checking a File Exists
264
265
 
265
266
  There are two methods for checking if a file exists:
266
267
 
@@ -549,7 +550,7 @@ class AddAttachmentColumnsToUsers < ActiveRecord::Migration
549
550
  end
550
551
  ```
551
552
 
552
- ### Vintage syntax
553
+ ### Vintage Syntax
553
554
 
554
555
  Vintage syntax (such as `t.has_attached_file` and `drop_attached_file`) is still supported in
555
556
  Paperclip 3.x, but you're advised to update those migration files to use this new syntax.
@@ -591,7 +592,7 @@ You may also choose to store your files using Amazon's S3 service. To do so, inc
591
592
  the `aws-sdk` gem in your Gemfile:
592
593
 
593
594
  ```ruby
594
- gem 'aws-sdk', '>= 2.0.34'
595
+ gem 'aws-sdk', '~> 2.3.0'
595
596
  ```
596
597
 
597
598
  And then you can specify using S3 from `has_attached_file`.
@@ -607,6 +608,34 @@ variables.
607
608
 
608
609
  ---
609
610
 
611
+ IO Adapters
612
+ -----------
613
+
614
+ When a file is uploaded or attached, it can be in one of a few different input
615
+ forms, from Rails' UploadedFile object to a StringIO to a Tempfile or even a
616
+ simple String that is a URL that points to an image.
617
+
618
+ Paperclip will accept, by default, many of these sources. It also is capable of
619
+ handling even more with a little configuration. The IO Adapters that handle
620
+ images from non-local sources are not enabled by default. They can be enabled by
621
+ adding a line similar to the following into `config/initializers/paperclip.rb`:
622
+
623
+ ```ruby
624
+ Paperclip::DataUriAdapter.register
625
+ ```
626
+
627
+ It's best to only enable a remote-loading adapter if you need it. Otherwise
628
+ there's a chance that someone can gain insight into your internal network
629
+ structure using it as a vector.
630
+
631
+ The following adapters are *not* loaded by default:
632
+
633
+ * `Paperclip::UriAdapter` - which accepts a `URI` instance.
634
+ * `Paperclip::HttpUrlProxyAdapter` - which accepts a `http` string.
635
+ * `Paperclip::DataUriAdapter` - which accepts a Base64-encoded `data:` string.
636
+
637
+ ---
638
+
610
639
  Post Processing
611
640
  ---------------
612
641
 
@@ -627,6 +656,14 @@ JPGs will remain JPGs). `Paperclip::Thumbnail` uses ImageMagick to process
627
656
  images; [ImageMagick's geometry documentation](http://www.imagemagick.org/script/command-line-processing.php#geometry)
628
657
  has more information on the accepted style formats.
629
658
 
659
+ 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
+
661
+ * `MAGICK_MEMORY_LIMIT=128MiB`
662
+ * `MAGICK_MAP_LIMIT=64MiB`
663
+ * `MAGICK_TIME_LIMIT=30`
664
+
665
+ For a full list of variables and description, see [ImageMagick's resources documentation](http://www.imagemagick.org/script/resources.php).
666
+
630
667
  ---
631
668
 
632
669
  Custom Attachment Processors
@@ -736,10 +773,10 @@ is specified in `:hash_data`. The default value for `:hash_data` is `":class/:at
736
773
 
737
774
  For more on this feature, read [the author's own explanation](https://github.com/thoughtbot/paperclip/pull/416)
738
775
 
739
- MD5 Checksum / Fingerprint
776
+ Checksum / Fingerprint
740
777
  -------
741
778
 
742
- An MD5 checksum of the original file assigned will be placed in the model if it
779
+ A checksum of the original file assigned will be placed in the model if it
743
780
  has an attribute named fingerprint. Following the user model migration example
744
781
  above, the migration would look like the following:
745
782
 
@@ -755,6 +792,17 @@ class AddAvatarFingerprintColumnToUser < ActiveRecord::Migration
755
792
  end
756
793
  ```
757
794
 
795
+ The algorithm can be specified using a configuration option; it defaults to MD5
796
+ for backwards compatibility with Paperclip 5 and earlier.
797
+
798
+ ```ruby
799
+ has_attached_file :some_attachment, adapter_options: { hash_digest: Digest::SHA256 }
800
+ ```
801
+
802
+ Run `CLASS=User ATTACHMENT=avatar rake paperclip:refresh:fingerprints` after
803
+ changing the digest on existing attachments to update the fingerprints in the
804
+ database.
805
+
758
806
  File Preservation for Soft-Delete
759
807
  -------
760
808
 
@@ -984,13 +1032,13 @@ Thank you to all [the contributors](https://github.com/thoughtbot/paperclip/grap
984
1032
  License
985
1033
  -------
986
1034
 
987
- Paperclip is Copyright © 2008-2016 thoughtbot, inc. It is free software, and may be
1035
+ Paperclip is Copyright © 2008-2017 thoughtbot, inc. It is free software, and may be
988
1036
  redistributed under the terms specified in the MIT-LICENSE file.
989
1037
 
990
1038
  About thoughtbot
991
1039
  ----------------
992
1040
 
993
- ![thoughtbot](https://thoughtbot.com/logo.png)
1041
+ ![thoughtbot](http://presskit.thoughtbot.com/images/thoughtbot-logo-for-readmes.svg)
994
1042
 
995
1043
  Paperclip is maintained and funded by thoughtbot.
996
1044
  The names and logos for thoughtbot are trademarks of thoughtbot, inc.
data/Rakefile CHANGED
@@ -9,7 +9,7 @@ task :default => [:clean, :all]
9
9
  desc 'Test the paperclip plugin under all supported Rails versions.'
10
10
  task :all do |t|
11
11
  if ENV['BUNDLE_GEMFILE']
12
- exec('rake spec cucumber')
12
+ exec('rake spec && cucumber')
13
13
  else
14
14
  exec("rm -f gemfiles/*.lock")
15
15
  Rake::Task["appraisal:gemfiles"].execute
data/UPGRADING CHANGED
@@ -1,5 +1,5 @@
1
1
  ##################################################
2
- # NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
2
+ # NOTE FOR UPGRADING FROM 4.3.0 OR EARLIER #
3
3
  ##################################################
4
4
 
5
5
  Paperclip is now compatible with aws-sdk >= 2.0.0.
@@ -23,7 +23,7 @@ When /^I modify my attachment definition to:$/ do |definition|
23
23
  end
24
24
 
25
25
  When /^I upload the fixture "([^"]*)"$/ do |filename|
26
- run_simple %(bundle exec #{runner_command} "User.create!(:attachment => File.open('#{fixture_path(filename)}'))")
26
+ run_simple %(bundle exec rails runner "User.create!(:attachment => File.open('#{fixture_path(filename)}'))")
27
27
  end
28
28
 
29
29
  Then /^the attachment "([^"]*)" should have a dimension of (\d+x\d+)$/ do |filename, dimension|
@@ -56,7 +56,7 @@ Then /^the attachment should have the same content type as the fixture "([^"]*)"
56
56
  require "mime/types"
57
57
  end
58
58
 
59
- attachment_content_type = `bundle exec #{runner_command} "puts User.last.attachment_content_type"`.strip
59
+ attachment_content_type = `bundle exec rails runner "puts User.last.attachment_content_type"`.strip
60
60
  expected = MIME::Types.type_for(filename).first.content_type
61
61
  expect(attachment_content_type).to eq(expected)
62
62
  end
@@ -64,14 +64,14 @@ end
64
64
 
65
65
  Then /^the attachment should have the same file name as the fixture "([^"]*)"$/ do |filename|
66
66
  cd(".") do
67
- attachment_file_name = `bundle exec #{runner_command} "puts User.last.attachment_file_name"`.strip
67
+ attachment_file_name = `bundle exec rails runner "puts User.last.attachment_file_name"`.strip
68
68
  expect(attachment_file_name).to eq(File.name(fixture_path(filename)).to_s)
69
69
  end
70
70
  end
71
71
 
72
72
  Then /^the attachment should have the same file size as the fixture "([^"]*)"$/ do |filename|
73
73
  cd(".") do
74
- attachment_file_size = `bundle exec #{runner_command} "puts User.last.attachment_file_size"`.strip
74
+ attachment_file_size = `bundle exec rails runner "puts User.last.attachment_file_size"`.strip
75
75
  expect(attachment_file_size).to eq(File.size(fixture_path(filename)).to_s)
76
76
  end
77
77
  end
@@ -84,7 +84,7 @@ end
84
84
 
85
85
  Then /^I should have attachment columns for "([^"]*)"$/ do |attachment_name|
86
86
  cd(".") do
87
- columns = eval(`bundle exec #{runner_command} "puts User.columns.map{ |column| [column.name, column.type] }.inspect"`.strip)
87
+ columns = eval(`bundle exec rails runner "puts User.columns.map{ |column| [column.name, column.type] }.inspect"`.strip)
88
88
  expect_columns = [
89
89
  ["#{attachment_name}_file_name", :string],
90
90
  ["#{attachment_name}_content_type", :string],
@@ -97,7 +97,7 @@ end
97
97
 
98
98
  Then /^I should not have attachment columns for "([^"]*)"$/ do |attachment_name|
99
99
  cd(".") do
100
- columns = eval(`bundle exec #{runner_command} "puts User.columns.map{ |column| [column.name, column.type] }.inspect"`.strip)
100
+ columns = eval(`bundle exec rails runner "puts User.columns.map{ |column| [column.name, column.type] }.inspect"`.strip)
101
101
  expect_columns = [
102
102
  ["#{attachment_name}_file_name", :string],
103
103
  ["#{attachment_name}_content_type", :string],
@@ -1,34 +1,33 @@
1
1
  Given /^I generate a new rails application$/ do
2
2
  steps %{
3
- When I run `bundle exec #{new_application_command} #{APP_NAME} --skip-bundle`
3
+ When I successfully run `rails new #{APP_NAME} --skip-bundle`
4
4
  And I cd to "#{APP_NAME}"
5
+ }
6
+
7
+ FileUtils.chdir("tmp/aruba/testapp/")
8
+
9
+ steps %{
5
10
  And I turn off class caching
6
- And I fix the application.rb for 3.0.12
7
11
  And I write to "Gemfile" with:
8
12
  """
9
13
  source "http://rubygems.org"
10
14
  gem "rails", "#{framework_version}"
11
- gem "sqlite3", "1.3.8", :platform => [:ruby, :rbx]
15
+ gem "sqlite3", :platform => [:ruby, :rbx]
12
16
  gem "activerecord-jdbcsqlite3-adapter", :platform => :jruby
13
17
  gem "jruby-openssl", :platform => :jruby
14
18
  gem "capybara"
15
19
  gem "gherkin"
16
- gem "aws-sdk"
20
+ gem "aws-sdk", "~> 2.0.0"
17
21
  gem "racc", :platform => :rbx
18
22
  gem "rubysl", :platform => :rbx
19
23
  """
20
24
  And I remove turbolinks
25
+ And I comment out lines that contain "action_mailer" in "config/environments/*.rb"
21
26
  And I empty the application.js file
22
27
  And I configure the application to use "paperclip" from this project
23
28
  }
24
- end
25
29
 
26
- Given "I fix the application.rb for 3.0.12" do
27
- cd(".") do
28
- File.open("config/application.rb", "a") do |f|
29
- f << "ActionController::Base.config.relative_url_root = ''"
30
- end
31
- end
30
+ FileUtils.chdir("../../..")
32
31
  end
33
32
 
34
33
  Given "I allow the attachment to be submitted" do
@@ -51,6 +50,16 @@ Given "I remove turbolinks" do
51
50
  end
52
51
  end
53
52
 
53
+ Given /^I comment out lines that contain "([^"]+)" in "([^"]+)"$/ do |contains, glob|
54
+ cd(".") do
55
+ Dir.glob(glob).each do |file|
56
+ transform_file(file) do |content|
57
+ content.gsub(/^(.*?#{contains}.*?)$/) { |line| "# #{line}" }
58
+ end
59
+ end
60
+ end
61
+ end
62
+
54
63
  Given /^I attach :attachment$/ do
55
64
  attach_attachment("attachment")
56
65
  end
@@ -60,11 +69,7 @@ Given /^I attach :attachment with:$/ do |definition|
60
69
  end
61
70
 
62
71
  def attach_attachment(name, definition = nil)
63
- snippet = ""
64
- if using_protected_attributes?
65
- snippet += "attr_accessible :name, :#{name}\n"
66
- end
67
- snippet += "has_attached_file :#{name}"
72
+ snippet = "has_attached_file :#{name}"
68
73
  if definition
69
74
  snippet += ", \n"
70
75
  snippet += definition
@@ -86,19 +91,19 @@ Given "I empty the application.js file" do
86
91
  end
87
92
 
88
93
  Given /^I run a rails generator to generate a "([^"]*)" scaffold with "([^"]*)"$/ do |model_name, attributes|
89
- step %[I successfully run `bundle exec #{generator_command} scaffold #{model_name} #{attributes}`]
94
+ step %[I successfully run `rails generate scaffold #{model_name} #{attributes}`]
90
95
  end
91
96
 
92
97
  Given /^I run a paperclip generator to add a paperclip "([^"]*)" to the "([^"]*)" model$/ do |attachment_name, model_name|
93
- step %[I successfully run `bundle exec #{generator_command} paperclip #{model_name} #{attachment_name}`]
98
+ step %[I successfully run `rails generate paperclip #{model_name} #{attachment_name}`]
94
99
  end
95
100
 
96
101
  Given /^I run a migration$/ do
97
- step %[I successfully run `bundle exec rake db:migrate --trace`]
102
+ step %[I successfully run `rake db:migrate --trace`]
98
103
  end
99
104
 
100
105
  When /^I rollback a migration$/ do
101
- step %[I successfully run `bundle exec rake db:rollback STEPS=1 --trace`]
106
+ step %[I successfully run `rake db:rollback STEPS=1 --trace`]
102
107
  end
103
108
 
104
109
  Given /^I update my new user view to include the file upload field$/ do
@@ -144,8 +149,10 @@ end
144
149
 
145
150
  Given /^I start the rails application$/ do
146
151
  cd(".") do
152
+ require "rails"
147
153
  require "./config/environment"
148
- require "capybara/rails"
154
+ require "capybara"
155
+ Capybara.app = Rails.application
149
156
  end
150
157
  end
151
158
 
@@ -171,7 +178,7 @@ end
171
178
 
172
179
  When /^I configure the application to use "([^\"]+)" from this project$/ do |name|
173
180
  append_to_gemfile "gem '#{name}', :path => '#{PROJECT_ROOT}'"
174
- steps %{And I run `bundle install --local`}
181
+ steps %{And I successfully run `bundle install --local`}
175
182
  end
176
183
 
177
184
  When /^I configure the application to use "([^\"]+)"$/ do |gem_name|