paperclip 5.1.0 → 5.2.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.codeclimate.yml +17 -0
- data/.hound.yml +5 -16
- data/.travis.yml +14 -15
- data/Appraisals +3 -23
- data/Gemfile +1 -0
- data/NEWS +36 -1
- data/README.md +58 -10
- data/Rakefile +1 -1
- data/UPGRADING +1 -1
- data/features/step_definitions/attachment_steps.rb +6 -6
- data/features/step_definitions/rails_steps.rb +29 -22
- data/features/step_definitions/s3_steps.rb +1 -1
- data/features/support/env.rb +1 -0
- data/features/support/paths.rb +1 -1
- data/features/support/rails.rb +0 -24
- data/gemfiles/{4.2.awsv2.0.gemfile → 4.2.gemfile} +1 -1
- data/gemfiles/{5.0.awsv2.1.gemfile → 5.0.gemfile} +2 -2
- data/lib/paperclip.rb +12 -10
- data/lib/paperclip/attachment.rb +10 -4
- data/lib/paperclip/io_adapters/abstract_adapter.rb +24 -2
- data/lib/paperclip/io_adapters/attachment_adapter.rb +10 -5
- data/lib/paperclip/io_adapters/data_uri_adapter.rb +8 -8
- data/lib/paperclip/io_adapters/empty_string_adapter.rb +5 -4
- data/lib/paperclip/io_adapters/file_adapter.rb +12 -6
- data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +7 -7
- data/lib/paperclip/io_adapters/identity_adapter.rb +12 -6
- data/lib/paperclip/io_adapters/nil_adapter.rb +8 -5
- data/lib/paperclip/io_adapters/registry.rb +6 -2
- data/lib/paperclip/io_adapters/stringio_adapter.rb +9 -6
- data/lib/paperclip/io_adapters/uploaded_file_adapter.rb +9 -5
- data/lib/paperclip/io_adapters/uri_adapter.rb +13 -11
- data/lib/paperclip/storage/filesystem.rb +13 -2
- data/lib/paperclip/storage/fog.rb +7 -4
- data/lib/paperclip/storage/s3.rb +31 -3
- data/lib/paperclip/thumbnail.rb +14 -4
- data/lib/paperclip/version.rb +1 -1
- data/lib/tasks/paperclip.rake +17 -3
- data/paperclip.gemspec +3 -3
- data/spec/paperclip/attachment_spec.rb +39 -8
- data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +44 -21
- data/spec/paperclip/io_adapters/attachment_adapter_spec.rb +6 -3
- data/spec/paperclip/io_adapters/data_uri_adapter_spec.rb +7 -1
- data/spec/paperclip/io_adapters/file_adapter_spec.rb +2 -2
- data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +6 -1
- data/spec/paperclip/io_adapters/identity_adapter_spec.rb +1 -1
- data/spec/paperclip/io_adapters/registry_spec.rb +2 -2
- data/spec/paperclip/io_adapters/stringio_adapter_spec.rb +1 -1
- data/spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb +3 -3
- data/spec/paperclip/io_adapters/uri_adapter_spec.rb +6 -1
- data/spec/paperclip/storage/fog_spec.rb +16 -0
- data/spec/paperclip/storage/s3_live_spec.rb +12 -10
- data/spec/paperclip/storage/s3_spec.rb +85 -4
- data/spec/paperclip/tempfile_spec.rb +35 -0
- data/spec/paperclip/thumbnail_spec.rb +35 -32
- data/spec/spec_helper.rb +3 -1
- data/spec/support/assertions.rb +5 -1
- data/spec/support/conditional_filter_helper.rb +5 -0
- metadata +31 -135
- data/gemfiles/4.2.awsv2.1.gemfile +0 -17
- data/gemfiles/4.2.awsv2.gemfile +0 -20
- data/gemfiles/5.0.awsv2.0.gemfile +0 -17
- data/gemfiles/5.0.awsv2.gemfile +0 -20
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 569debc832514cb262986c31782d4590065f944b
|
4
|
+
data.tar.gz: b65dbae4e73cddd0c685e0c1bd4fc101ef09d251
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f0890bb495c49f763d1765015e5e7818c3d7ae6e50fbb33281226c6ccf3a316dd39b6c7e0df20fbe559522fb0c1fdc8b61c824fd954a8c5699920dcd2db88992
|
7
|
+
data.tar.gz: 7913049f0c5cbdd2b3912dfea1121fce81ea002bcdee5924ad2e48c2fc03fa5dc391922666d48310957444123d495a6e6266b6433fb51c7b512980322d527485
|
data/.codeclimate.yml
ADDED
data/.hound.yml
CHANGED
@@ -20,7 +20,8 @@ AllCops:
|
|
20
20
|
- "db/schema.rb"
|
21
21
|
- 'vendor/**/*'
|
22
22
|
- 'gemfiles/vendor/**/*'
|
23
|
-
|
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/
|
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/
|
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/
|
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
|
data/.travis.yml
CHANGED
@@ -1,26 +1,25 @@
|
|
1
|
+
language: ruby
|
2
|
+
sudo: false
|
3
|
+
|
1
4
|
rvm:
|
2
5
|
- 2.1
|
3
|
-
- 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.
|
9
|
-
- gemfiles/
|
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.
|
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
|
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 "
|
7
|
-
gem "rails", "~>
|
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
data/NEWS
CHANGED
@@ -1,4 +1,39 @@
|
|
1
|
-
|
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
|
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
|
-
- [
|
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
|
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
|
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', '
|
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
|
-
|
776
|
+
Checksum / Fingerprint
|
740
777
|
-------
|
741
778
|
|
742
|
-
|
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-
|
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](
|
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
@@ -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
|
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
|
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
|
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
|
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
|
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
|
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 `
|
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",
|
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
|
-
|
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 `
|
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 `
|
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 `
|
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 `
|
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
|
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|
|