paperclip 3.5.4 → 5.3.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (212) hide show
  1. checksums.yaml +4 -4
  2. data/.codeclimate.yml +17 -0
  3. data/.gitignore +0 -6
  4. data/.hound.yml +1055 -0
  5. data/.rubocop.yml +1 -0
  6. data/.travis.yml +17 -20
  7. data/Appraisals +4 -16
  8. data/CONTRIBUTING.md +29 -13
  9. data/Gemfile +11 -3
  10. data/LICENSE +1 -3
  11. data/NEWS +241 -49
  12. data/README.md +471 -166
  13. data/RELEASING.md +17 -0
  14. data/Rakefile +6 -8
  15. data/UPGRADING +12 -9
  16. data/features/basic_integration.feature +27 -8
  17. data/features/migration.feature +0 -24
  18. data/features/step_definitions/attachment_steps.rb +36 -28
  19. data/features/step_definitions/html_steps.rb +2 -2
  20. data/features/step_definitions/rails_steps.rb +68 -37
  21. data/features/step_definitions/s3_steps.rb +2 -2
  22. data/features/step_definitions/web_steps.rb +1 -103
  23. data/features/support/env.rb +3 -2
  24. data/features/support/file_helpers.rb +2 -2
  25. data/features/support/fixtures/gemfile.txt +1 -1
  26. data/features/support/paths.rb +1 -1
  27. data/features/support/rails.rb +2 -25
  28. data/gemfiles/4.2.gemfile +17 -0
  29. data/gemfiles/5.0.gemfile +17 -0
  30. data/lib/generators/paperclip/paperclip_generator.rb +9 -3
  31. data/lib/generators/paperclip/templates/paperclip_migration.rb.erb +2 -2
  32. data/lib/paperclip/attachment.rb +151 -46
  33. data/lib/paperclip/attachment_registry.rb +3 -2
  34. data/lib/paperclip/callbacks.rb +13 -1
  35. data/lib/paperclip/content_type_detector.rb +26 -22
  36. data/lib/paperclip/errors.rb +8 -1
  37. data/lib/paperclip/file_command_content_type_detector.rb +6 -8
  38. data/lib/paperclip/geometry_detector_factory.rb +5 -3
  39. data/lib/paperclip/geometry_parser_factory.rb +1 -1
  40. data/lib/paperclip/glue.rb +1 -1
  41. data/lib/paperclip/has_attached_file.rb +17 -1
  42. data/lib/paperclip/helpers.rb +15 -11
  43. data/lib/paperclip/interpolations/plural_cache.rb +6 -5
  44. data/lib/paperclip/interpolations.rb +26 -13
  45. data/lib/paperclip/io_adapters/abstract_adapter.rb +32 -4
  46. data/lib/paperclip/io_adapters/attachment_adapter.rb +13 -8
  47. data/lib/paperclip/io_adapters/data_uri_adapter.rb +11 -16
  48. data/lib/paperclip/io_adapters/empty_string_adapter.rb +5 -4
  49. data/lib/paperclip/io_adapters/file_adapter.rb +12 -6
  50. data/lib/paperclip/io_adapters/http_url_proxy_adapter.rb +7 -7
  51. data/lib/paperclip/io_adapters/identity_adapter.rb +12 -6
  52. data/lib/paperclip/io_adapters/nil_adapter.rb +8 -5
  53. data/lib/paperclip/io_adapters/registry.rb +6 -2
  54. data/lib/paperclip/io_adapters/stringio_adapter.rb +15 -16
  55. data/lib/paperclip/io_adapters/uploaded_file_adapter.rb +10 -6
  56. data/lib/paperclip/io_adapters/uri_adapter.rb +41 -19
  57. data/lib/paperclip/locales/en.yml +1 -0
  58. data/lib/paperclip/matchers/have_attached_file_matcher.rb +2 -1
  59. data/lib/paperclip/matchers/validate_attachment_content_type_matcher.rb +4 -4
  60. data/lib/paperclip/matchers/validate_attachment_presence_matcher.rb +2 -1
  61. data/lib/paperclip/matchers/validate_attachment_size_matcher.rb +2 -1
  62. data/lib/paperclip/media_type_spoof_detector.rb +90 -0
  63. data/lib/paperclip/processor.rb +5 -41
  64. data/lib/paperclip/processor_helpers.rb +50 -0
  65. data/lib/paperclip/rails_environment.rb +25 -0
  66. data/lib/paperclip/schema.rb +9 -7
  67. data/lib/paperclip/storage/filesystem.rb +14 -3
  68. data/lib/paperclip/storage/fog.rb +37 -19
  69. data/lib/paperclip/storage/s3.rb +129 -69
  70. data/lib/paperclip/style.rb +8 -2
  71. data/lib/paperclip/tempfile_factory.rb +5 -1
  72. data/lib/paperclip/thumbnail.rb +30 -18
  73. data/lib/paperclip/url_generator.rb +26 -14
  74. data/lib/paperclip/validators/attachment_content_type_validator.rb +4 -0
  75. data/lib/paperclip/validators/attachment_file_name_validator.rb +80 -0
  76. data/lib/paperclip/validators/attachment_file_type_ignorance_validator.rb +29 -0
  77. data/lib/paperclip/validators/attachment_presence_validator.rb +4 -0
  78. data/lib/paperclip/validators/attachment_size_validator.rb +5 -3
  79. data/lib/paperclip/validators/media_type_spoof_detection_validator.rb +27 -0
  80. data/lib/paperclip/validators.rb +11 -4
  81. data/lib/paperclip/version.rb +3 -1
  82. data/lib/paperclip.rb +30 -11
  83. data/lib/tasks/paperclip.rake +34 -5
  84. data/paperclip.gemspec +21 -16
  85. data/shoulda_macros/paperclip.rb +0 -1
  86. data/spec/paperclip/attachment_definitions_spec.rb +13 -0
  87. data/{test/attachment_processing_test.rb → spec/paperclip/attachment_processing_spec.rb} +17 -20
  88. data/spec/paperclip/attachment_registry_spec.rb +158 -0
  89. data/{test/attachment_test.rb → spec/paperclip/attachment_spec.rb} +502 -407
  90. data/{test/content_type_detector_test.rb → spec/paperclip/content_type_detector_spec.rb} +17 -20
  91. data/spec/paperclip/file_command_content_type_detector_spec.rb +40 -0
  92. data/spec/paperclip/filename_cleaner_spec.rb +14 -0
  93. data/spec/paperclip/geometry_detector_spec.rb +39 -0
  94. data/{test/geometry_parser_test.rb → spec/paperclip/geometry_parser_spec.rb} +27 -27
  95. data/{test/geometry_test.rb → spec/paperclip/geometry_spec.rb} +50 -52
  96. data/spec/paperclip/glue_spec.rb +44 -0
  97. data/spec/paperclip/has_attached_file_spec.rb +158 -0
  98. data/{test/integration_test.rb → spec/paperclip/integration_spec.rb} +137 -128
  99. data/{test/interpolations_test.rb → spec/paperclip/interpolations_spec.rb} +70 -46
  100. data/spec/paperclip/io_adapters/abstract_adapter_spec.rb +132 -0
  101. data/{test/io_adapters/attachment_adapter_test.rb → spec/paperclip/io_adapters/attachment_adapter_spec.rb} +33 -32
  102. data/spec/paperclip/io_adapters/data_uri_adapter_spec.rb +89 -0
  103. data/spec/paperclip/io_adapters/empty_string_adapter_spec.rb +17 -0
  104. data/{test/io_adapters/file_adapter_test.rb → spec/paperclip/io_adapters/file_adapter_spec.rb} +38 -42
  105. data/spec/paperclip/io_adapters/http_url_proxy_adapter_spec.rb +121 -0
  106. data/spec/paperclip/io_adapters/identity_adapter_spec.rb +8 -0
  107. data/{test/io_adapters/nil_adapter_test.rb → spec/paperclip/io_adapters/nil_adapter_spec.rb} +7 -7
  108. data/{test/io_adapters/registry_test.rb → spec/paperclip/io_adapters/registry_spec.rb} +12 -9
  109. data/{test/io_adapters/stringio_adapter_test.rb → spec/paperclip/io_adapters/stringio_adapter_spec.rb} +21 -18
  110. data/{test/io_adapters/uploaded_file_adapter_test.rb → spec/paperclip/io_adapters/uploaded_file_adapter_spec.rb} +46 -46
  111. data/spec/paperclip/io_adapters/uri_adapter_spec.rb +172 -0
  112. data/spec/paperclip/matchers/have_attached_file_matcher_spec.rb +19 -0
  113. data/spec/paperclip/matchers/validate_attachment_content_type_matcher_spec.rb +109 -0
  114. data/spec/paperclip/matchers/validate_attachment_presence_matcher_spec.rb +69 -0
  115. data/spec/paperclip/matchers/validate_attachment_size_matcher_spec.rb +88 -0
  116. data/spec/paperclip/media_type_spoof_detector_spec.rb +94 -0
  117. data/spec/paperclip/meta_class_spec.rb +30 -0
  118. data/spec/paperclip/paperclip_missing_attachment_styles_spec.rb +84 -0
  119. data/spec/paperclip/paperclip_spec.rb +192 -0
  120. data/spec/paperclip/plural_cache_spec.rb +37 -0
  121. data/spec/paperclip/processor_helpers_spec.rb +57 -0
  122. data/{test/processor_test.rb → spec/paperclip/processor_spec.rb} +7 -7
  123. data/spec/paperclip/rails_environment_spec.rb +33 -0
  124. data/{test/rake_test.rb → spec/paperclip/rake_spec.rb} +15 -15
  125. data/spec/paperclip/schema_spec.rb +248 -0
  126. data/{test/storage/filesystem_test.rb → spec/paperclip/storage/filesystem_spec.rb} +18 -18
  127. data/spec/paperclip/storage/fog_spec.rb +566 -0
  128. data/spec/paperclip/storage/s3_live_spec.rb +188 -0
  129. data/spec/paperclip/storage/s3_spec.rb +1693 -0
  130. data/spec/paperclip/style_spec.rb +255 -0
  131. data/spec/paperclip/tempfile_factory_spec.rb +33 -0
  132. data/spec/paperclip/tempfile_spec.rb +35 -0
  133. data/{test/thumbnail_test.rb → spec/paperclip/thumbnail_spec.rb} +153 -134
  134. data/spec/paperclip/url_generator_spec.rb +222 -0
  135. data/spec/paperclip/validators/attachment_content_type_validator_spec.rb +322 -0
  136. data/spec/paperclip/validators/attachment_file_name_validator_spec.rb +160 -0
  137. data/{test/validators/attachment_presence_validator_test.rb → spec/paperclip/validators/attachment_presence_validator_spec.rb} +20 -20
  138. data/{test/validators/attachment_size_validator_test.rb → spec/paperclip/validators/attachment_size_validator_spec.rb} +77 -64
  139. data/spec/paperclip/validators/media_type_spoof_detection_validator_spec.rb +52 -0
  140. data/spec/paperclip/validators_spec.rb +164 -0
  141. data/spec/spec_helper.rb +47 -0
  142. data/spec/support/assertions.rb +82 -0
  143. data/spec/support/conditional_filter_helper.rb +5 -0
  144. data/spec/support/fake_model.rb +25 -0
  145. data/spec/support/fake_rails.rb +12 -0
  146. data/spec/support/fixtures/empty.html +1 -0
  147. data/spec/support/fixtures/empty.xlsx +0 -0
  148. data/spec/support/fixtures/spaced file.jpg +0 -0
  149. data/spec/support/matchers/accept.rb +5 -0
  150. data/spec/support/matchers/exist.rb +5 -0
  151. data/spec/support/matchers/have_column.rb +23 -0
  152. data/{test → spec}/support/mock_attachment.rb +2 -0
  153. data/{test → spec}/support/mock_url_generator_builder.rb +2 -2
  154. data/spec/support/model_reconstruction.rb +68 -0
  155. data/spec/support/reporting.rb +11 -0
  156. data/spec/support/test_data.rb +13 -0
  157. data/spec/support/version_helper.rb +9 -0
  158. metadata +348 -225
  159. data/RUNNING_TESTS.md +0 -4
  160. data/cucumber/paperclip_steps.rb +0 -6
  161. data/gemfiles/3.0.gemfile +0 -11
  162. data/gemfiles/3.1.gemfile +0 -11
  163. data/gemfiles/3.2.gemfile +0 -11
  164. data/gemfiles/4.0.gemfile +0 -11
  165. data/test/attachment_definitions_test.rb +0 -12
  166. data/test/attachment_registry_test.rb +0 -88
  167. data/test/file_command_content_type_detector_test.rb +0 -27
  168. data/test/filename_cleaner_test.rb +0 -14
  169. data/test/generator_test.rb +0 -84
  170. data/test/geometry_detector_test.rb +0 -24
  171. data/test/has_attached_file_test.rb +0 -125
  172. data/test/helper.rb +0 -232
  173. data/test/io_adapters/abstract_adapter_test.rb +0 -58
  174. data/test/io_adapters/data_uri_adapter_test.rb +0 -74
  175. data/test/io_adapters/empty_string_adapter_test.rb +0 -18
  176. data/test/io_adapters/http_url_proxy_adapter_test.rb +0 -102
  177. data/test/io_adapters/identity_adapter_test.rb +0 -8
  178. data/test/io_adapters/uri_adapter_test.rb +0 -102
  179. data/test/matchers/have_attached_file_matcher_test.rb +0 -24
  180. data/test/matchers/validate_attachment_content_type_matcher_test.rb +0 -110
  181. data/test/matchers/validate_attachment_presence_matcher_test.rb +0 -69
  182. data/test/matchers/validate_attachment_size_matcher_test.rb +0 -86
  183. data/test/meta_class_test.rb +0 -32
  184. data/test/paperclip_missing_attachment_styles_test.rb +0 -90
  185. data/test/paperclip_test.rb +0 -217
  186. data/test/plural_cache_test.rb +0 -36
  187. data/test/schema_test.rb +0 -200
  188. data/test/storage/fog_test.rb +0 -473
  189. data/test/storage/s3_live_test.rb +0 -179
  190. data/test/storage/s3_test.rb +0 -1356
  191. data/test/style_test.rb +0 -213
  192. data/test/support/mock_model.rb +0 -2
  193. data/test/tempfile_factory_test.rb +0 -17
  194. data/test/url_generator_test.rb +0 -187
  195. data/test/validators/attachment_content_type_validator_test.rb +0 -324
  196. data/test/validators_test.rb +0 -61
  197. /data/{test → spec}/database.yml +0 -0
  198. /data/{test → spec/support}/fixtures/12k.png +0 -0
  199. /data/{test → spec/support}/fixtures/50x50.png +0 -0
  200. /data/{test → spec/support}/fixtures/5k.png +0 -0
  201. /data/{test → spec/support}/fixtures/animated +0 -0
  202. /data/{test → spec/support}/fixtures/animated.gif +0 -0
  203. /data/{test → spec/support}/fixtures/animated.unknown +0 -0
  204. /data/{test → spec/support}/fixtures/bad.png +0 -0
  205. /data/{test → spec/support}/fixtures/fog.yml +0 -0
  206. /data/{test → spec/support}/fixtures/rotated.jpg +0 -0
  207. /data/{test → spec/support}/fixtures/s3.yml +0 -0
  208. /data/{test → spec/support}/fixtures/spaced file.png +0 -0
  209. /data/{test → spec/support}/fixtures/text.txt +0 -0
  210. /data/{test → spec/support}/fixtures/twopage.pdf +0 -0
  211. /data/{test → spec/support}/fixtures/uppercase.PNG +0 -0
  212. /data/{test → spec}/support/mock_interpolator.rb +0 -0
data/.rubocop.yml ADDED
@@ -0,0 +1 @@
1
+ inherit_from: .hound.yml
data/.travis.yml CHANGED
@@ -1,28 +1,25 @@
1
+ language: ruby
2
+ sudo: false
3
+
1
4
  rvm:
2
- - 1.9.2
3
- - 1.9.3
4
- - jruby-19mode
5
- - rbx-19mode
6
- - 2.0.0
7
- - 2.1.0
5
+ - 2.1
6
+ - 2.2
7
+ - 2.3
8
+ - 2.4
8
9
 
9
- install:
10
- - "bundle install"
10
+ script: "bundle exec rake clean spec cucumber"
11
11
 
12
- before_script: "sudo ntpdate -ub ntp.ubuntu.com pool.ntp.org; true"
13
- script: "bundle exec rake clean test cucumber"
12
+ addons:
13
+ apt:
14
+ packages:
15
+ - ghostscript
14
16
 
15
17
  gemfile:
16
- - gemfiles/3.0.gemfile
17
- - gemfiles/3.1.gemfile
18
- - gemfiles/3.2.gemfile
19
- - gemfiles/4.0.gemfile
18
+ - gemfiles/4.2.gemfile
19
+ - gemfiles/5.0.gemfile
20
20
 
21
21
  matrix:
22
- allow_failures:
23
- - rvm: jruby-19mode
24
- - rvm: rbx-19mode
25
-
22
+ fast_finish: true
26
23
  exclude:
27
- - rvm: 1.9.2
28
- gemfile: gemfiles/4.0.gemfile
24
+ - gemfile: gemfiles/5.0.gemfile
25
+ rvm: 2.1
data/Appraisals CHANGED
@@ -1,19 +1,7 @@
1
- appraise "3.0" do
2
- gem "rails", "~> 3.0.20"
3
- gem "paperclip", :path => "../"
1
+ appraise "4.2" do
2
+ gem "rails", "~> 4.2.0"
4
3
  end
5
4
 
6
- appraise "3.1" do
7
- gem "rails", "~> 3.1.12"
8
- gem "paperclip", :path => "../"
9
- end
10
-
11
- appraise "3.2" do
12
- gem "rails", "~> 3.2.15"
13
- gem "paperclip", :path => "../"
14
- end
15
-
16
- appraise "4.0" do
17
- gem "rails", "~> 4.0.0"
18
- gem "paperclip", :path => "../"
5
+ appraise "5.0" do
6
+ gem "rails", "~> 5.0.0"
19
7
  end
data/CONTRIBUTING.md CHANGED
@@ -1,24 +1,36 @@
1
1
  Contributing
2
2
  ============
3
3
 
4
- We love pull requests. Here's a quick guide:
4
+ We love pull requests from everyone. By participating in this project, you agree
5
+ to abide by the thoughtbot [code of conduct].
6
+
7
+ [code of conduct]: https://thoughtbot.com/open-source-code-of-conduct
8
+
9
+ Here's a quick guide for contributing:
5
10
 
6
11
  1. Fork the repo.
7
12
 
8
- 2. Run the tests. We only take pull requests with passing tests, and it's great
9
- to know that you have a clean slate: `bundle && rake`
13
+ 1. Make sure you have ImageMagick and Ghostscript installed. See [this section]
14
+ (./README.md#image-processor) of the README.
15
+
16
+ 1. Run the tests. We only take pull requests with passing tests, and it's great
17
+ to know that you have a clean slate: `bundle && bundle exec rake`
10
18
 
11
- 3. Add a test for your change. Only refactoring and documentation changes
19
+ 1. Add a test for your change. Only refactoring and documentation changes
12
20
  require no new tests. If you are adding functionality or fixing a bug, we need
13
21
  a test!
14
22
 
15
- 4. Make the test pass.
23
+ 1. Make the test pass.
16
24
 
17
- 5. Push to your fork and submit a pull request.
25
+ 1. Mention how your changes affect the project to other developers and users in
26
+ the `NEWS.md` file.
27
+
28
+ 1. Push to your fork and submit a pull request.
18
29
 
19
30
  At this point you're waiting on us. We like to at least comment on, if not
20
- accept, pull requests within three business days (and, typically, one business
21
- day). We may suggest some changes or improvements or alternatives.
31
+ accept, pull requests within seven business days (most of the work on Paperclip
32
+ gets done on Fridays). We may suggest some changes or improvements or
33
+ alternatives.
22
34
 
23
35
  Some things that will increase the chance that your pull request is accepted,
24
36
  taken straight from the Ruby on Rails guide:
@@ -35,27 +47,31 @@ Paperclip uses [Appraisal](https://github.com/thoughtbot/appraisal) to aid
35
47
  testing against multiple version of Ruby on Rails. This helps us to make sure
36
48
  that Paperclip performs correctly with them.
37
49
 
50
+ Paperclip also uses [RSpec](http://rspec.info) for its unit tests. If you submit
51
+ tests that are not written for Cucumber or RSpec without a very good reason, you
52
+ will be asked to rewrite them before we'll accept.
53
+
38
54
  ### Bootstrapping your test suite:
39
55
 
40
56
  bundle install
41
- bundle exec rake appraisal:install
57
+ bundle exec appraisal install
42
58
 
43
59
  This will install all the required gems that requires to test against each
44
60
  version of Rails, which defined in `gemfiles/*.gemfile`.
45
61
 
46
62
  ### To run a full test suite:
47
63
 
48
- bundle exec rake
64
+ bundle exec appraisal rake
49
65
 
50
- This will run Test::Unit and Cucumber against all version of Rails
66
+ This will run RSpec and Cucumber against all version of Rails
51
67
 
52
68
  ### To run single Test::Unit or Cucumber test
53
69
 
54
70
  You need to specify a `BUNDLE_GEMFILE` pointing to the gemfile before running
55
71
  the normal test command:
56
72
 
57
- BUNDLE_GEMFILE=gemfiles/3.2.gemfile ruby -Itest test/schema_test.rb
58
- BUNDLE_GEMFILE=gemfiles/3.2.gemfile cucumber features/basic_integration.feature
73
+ BUNDLE_GEMFILE=gemfiles/4.1.gemfile rspec spec/paperclip/attachment_spec.rb
74
+ BUNDLE_GEMFILE=gemfiles/4.1.gemfile cucumber features/basic_integration.feature
59
75
 
60
76
  Syntax
61
77
  ------
data/Gemfile CHANGED
@@ -2,7 +2,15 @@ source "https://rubygems.org"
2
2
 
3
3
  gemspec
4
4
 
5
- gem 'jruby-openssl', :platform => :jruby
6
- gem 'activerecord-jdbcsqlite3-adapter', :platform => :jruby
5
+ gem 'sqlite3', '~> 1.3.8', :platforms => :ruby
6
+ gem 'pry'
7
7
 
8
- gem 'pry', :platform => :ruby
8
+ # Hinting at development dependencies
9
+ # Prevents bundler from taking a long-time to resolve
10
+ group :development, :test do
11
+ gem 'activerecord-import'
12
+ gem 'mime-types'
13
+ gem 'builder'
14
+ gem 'rubocop', require: false
15
+ gem 'rspec'
16
+ end
data/LICENSE CHANGED
@@ -3,7 +3,7 @@ LICENSE
3
3
 
4
4
  The MIT License
5
5
 
6
- Copyright (c) 2008-2013 Jon Yurek and thoughtbot, inc.
6
+ Copyright (c) 2008-2016 Jon Yurek and thoughtbot, inc.
7
7
 
8
8
  Permission is hereby granted, free of charge, to any person obtaining a copy
9
9
  of this software and associated documentation files (the "Software"), to deal
@@ -22,5 +22,3 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
22
22
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
23
23
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
24
24
  THE SOFTWARE.
25
-
26
-
data/NEWS CHANGED
@@ -1,37 +1,229 @@
1
- New in 3.5.4:
2
-
3
- Bug Fix: Users were reporting IOErrors. Stop closing extra files to prevent.
4
-
5
- New in 3.5.3:
6
-
7
- Improvement: After three long, hard years... we know how to upgrade
8
- Bug Fix: #expiring_url returns 'missing' urls if nothing is attached
9
- Improvement: Lots of documentation fixes
10
- Improvement: Lots of fixes for Ruby warnings
11
- Improvement: Test the most appropriate Ruby/Rails comobinations on Travis
12
- Improvement: Delegate more IO methods through IOAdapters
13
- Improvement: Remove Rails 4 deprecations
14
- Improvement: Both S3's and Fog's #expiring_url can take a Time or Int
15
- Bug Fix: Both S3's and Fog's expiring_url respect style when missing the file
16
- Bug Fix: Timefiles will have a reasonable-length name. They're all MD5 hashes now
17
- Bug Fix: Don't delete files off S3 when reprocessing due to AWS inconsistencies
18
- Bug Fix: "swallow_stream" isn't thread dafe. Use :swallow_stderr
19
- Improvement: Regexps use \A and \Z instead of ^ and $
20
- Improvement: :s3_credentials can take a lambda as an argument
21
- Improvement: Search up the class heirarchy for attachments
22
- Improvement: deep_merge options instead of regular merge
23
- Bug Fix: Prevent file deletion on transaction rollback
24
- Test Improvement: Ensure more files are properly closed during tests
25
- Test Bug Fix: Return the gemfile's syntax to normal
26
-
27
- New in 3.5.2:
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
+
15
+ 5.2.1 (2018-01-25):
16
+
17
+ * Bugfix: Fix copying files on Windows. (#2532)
18
+
19
+ 5.2.0 (2018-01-23):
20
+
21
+ * Security: Remove the automatic loading of URI adapters. Some of these
22
+ adapters can be specially crafted to expose your network topology. (#2435)
23
+ * Bugfix: The rake task no longer rescues `Exception`. (#2476)
24
+ * Bugfix: Handle malformed `Content-Disposition` headers (#2283)
25
+ * Bugfix: The `:only_process` option works when passed a lambda again. (#2289)
26
+ * Improvement: Added `:use_accelerate_endpoint` option when using S3 to enable
27
+ [Amazon S3 Transfer Acceleration](http://docs.aws.amazon.com/AmazonS3/latest/dev/transfer-acceleration.html)
28
+ (#2291)
29
+ * Improvement: Make the fingerprint digest configurable per attachment. The
30
+ default remains MD5. Making this configurable means it can change in a future
31
+ version because it is not considered secure anymore against intentional file
32
+ corruption. For more info, see https://en.wikipedia.org/wiki/MD5#Security
33
+
34
+ You can change the digest used for an attachment by adding the
35
+ `:adapter_options` parameter to the `has_attached_file` options like this:
36
+ `has_attached_file :avatar, adapter_options: { hash_digest: Digest::SHA256 }`
37
+
38
+ Use the rake task to regenerate fingerprints with the new digest for a given
39
+ class. Note that this does **not** check the file integrity using the old
40
+ fingerprint. Run the following command to regenerate fingerprints for all
41
+ User attachments:
42
+ `CLASS=User rake paperclip:refresh:fingerprints`
43
+ You can optionally limit the attachment that will be processed, e.g:
44
+ `CLASS=User ATTACHMENT=avatar rake paperclip:refresh:fingerprints` (#2229)
45
+ * Improvement: The new `frame_index` option on the thumbnail processor allows
46
+ you to select a specific frame from an animated upload to use as a thumbnail.
47
+ Initial support is for mkv, avi, MP4, mov, MPEG, and GIF. (#2155)
48
+ * Improvement: Instead of copying files, use hard links. This is an
49
+ optimization. (#2120)
50
+ * Improvement: S3 storage option `:s3_prefixes_in_alias`. (#2287)
51
+ * Improvement: Fog option `:fog_public` can be a lambda. (#2302)
52
+ * Improvement: One fewer warning on JRuby. (#2352)
53
+ * Ruby 2.4.0 compatibility (doesn't use Fixnum anymore)
54
+
55
+ 5.1.0 (2016-08-19):
56
+
57
+ * Add default `content_type_detector` to `UploadedFileAdapter` (#2270)
58
+ * Default S3 protocol to empty string (#2038)
59
+ * Don't write original file if it wasn't reprocessed (#1993)
60
+ * Disallow trailing newlines in regular expressions (#2266)
61
+ * Support for readbyte in Paperclip attachments (#2034)
62
+ * (port from 4.3) Uri io adapter uses the content-disposition filename (#2250)
63
+ * General refactors and documentation improvements
64
+
65
+ 5.0.0 (2016-07-01):
66
+
67
+ * Improvement: Add `read_timeout` configuration for URI Adapter download_content method.
68
+ * README adjustments for Ruby beginners (add links, elucidate model in Quick Start)
69
+ * Bugfix: Now it's possible to save images from URLs with special characters [#1932]
70
+ * Bugfix: Return false when file to copy is not present in cloud storage [#2173]
71
+ * Automatically close file while checking mime type [#2016]
72
+ * Add `read_timeout` option to `UriAdapter#download_content` method [#2232]
73
+ * Fix a nil error in content type validation matcher [#1910]
74
+ * Documentation improvements
75
+
76
+ 5.0.0.beta2 (2016-04-01):
77
+
78
+ * Bugfix: Dynamic fog directory option is now respected
79
+ * Bugfix: Fixes cocaine duplicated paths [#2169]
80
+ * Removal of dead code (older versions of Rails and AWS SDK)
81
+ * README adjustments
82
+
83
+ 5.0.0.beta1 (2016-03-13):
84
+
85
+ * Bug Fix: megabytes of mime-types info in logs when a spoofed media type is detected.
86
+ * Drop support to end-of-life'd ruby 2.0.
87
+ * Drop support for end-of-life'd Rails 3.2 and 4.1
88
+ * Drop support for AWS v1
89
+ * Remove tests for JRuby and Rubinius from Travis CI (they were failing)
90
+ * Improvement: Add `fog_options` configuration to send options to fog when
91
+ storing files.
92
+ * Extracted repository for locales only: https://github.com/thoughtbot/paperclip-i18n
93
+ * Bugfix: Original file could be unlinked during `post_process_style`, producing failures
94
+ * Bugfix for image magick scaling images up
95
+ * Memory consumption improvements
96
+ * `url` on a unpersisted record returns `default_url` rather than `nil`
97
+ * Improvement: aws-sdk v2 support
98
+ https://github.com/thoughtbot/paperclip/pull/1903
99
+
100
+ If your Gemfile contains aws-sdk (>= 2.0.0) and aws-sdk-v1, paperclip will use
101
+ aws-sdk v2. With aws-sdk v2, S3 storage requires you to set the s3_region.
102
+ s3_region may be nested in s3_credentials, and (if not nested in
103
+ s3_credentials) it may be a Proc.
104
+
105
+ 4.3
106
+
107
+ See patch versions in v4.3 NEWS:
108
+ https://github.com/thoughtbot/paperclip/blob/v4.3/NEWS
109
+
110
+ 4.3.0 (2015-06-18):
111
+
112
+ * Improvement: Update aws-sdk and cucumber gem versions.
113
+ * Improvement: Add `length` alias for `size` method in AbstractAdapter.
114
+ * Improvement: Removed some cruft
115
+ * Improvement: deep_merge! Attachment definitions
116
+ * Improvement: Switch to mimemagic gem for content-type detection
117
+ * Improvement: Allows multiple content types for spoof detector
118
+ * Bug Fix: Don't assume we have Rails.env if we have Rails
119
+ * Performance: Decrease Memory footprint
120
+ * Ruby Versioning: Drop support for 1.9.3 (EOL'ed)
121
+ * Rails Versioning: Drop support for 4.0.0 (EOL'ed)
122
+
123
+ 4.2.4 (2015-06-05):
124
+
125
+ * Rollback backwards incompatible change, allowing paperclip to run on
126
+ Ruby >= 1.9.2.
127
+
128
+ 4.2.3:
129
+
130
+ * Fix dependency specifications (didn't work with Rails 4.1)
131
+ * Fix paperclip tests in CI
132
+
133
+ 4.2.2:
134
+
135
+ * Security fix: Fix a potential security issue with spoofing
136
+
137
+ 4.2.1:
138
+
139
+ * Improvement: Added `validate_media_type` options to allow/bypass spoof check
140
+ * Improvement: Added incremental backoff when AWS gives us a SlowDown error.
141
+ * Improvement: Stream downloads when usign aws-sdk.
142
+ * Improvement: Documentation fixes, includes Windows instructions.
143
+ * Improvement: Added pt-BR, zh-HK, zh-CN, zh-TW, and ja-JP locales.
144
+ * Improvement: Better escaping for characters in URLs
145
+ * Improvement: Honor `fog_credentials[:scheme]`
146
+ * Improvement: Also look for custom processors in lib/paperclip
147
+ * Improvement: id partitioning for string IDs works like integer id
148
+ * Improvement: Can pass options to DB adapters in migrations
149
+ * Improvement: Update expiring_url creation for later versions of fog
150
+ * Improvement: `path` can be a Proc in S3 attachments
151
+ * Test Fix: Improves speed and reliability of the specs
152
+ * Bug Fix: #original_filename= does not error when passed `nil`
153
+
154
+ 4.2.0:
155
+
156
+ * Improvement: Converted test suite from test/unit to RSpec
157
+ * Improvement: Refactored Paperclip::Attachment#assign
158
+ * Improvement: Added Spanish and German locales
159
+ * Improvement: Required Validators accept validator subclasses
160
+ * Improvement: EXIF orientation checking can be turned off for performance
161
+ * Improvement: Documentation updates
162
+ * Improvement: Better #human_size method for AttachmentSizeValidators
163
+ * Bug Fix: Allow MIME-types with dots in them
164
+ * Improvement: Travis CI updates
165
+ * Improvement: Validators can take multiple messages
166
+ * Improvement: Per-style options for S3 storage
167
+ * Improvement: Allow `nil` geometry strings
168
+ * Improvement: Use `eager_load!`
169
+
170
+ 4.1.1:
171
+
172
+ * Improvement: Add default translations for spoof validation
173
+ * Bug Fix: Don't check for spoofs if the file hasn't changed
174
+ * Bug Fix: Callback chain terminator is different in Rails 4.1, remove warnings
175
+ * Improvement: Fixed various Ruby warnings
176
+ * Bug Fix: Give bundler a hint, so it doesn't run forever on a fresh bundle
177
+ * Improvement: Documentation fixes
178
+ * Improvement: Allow travis-ci to finish-fast
179
+
180
+
181
+ 4.1.0:
182
+
183
+ * Improvement: Add :content_type_mappings to correct for missing spoof types
184
+ * Improvement: Credit Egor Homakov with discovering the content_type spoof bug
185
+ * Improvement: Memoize calls to identify in the thumbnail processor
186
+ * Improvement: Make MIME type optional for Data URIs.
187
+ * Improvement: Add default format for styles
188
+
189
+ 4.0.0:
190
+
191
+ * Security: Attachments are checked to make sure they're not pulling a fast one.
192
+ * Security: It is now *enforced* that every attachment has a file/mime validation.
193
+ * Bug Fix: Removed a call to IOAdapter#close that was causing issues.
194
+ * Improvement: Added bullets to the 3.5.3 list of changes. Very important.
195
+ * Improvement: Updated the copyright to 2014
196
+
197
+ 3.5.3:
198
+
199
+ * Improvement: After three long, hard years... we know how to upgrade
200
+ * Bug Fix: #expiring_url returns 'missing' urls if nothing is attached
201
+ * Improvement: Lots of documentation fixes
202
+ * Improvement: Lots of fixes for Ruby warnings
203
+ * Improvement: Test the most appropriate Ruby/Rails comobinations on Travis
204
+ * Improvement: Delegate more IO methods through IOAdapters
205
+ * Improvement: Remove Rails 4 deprecations
206
+ * Improvement: Both S3's and Fog's #expiring_url can take a Time or Int
207
+ * Bug Fix: Both S3's and Fog's expiring_url respect style when missing the file
208
+ * Bug Fix: Timefiles will have a reasonable-length name. They're all MD5 hashes now
209
+ * Bug Fix: Don't delete files off S3 when reprocessing due to AWS inconsistencies
210
+ * Bug Fix: "swallow_stream" isn't thread dafe. Use :swallow_stderr
211
+ * Improvement: Regexps use \A and \Z instead of ^ and $
212
+ * Improvement: :s3_credentials can take a lambda as an argument
213
+ * Improvement: Search up the class heirarchy for attachments
214
+ * Improvement: deep_merge options instead of regular merge
215
+ * Bug Fix: Prevent file deletion on transaction rollback
216
+ * Test Improvement: Ensure more files are properly closed during tests
217
+ * Test Bug Fix: Return the gemfile's syntax to normal
218
+
219
+ 3.5.2:
28
220
 
29
221
  * Security: Force cocaine to at least 0.5.3 to include a security fix
30
222
  * Improvement: Fixed some README exmaples
31
223
  * Feature: Added HTTP URL Proxy Adapter, can assign string URLs as attachments
32
224
  * Improvement: Put validation errors on the base attribute and the sub-attribute
33
225
 
34
- New in 3.5.1:
226
+ 3.5.1:
35
227
 
36
228
  * Bug Fix: Returned the class-level `attachment_definitions` method for compatability.
37
229
  * Improvement: Ensured compatability with Rails 4
@@ -39,7 +231,7 @@ New in 3.5.1:
39
231
  * Bug Fix: #1296, where validations were generating errors
40
232
  * Improvement: Specify MIT license in the gemspec
41
233
 
42
- New in 3.5.0:
234
+ 3.5.0:
43
235
 
44
236
  * Feature: Handle Base64-encoded data URIs as uploads
45
237
  * Feature: Add a FilenameCleaner class to allow custom filename sanitation
@@ -55,7 +247,7 @@ New in 3.5.0:
55
247
  * Improvement: Added Ruby 2.0.0 as a supported platform and removed 1.8.7
56
248
  * Improvement: Fixed some incompatabilities in the test suite
57
249
 
58
- New in 3.4.2:
250
+ 3.4.2:
59
251
 
60
252
  * Improvement: Use https for Gemfile urls
61
253
  * Improvement: Updated and more correct documentation
@@ -65,7 +257,7 @@ New in 3.4.2:
65
257
  * Improvement: Remove path clash checking, as it's unnecessary
66
258
  * Bug Fix: Do not rely on checking version numbers for aws-sdk
67
259
 
68
- New in 3.4.1:
260
+ 3.4.1:
69
261
 
70
262
  * Improvement: Various documentation fixes and improvements
71
263
  * Bug Fix: Clearing an attachment with `preserve_files` on should still clear the attachment
@@ -78,7 +270,7 @@ New in 3.4.1:
78
270
  * Improvement: Update to latest cocaine
79
271
  * Improvement: Update copyrights, various typos
80
272
 
81
- New in 3.4.0:
273
+ 3.4.0:
82
274
 
83
275
  * Bug Fix: Allow UploadedFileAdapter to force the use of `file`
84
276
  * Bug Fix: Close the file handle when dealing with URIs
@@ -108,11 +300,11 @@ New In 3.3.1:
108
300
 
109
301
  * Bug Fix: Moved Filesystem's copy_to_local_file to the right place.
110
302
 
111
- New in 3.3.0:
303
+ 3.3.0:
112
304
 
113
305
  * Improvement: Upgrade cocaine to 0.4
114
306
 
115
- New in 3.2.0:
307
+ 3.2.0:
116
308
 
117
309
  * Bug Fix: Use the new correct Amazon S3 encryption header.
118
310
  * Bug Fix: The rake task respects the updated_at column.
@@ -121,14 +313,14 @@ New in 3.2.0:
121
313
  * Feature: Automatically rotate images.
122
314
  * Feature: Reduce class-oriented programming of the attachment definitions.
123
315
 
124
- New in 3.1.4:
316
+ 3.1.4:
125
317
 
126
318
  * Bug Fix: Allow user to be able to set path without `:style` attribute and not raising an error.
127
319
  This is a regression introduced in 3.1.3, and that feature will be postponed to another minor
128
320
  release instead.
129
321
  * Feature: Allow for URI Adapter as an optional paperclip io adapter.
130
322
 
131
- New in 3.1.3:
323
+ 3.1.3:
132
324
 
133
325
  * Bug Fix: Copy empty attachment between instances is now working.
134
326
  * Bug Fix: Correctly rescue Fog error.
@@ -140,17 +332,17 @@ New in 3.1.3:
140
332
  * Bug Fix: Paperclip now gracefully handles msising file command.
141
333
  * Bug Fix: `StringIOAdapter` now accepts content type.
142
334
 
143
- New in 3.1.2:
335
+ 3.1.2:
144
336
 
145
337
  * Bug Fix: #remove_attachment on 3.1.0 and 3.1.1 mistakenly trying to remove the column that has
146
338
  the same name as data type (such as :string, :datetime, :interger.) You're advised to update to
147
339
  Paperclip 3.1.2 as soon as possible.
148
340
 
149
- New in 3.1.1:
341
+ 3.1.1:
150
342
 
151
343
  * Bug Fix: Paperclip will only load Paperclip::Schema only when Active Record is available.
152
344
 
153
- New in 3.1.0:
345
+ 3.1.0:
154
346
 
155
347
  * Feature: Paperclip now support new migration syntax (sexy migration) that reads better:
156
348
 
@@ -189,11 +381,11 @@ New in 3.1.0:
189
381
  the best_content_type to throw an error on trying nil.content_type.
190
382
  * Bug Fix: Fix problem when the gem cannot be installed on the system that has Asepsis installed.
191
383
 
192
- New in 3.0.4:
384
+ 3.0.4:
193
385
 
194
386
  * Feature: Adds support for S3 scheme-less URL generation.
195
387
 
196
- New in 3.0.3:
388
+ 3.0.3:
197
389
 
198
390
  * Bug Fix: ThumbnailProcessor now correctly detects and preserve animated GIF.
199
391
  * Bug Fix: File extension is now preserved in generated Tempfile from adapter.
@@ -216,7 +408,7 @@ New in 3.0.3:
216
408
  * Bug Fix: Fix attachment.reprocess! when using storage providers fog and s3.
217
409
  * Bug Fix: Fix a problem with incorrect content_type detected with 'file' command for an empty file on Mac.
218
410
 
219
- New in 3.0.2:
411
+ 3.0.2:
220
412
 
221
413
  * API CHANGE: Generated migration class name is now plural (AddAttachmentToUsers instead of AddAttachmentToUser)
222
414
  * API CHANGE: Remove Rails plugin initialization code.
@@ -225,13 +417,13 @@ New in 3.0.2:
225
417
  * Bug Fix: Fix a problem when there's no logger specified.
226
418
  * Bug Fix: Fix a problem when attaching Rack::Test::UploadedFile instance.
227
419
 
228
- New in 3.0.1:
420
+ 3.0.1:
229
421
 
230
422
  * Feature: Introduce Paperlip IO adapter.
231
423
  * Bug Fix: Regression in AttachmentContentTypeValidator has been fixed.
232
424
  * API CHANGE: #to_file has been removed. Use the #copy_to_local_file method instead.
233
425
 
234
- New in 3.0.0:
426
+ 3.0.0:
235
427
 
236
428
  * API CHANGE: Paperclip now requires at least Ruby on Rails version 3.0.0
237
429
  * API CHANGE: The default :url and :path have changed. The new scheme avoids
@@ -250,7 +442,7 @@ New in 3.0.0:
250
442
  * Bug Fix: File given to S3 and Fog storage will now be rewinded after flush_write.
251
443
  * Feature: You can now pass addional parameter to S3 expiring URL, such as :content_type.
252
444
 
253
- New in 2.7.0:
445
+ 2.7.0:
254
446
 
255
447
  * Bug Fix: Checking the existence of a file on S3 handles all AWS errors.
256
448
  * Bug Fix: Clear the fingerprint when removing an attachment.
@@ -259,25 +451,25 @@ New in 2.7.0:
259
451
  * Compatibility: Support for ActiveSupport < 2.3.12.
260
452
  * Compatibility: Support for Rails 3.2.
261
453
 
262
- New in 2.6.0:
454
+ 2.6.0:
263
455
 
264
456
  * Bug Fix: Files are re-wound after reading.
265
457
  * Feature: Remove Rails dependency from specs that need Paperclip.
266
458
  * Feature: Validation matchers support conditionals.
267
459
 
268
- New in 2.5.2:
460
+ 2.5.2:
269
461
 
270
462
  * Bug Fix: Can be installed on Windows.
271
463
  * Feature: The Fog bucket name, authentication, and host can be determined at runtime via Proc.
272
464
  * Feature: Special characters are replaced with underscores in #url and #path.
273
465
 
274
- New in 2.5.1:
466
+ 2.5.1:
275
467
 
276
468
  * Feature: After we've computed the content type, pass it to Fog.
277
469
  * Feature: S3 encryption with the new :s3_server_side_encryption option.
278
470
  * Feature: Works without ActiveRecord, allowing for e.g. mongo backends.
279
471
 
280
- New in 2.5.0:
472
+ 2.5.0:
281
473
 
282
474
  * Performance: Only connect to S3 when absolutely needed.
283
475
  * Bug Fix: STI with cached classes respect new options.