shrine 2.14.0 → 2.15.0

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of shrine might be problematic. Click here for more details.

Files changed (149) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +384 -374
  3. data/README.md +132 -63
  4. data/doc/advantages.md +191 -109
  5. data/doc/attacher.md +1 -1
  6. data/doc/carrierwave.md +4 -4
  7. data/doc/creating_storages.md +2 -2
  8. data/doc/design.md +2 -2
  9. data/doc/direct_s3.md +3 -3
  10. data/doc/metadata.md +1 -1
  11. data/doc/multiple_files.md +2 -2
  12. data/doc/paperclip.md +3 -3
  13. data/doc/plugins/activerecord.md +92 -0
  14. data/doc/plugins/add_metadata.md +93 -0
  15. data/doc/plugins/backgrounding.md +148 -0
  16. data/doc/plugins/backup.md +29 -0
  17. data/doc/plugins/cached_attachment_data.md +23 -0
  18. data/doc/plugins/copy.md +22 -0
  19. data/doc/plugins/data_uri.md +92 -0
  20. data/doc/plugins/default_storage.md +16 -0
  21. data/doc/plugins/default_url.md +33 -0
  22. data/doc/plugins/default_url_options.md +22 -0
  23. data/doc/plugins/delete_promoted.md +10 -0
  24. data/doc/plugins/delete_raw.md +16 -0
  25. data/doc/plugins/derivation_endpoint.md +747 -0
  26. data/doc/plugins/determine_mime_type.md +64 -0
  27. data/doc/plugins/direct_upload.md +170 -0
  28. data/doc/plugins/download_endpoint.md +83 -0
  29. data/doc/plugins/dynamic_storage.md +20 -0
  30. data/doc/plugins/hooks.md +56 -0
  31. data/doc/plugins/included.md +15 -0
  32. data/doc/plugins/infer_extension.md +57 -0
  33. data/doc/plugins/keep_files.md +20 -0
  34. data/doc/plugins/logging.md +39 -0
  35. data/doc/plugins/metadata_attribues.md +43 -0
  36. data/doc/plugins/migration_helpers.md +58 -0
  37. data/doc/plugins/module_include.md +40 -0
  38. data/doc/plugins/moving.md +17 -0
  39. data/doc/plugins/multi_delete.md +18 -0
  40. data/doc/plugins/parallelize.md +14 -0
  41. data/doc/plugins/parsed_json.md +9 -0
  42. data/doc/plugins/presign_endpoint.md +133 -0
  43. data/doc/plugins/pretty_location.md +29 -0
  44. data/doc/plugins/processing.md +68 -0
  45. data/doc/plugins/rack_file.md +49 -0
  46. data/doc/plugins/rack_response.md +96 -0
  47. data/doc/plugins/recache.md +27 -0
  48. data/doc/plugins/refresh_metadata.md +31 -0
  49. data/doc/plugins/remote_url.md +104 -0
  50. data/doc/plugins/remove_attachment.md +16 -0
  51. data/doc/plugins/remove_invalid.md +9 -0
  52. data/doc/plugins/restore_cached_data.md +14 -0
  53. data/doc/plugins/sequel.md +64 -0
  54. data/doc/plugins/signature.md +49 -0
  55. data/doc/plugins/store_dimensions.md +68 -0
  56. data/doc/plugins/tempfile.md +40 -0
  57. data/doc/plugins/upload_endpoint.md +123 -0
  58. data/doc/plugins/upload_options.md +28 -0
  59. data/doc/plugins/validation_helpers.md +129 -0
  60. data/doc/plugins/versions.md +179 -0
  61. data/doc/processing.md +217 -247
  62. data/doc/refile.md +3 -3
  63. data/doc/release_notes/1.0.0.md +143 -0
  64. data/doc/release_notes/1.1.0.md +184 -0
  65. data/doc/release_notes/1.2.0.md +37 -0
  66. data/doc/release_notes/1.3.0.md +90 -0
  67. data/doc/release_notes/1.4.0.md +167 -0
  68. data/doc/release_notes/1.4.1.md +9 -0
  69. data/doc/release_notes/1.4.2.md +20 -0
  70. data/doc/release_notes/2.0.0.md +173 -0
  71. data/doc/release_notes/2.0.1.md +12 -0
  72. data/doc/release_notes/2.1.0.md +59 -0
  73. data/doc/release_notes/2.1.1.md +8 -0
  74. data/doc/release_notes/2.10.0.md +52 -0
  75. data/doc/release_notes/2.10.1.md +6 -0
  76. data/doc/release_notes/2.11.0.md +69 -0
  77. data/doc/release_notes/2.12.0.md +65 -0
  78. data/doc/release_notes/2.13.0.md +146 -0
  79. data/doc/release_notes/2.14.0.md +278 -0
  80. data/doc/release_notes/2.15.0.md +82 -0
  81. data/doc/release_notes/2.2.0.md +98 -0
  82. data/doc/release_notes/2.3.0.md +50 -0
  83. data/doc/release_notes/2.3.1.md +10 -0
  84. data/doc/release_notes/2.4.0.md +87 -0
  85. data/doc/release_notes/2.4.1.md +29 -0
  86. data/doc/release_notes/2.5.0.md +130 -0
  87. data/doc/release_notes/2.6.0.md +254 -0
  88. data/doc/release_notes/2.6.1.md +14 -0
  89. data/doc/release_notes/2.7.0.md +180 -0
  90. data/doc/release_notes/2.8.0.md +95 -0
  91. data/doc/release_notes/2.9.0.md +82 -0
  92. data/doc/retrieving_uploads.md +1 -1
  93. data/doc/storage/file_system.md +96 -0
  94. data/doc/storage/s3.md +293 -0
  95. data/doc/validation.md +1 -1
  96. data/lib/shrine/plugins/_urlsafe_serialization.rb +33 -125
  97. data/lib/shrine/plugins/activerecord.rb +0 -78
  98. data/lib/shrine/plugins/add_metadata.rb +0 -80
  99. data/lib/shrine/plugins/backgrounding.rb +0 -134
  100. data/lib/shrine/plugins/backup.rb +0 -22
  101. data/lib/shrine/plugins/cached_attachment_data.rb +0 -15
  102. data/lib/shrine/plugins/copy.rb +0 -14
  103. data/lib/shrine/plugins/data_uri.rb +0 -73
  104. data/lib/shrine/plugins/default_storage.rb +0 -11
  105. data/lib/shrine/plugins/default_url.rb +0 -25
  106. data/lib/shrine/plugins/default_url_options.rb +0 -16
  107. data/lib/shrine/plugins/delete_promoted.rb +0 -6
  108. data/lib/shrine/plugins/delete_raw.rb +0 -10
  109. data/lib/shrine/plugins/derivation_endpoint.rb +652 -0
  110. data/lib/shrine/plugins/determine_mime_type.rb +1 -85
  111. data/lib/shrine/plugins/direct_upload.rb +0 -155
  112. data/lib/shrine/plugins/download_endpoint.rb +11 -73
  113. data/lib/shrine/plugins/dynamic_storage.rb +0 -17
  114. data/lib/shrine/plugins/hooks.rb +0 -48
  115. data/lib/shrine/plugins/included.rb +0 -12
  116. data/lib/shrine/plugins/infer_extension.rb +0 -49
  117. data/lib/shrine/plugins/keep_files.rb +0 -19
  118. data/lib/shrine/plugins/logging.rb +0 -39
  119. data/lib/shrine/plugins/metadata_attributes.rb +0 -35
  120. data/lib/shrine/plugins/migration_helpers.rb +0 -50
  121. data/lib/shrine/plugins/module_include.rb +0 -32
  122. data/lib/shrine/plugins/moving.rb +0 -12
  123. data/lib/shrine/plugins/multi_delete.rb +0 -13
  124. data/lib/shrine/plugins/parallelize.rb +0 -8
  125. data/lib/shrine/plugins/parsed_json.rb +0 -5
  126. data/lib/shrine/plugins/presign_endpoint.rb +2 -117
  127. data/lib/shrine/plugins/pretty_location.rb +0 -22
  128. data/lib/shrine/plugins/processing.rb +0 -55
  129. data/lib/shrine/plugins/rack_file.rb +0 -39
  130. data/lib/shrine/plugins/rack_response.rb +0 -81
  131. data/lib/shrine/plugins/recache.rb +0 -21
  132. data/lib/shrine/plugins/refresh_metadata.rb +0 -24
  133. data/lib/shrine/plugins/remote_url.rb +0 -85
  134. data/lib/shrine/plugins/remove_attachment.rb +0 -10
  135. data/lib/shrine/plugins/remove_invalid.rb +0 -6
  136. data/lib/shrine/plugins/restore_cached_data.rb +0 -10
  137. data/lib/shrine/plugins/sequel.rb +0 -54
  138. data/lib/shrine/plugins/signature.rb +0 -37
  139. data/lib/shrine/plugins/store_dimensions.rb +0 -63
  140. data/lib/shrine/plugins/tempfile.rb +4 -35
  141. data/lib/shrine/plugins/upload_endpoint.rb +2 -109
  142. data/lib/shrine/plugins/upload_options.rb +0 -20
  143. data/lib/shrine/plugins/validation_helpers.rb +0 -36
  144. data/lib/shrine/plugins/versions.rb +0 -156
  145. data/lib/shrine/storage/file_system.rb +0 -77
  146. data/lib/shrine/storage/s3.rb +0 -249
  147. data/lib/shrine/version.rb +1 -1
  148. data/shrine.gemspec +2 -2
  149. metadata +86 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 705f49f8a110b3b50eb00c0fdf17da95dce2fa7782aaadfe20808af178a46405
4
- data.tar.gz: 41789005e3146dc56a327d7d0c4fe6de12153cb8135789a9a3cf56212fdd1d13
3
+ metadata.gz: aa6d199c94a3b0f6454d8423cc1ae63e31c78979328b064364abc8119ce9c98b
4
+ data.tar.gz: c384cee91997dfa2927938d959362982274adf6befc1ffe1d98be6605f4c4206
5
5
  SHA512:
6
- metadata.gz: 7f9ed520831fb14e199ef8ee9bddeaac47f7cf4151c5eb66ad68620c8c45db6c01d4fc4d62c6ff87a9bed2a771d48c97cc234ba903f1c3bf4005e79bcfa52d33
7
- data.tar.gz: e70bbbd5f5731778112c4ce700df42b08b207368b5898625dbff8123faae40e383e7429b134d3850c485bfc5cab1e142a6c123f6e1a4adc6bb3d430484377a82
6
+ metadata.gz: 904c4b61e43102efbc95dbfff02e16af95df2d88fd2ce68a29fa54dff82e512f5801f671eb865527ed892fd34905448871fb120e6133955d20d87f5568c3f5d7
7
+ data.tar.gz: e7742141f3693e862a5d13aa0752b59820415ca9bbf62674842730b3962a1452b71c33ea631dd65bec9e0b16aef189387bb545d958edeb80e707d506385e8c3f
@@ -1,68 +1,78 @@
1
+ ## 2.15.0 (2019-02-08)
2
+
3
+ * Add `derivation_endpoint` plugin for processing uploaded files on-the-fly (@janko)
4
+
5
+ * Allow Marcel to fall back to the file extension in `determine_mime_type` plugin (@skarlcf)
6
+
7
+ * Don't return cached app instance in `Shrine.download_endpoint` in `download_endpoint` plugin (@janko)
8
+
9
+ * Yield a new File object on `Shrine.with_file` when `tempfile` plugin is loaded (@janko)
10
+
1
11
  ## 2.14.0 (2018-12-27)
2
12
 
3
- * Add `tempfile` plugin for easier reusing of the same uploaded file copy on disk (@janko-m)
13
+ * Add `tempfile` plugin for easier reusing of the same uploaded file copy on disk (@janko)
4
14
 
5
- * Don't re-open the uploaded file if it's already open in `refresh_metadata` plugin (@janko-m)
15
+ * Don't re-open the uploaded file if it's already open in `refresh_metadata` plugin (@janko)
6
16
 
7
- * Drop support for MRI 2.1 and 2.2 (@janko-m)
17
+ * Drop support for MRI 2.1 and 2.2 (@janko)
8
18
 
9
- * Fix `backgrounding` not working when default storage was changed with `Attachment.new` (@janko-m)
19
+ * Fix `backgrounding` not working when default storage was changed with `Attachment.new` (@janko)
10
20
 
11
- * Don't clear existing metadata definitions when loading `add_metadata` plugin (@janko-m)
21
+ * Don't clear existing metadata definitions when loading `add_metadata` plugin (@janko)
12
22
 
13
- * Don't clear existing processing blocks when loading `processing` plugin (@janko-m)
23
+ * Don't clear existing processing blocks when loading `processing` plugin (@janko)
14
24
 
15
- * Deprecate automatic escaping of `:content_disposition` in `Shrine::Storage::S3` (@janko-m)
25
+ * Deprecate automatic escaping of `:content_disposition` in `Shrine::Storage::S3` (@janko)
16
26
 
17
- * Use `content_disposition` gem in `Shrine::Storage::S3` and `rack_response` plugin (@janko-m)
27
+ * Use `content_disposition` gem in `Shrine::Storage::S3` and `rack_response` plugin (@janko)
18
28
 
19
- * Make `FileSystem#clear!` work correctly when the storage directory is a symlink (@janko-m)
29
+ * Make `FileSystem#clear!` work correctly when the storage directory is a symlink (@janko)
20
30
 
21
- * Don't abort promotion in `backgrounding` plugin when original metadata was updated (@janko-m)
31
+ * Don't abort promotion in `backgrounding` plugin when original metadata was updated (@janko)
22
32
 
23
- * Don't mutate the `UploadedFile` data hash in `refresh_metadata` plugin (@janko-m)
33
+ * Don't mutate the `UploadedFile` data hash in `refresh_metadata` plugin (@janko)
24
34
 
25
- * Deprecate `Storage::S3#download` (@janko-m)
35
+ * Deprecate `Storage::S3#download` (@janko)
26
36
 
27
- * Stop using `Storage#download` in `UploadedFile#download` for peformance (@janko-m)
37
+ * Stop using `Storage#download` in `UploadedFile#download` for peformance (@janko)
28
38
 
29
- * Remove `#download` from the Shrine storage specification (@janko-m)
39
+ * Remove `#download` from the Shrine storage specification (@janko)
30
40
 
31
- * Keep `context` argument in `#extract_metadata` optional after loading `add_metadata` plugin (@janko-m)
41
+ * Keep `context` argument in `#extract_metadata` optional after loading `add_metadata` plugin (@janko)
32
42
 
33
- * Include metadata key with `nil` value when `nil` is returned in `add_metadata` block (@janko-m)
43
+ * Include metadata key with `nil` value when `nil` is returned in `add_metadata` block (@janko)
34
44
 
35
45
  * Strip query params in upload location when re-uploading from `shrine-url` storage (@jrochkind)
36
46
 
37
47
  * Inline Base plugin into core classes, extract them to separate files (@printercu)
38
48
 
39
- * Make `rack_response` plugin work with `Rack::Sendfile` for `FileSystem` storage (@janko-m)
49
+ * Make `rack_response` plugin work with `Rack::Sendfile` for `FileSystem` storage (@janko)
40
50
 
41
- * Add `:filename` and `:type` options to `rack_response` plugin (@janko-m)
51
+ * Add `:filename` and `:type` options to `rack_response` plugin (@janko)
42
52
 
43
- * Add `:host` option to `UploadedFile#download_url` in `download_endpoint` plugin (@janko-m)
53
+ * Add `:host` option to `UploadedFile#download_url` in `download_endpoint` plugin (@janko)
44
54
 
45
- * Add support for client-side encryption to S3 storage (@janko-m)
55
+ * Add support for client-side encryption to S3 storage (@janko)
46
56
 
47
57
  * Don't look up the attachment class in each new model instance (@printercu)
48
58
 
49
59
  * Allow `Attacher#cached?` and `Attacher#stored?` to take an `UploadedFile` object (@jrochkind)
50
60
 
51
- * Allow assigning a filename to the `DataFile` object in `Shrine.data_uri` (@janko-m)
61
+ * Allow assigning a filename to the `DataFile` object in `Shrine.data_uri` (@janko)
52
62
 
53
- * Don't strip media type parameters for the `DataFile` object in `data_uri` plugin (@janko-m)
63
+ * Don't strip media type parameters for the `DataFile` object in `data_uri` plugin (@janko)
54
64
 
55
- * Add `:content_type` analyzer to `Shrine.mime_type_analyzers` in `determine_mime_type` plugin (@janko-m)
65
+ * Add `:content_type` analyzer to `Shrine.mime_type_analyzers` in `determine_mime_type` plugin (@janko)
56
66
 
57
- * Rename `:default` analyzer to `:content_type` in `determine_mime_type` plugin (@janko-m)
67
+ * Rename `:default` analyzer to `:content_type` in `determine_mime_type` plugin (@janko)
58
68
 
59
- * Don't display a warning when `determine_mime_type` plugin is loaded with `:default` analyzer (@janko-m)
69
+ * Don't display a warning when `determine_mime_type` plugin is loaded with `:default` analyzer (@janko)
60
70
 
61
- * Exclude media type parameters when copying `IO#content_type` into `mime_type` metadata (@janko-m)
71
+ * Exclude media type parameters when copying `IO#content_type` into `mime_type` metadata (@janko)
62
72
 
63
- * Remove superfluous `#head_object` S3 API call in `S3#download` (@janko-m)
73
+ * Remove superfluous `#head_object` S3 API call in `S3#download` (@janko)
64
74
 
65
- * Make `S3#download` and `S3#open` work with server side encryption options (@janko-m)
75
+ * Make `S3#download` and `S3#open` work with server side encryption options (@janko)
66
76
 
67
77
  * Make previously extracted metadata available under `:metadata` in `add_metadata` plugin (@jrochkind)
68
78
 
@@ -70,39 +80,39 @@
70
80
 
71
81
  ## 2.13.0 (2018-11-04)
72
82
 
73
- * Specify UTF-8 charset in `Content-Type` response header in `presign_endpoint` plugin (@janko-m)
83
+ * Specify UTF-8 charset in `Content-Type` response header in `presign_endpoint` plugin (@janko)
74
84
 
75
- * Specify UTF-8 charset in `Content-Type` response header in `upload_endpoint` plugin (@janko-m)
85
+ * Specify UTF-8 charset in `Content-Type` response header in `upload_endpoint` plugin (@janko)
76
86
 
77
- * Force UTF-8 encoding on filenames coming from Rack's multipart request params in `rack_file` plugin (@janko-m)
87
+ * Force UTF-8 encoding on filenames coming from Rack's multipart request params in `rack_file` plugin (@janko)
78
88
 
79
- * Raise `Shrine::Error` if `file` command returns error in stdout in `determine_mime_type` plugin (@janko-m)
89
+ * Raise `Shrine::Error` if `file` command returns error in stdout in `determine_mime_type` plugin (@janko)
80
90
 
81
- * Allow `:host` in `S3#url` to specify a host URL with an additional path prefix (@janko-m)
91
+ * Allow `:host` in `S3#url` to specify a host URL with an additional path prefix (@janko)
82
92
 
83
- * Revert adding bucket name to URL path in `S3#url` when `:host` is used with `:force_path_style` (@janko-m)
93
+ * Revert adding bucket name to URL path in `S3#url` when `:host` is used with `:force_path_style` (@janko)
84
94
 
85
- * In `upload_endpoint` error with "Upload Not Valid" when `file` parameter is present but not a file (@janko-m)
95
+ * In `upload_endpoint` error with "Upload Not Valid" when `file` parameter is present but not a file (@janko)
86
96
 
87
- * Allow `Attacher#assign` to accept options for `Shrine#upload` (@janko-m)
97
+ * Allow `Attacher#assign` to accept options for `Shrine#upload` (@janko)
88
98
 
89
- * Add `:metadata` option to `Shrine#upload` for manually overriding extracted metadata (@janko-m)
99
+ * Add `:metadata` option to `Shrine#upload` for manually overriding extracted metadata (@janko)
90
100
 
91
101
  * Add `:force` option to `infer_extension` plugin for always replacing the current extension (@jrochkind)
92
102
 
93
- * Add `:public` option to `S3#initialize` for enabling public uploads (@janko-m)
103
+ * Add `:public` option to `S3#initialize` for enabling public uploads (@janko)
94
104
 
95
- * Add ability to specify a custom `:signer` for `Shrine::Storage::S3#url` (@janko-m)
105
+ * Add ability to specify a custom `:signer` for `Shrine::Storage::S3#url` (@janko)
96
106
 
97
- * In `S3#upload` do multipart upload for large non-file IO objects (@janko-m)
107
+ * In `S3#upload` do multipart upload for large non-file IO objects (@janko)
98
108
 
99
- * In `S3#upload` switch to `Aws::S3::Object#upload_stream` for multipart uploads of IO objects of unknown size (@janko-m)
109
+ * In `S3#upload` switch to `Aws::S3::Object#upload_stream` for multipart uploads of IO objects of unknown size (@janko)
100
110
 
101
- * In `S3#upload` deprecate using aws-sdk-s3 lower than 1.14 when uploading IO objects of unknown size (@janko-m)
111
+ * In `S3#upload` deprecate using aws-sdk-s3 lower than 1.14 when uploading IO objects of unknown size (@janko)
102
112
 
103
113
  ## 2.12.0 (2018-08-22)
104
114
 
105
- * Ignore nil values when assigning files from a remote URL (@janko-m)
115
+ * Ignore nil values when assigning files from a remote URL (@janko)
106
116
 
107
117
  * Ignore nil values when assigning files from a data URI (@GeekOnCoffee)
108
118
 
@@ -110,51 +120,51 @@
110
120
 
111
121
  * Use the appropriate unit in error messages of filesize validators in `validation_helpers` plugin (@hmistry)
112
122
 
113
- * Fix subclassing not inheriting storage resolvers from superclass in `dynamic_storage` plugin (@janko-m)
123
+ * Fix subclassing not inheriting storage resolvers from superclass in `dynamic_storage` plugin (@janko)
114
124
 
115
- * Un-deprecate assigning cached versions (@janko-m)
125
+ * Un-deprecate assigning cached versions (@janko)
116
126
 
117
- * Add `Attacher#assign_remote_url` which allows dynamically passing downloader options (@janko-m)
127
+ * Add `Attacher#assign_remote_url` which allows dynamically passing downloader options (@janko)
118
128
 
119
- * Deprecate `:storages` option in `download_endpoint` plugin in favour of `UploadedFile#download_url` (@janko-m)
129
+ * Deprecate `:storages` option in `download_endpoint` plugin in favour of `UploadedFile#download_url` (@janko)
120
130
 
121
- * Add `:redirect` option to `download_endpoint` plugin for redirecting to the uploaded file (@janko-m)
131
+ * Add `:redirect` option to `download_endpoint` plugin for redirecting to the uploaded file (@janko)
122
132
 
123
- * Fix encoding issues when uploading IO object with unknown size to S3 (@janko-m)
133
+ * Fix encoding issues when uploading IO object with unknown size to S3 (@janko)
124
134
 
125
- * Accept additional `File.open` arguments in `FileSystem#open` (@janko-m)
135
+ * Accept additional `File.open` arguments in `FileSystem#open` (@janko)
126
136
 
127
- * Add `:rewindable` option to `S3#open` for disabling caching of read content to disk (@janko-m)
137
+ * Add `:rewindable` option to `S3#open` for disabling caching of read content to disk (@janko)
128
138
 
129
- * Make `UploadedFile#open` always open a new IO object and close the previous one (@janko-m)
139
+ * Make `UploadedFile#open` always open a new IO object and close the previous one (@janko)
130
140
 
131
141
  ## 2.11.0 (2018-04-28)
132
142
 
133
- * Add `Shrine.with_file` for temporarily converting an IO-like object into a file (@janko-m)
143
+ * Add `Shrine.with_file` for temporarily converting an IO-like object into a file (@janko)
134
144
 
135
- * Add `:method` value to the `S3#presign` result indicating the HTTP verb that should be used (@janko-m)
145
+ * Add `:method` value to the `S3#presign` result indicating the HTTP verb that should be used (@janko)
136
146
 
137
- * Add ability to specify `method: :put` in `S3#presign` to generate data for PUT upload (@janko-m)
147
+ * Add ability to specify `method: :put` in `S3#presign` to generate data for PUT upload (@janko)
138
148
 
139
- * Return a `Struct` instead of a `Aws::S3::PresignedPost` object in `S3#presign` (@janko-m)
149
+ * Return a `Struct` instead of a `Aws::S3::PresignedPost` object in `S3#presign` (@janko)
140
150
 
141
- * Deprecate `Storage#presign` returning a custom object in `presign_endpoint` (@janko-m)
151
+ * Deprecate `Storage#presign` returning a custom object in `presign_endpoint` (@janko)
142
152
 
143
- * Allow `Storage#presign` to return a Hash in `presign_endpoint` (@janko-m)
153
+ * Allow `Storage#presign` to return a Hash in `presign_endpoint` (@janko)
144
154
 
145
- * Add ability to specify upload checksum in `upload_endpoint` plugin (@janko-m)
155
+ * Add ability to specify upload checksum in `upload_endpoint` plugin (@janko)
146
156
 
147
- * Don't raise exception in `:mini_magick` and `:ruby_vips` dimensions analyzers when image is invalid (@janko-m)
157
+ * Don't raise exception in `:mini_magick` and `:ruby_vips` dimensions analyzers when image is invalid (@janko)
148
158
 
149
- * Don't remove bucket name from S3 URL path with `:host` when `:force_path_style` is set (@janko-m)
159
+ * Don't remove bucket name from S3 URL path with `:host` when `:force_path_style` is set (@janko)
150
160
 
151
- * Correctly determine MIME type from extension of empty files (@janko-m)
161
+ * Correctly determine MIME type from extension of empty files (@janko)
152
162
 
153
- * Modify `UploadedFile#download` not to reopen the uploaded file if it's already open (@janko-m)
163
+ * Modify `UploadedFile#download` not to reopen the uploaded file if it's already open (@janko)
154
164
 
155
- * Add `UploadedFile#stream` for streaming content into a writable object (@janko-m)
165
+ * Add `UploadedFile#stream` for streaming content into a writable object (@janko)
156
166
 
157
- * Deprecate `direct_upload` plugin in favor of `upload_endpoint` and `presign_endpoint` plugins (@janko-m)
167
+ * Deprecate `direct_upload` plugin in favor of `upload_endpoint` and `presign_endpoint` plugins (@janko)
158
168
 
159
169
  ## 2.10.0 (2018-03-28)
160
170
 
@@ -162,37 +172,37 @@
162
172
 
163
173
  * Keep download endpoint URL the same regardless of metadata ordering (@MSchmidt)
164
174
 
165
- * Remove `:rack_mime` extension inferrer from the `infer_extension` plugin (@janko-m)
175
+ * Remove `:rack_mime` extension inferrer from the `infer_extension` plugin (@janko)
166
176
 
167
- * Allow `UploadedFile#download` to accept a block for temporary file download (@janko-m)
177
+ * Allow `UploadedFile#download` to accept a block for temporary file download (@janko)
168
178
 
169
- * Add `:ruby_vips` analyzer to `store_dimensions` plugin (@janko-m)
179
+ * Add `:ruby_vips` analyzer to `store_dimensions` plugin (@janko)
170
180
 
171
- * Add `:mini_magick` analyzer to `store_dimensions` plugin (@janko-m)
181
+ * Add `:mini_magick` analyzer to `store_dimensions` plugin (@janko)
172
182
 
173
- * Soft-rename `:heroku` logging format to `:logfmt` (@janko-m)
183
+ * Soft-rename `:heroku` logging format to `:logfmt` (@janko)
174
184
 
175
- * Deprecate `Shrine::IO_METHODS` constant (@janko-m)
185
+ * Deprecate `Shrine::IO_METHODS` constant (@janko)
176
186
 
177
- * Don't require IO size to be known on upload (@janko-m)
187
+ * Don't require IO size to be known on upload (@janko)
178
188
 
179
189
  * Inherit the logger on subclassing `Shrine` and make it shared across subclasses (@hmistry)
180
190
 
181
191
  ## 2.9.0 (2018-01-27)
182
192
 
183
- * Support arrays of files in `versions` plugin (@janko-m)
193
+ * Support arrays of files in `versions` plugin (@janko)
184
194
 
185
- * Added `:marcel` analyzer to `determine_mime_type` plugin (@janko-m)
195
+ * Added `:marcel` analyzer to `determine_mime_type` plugin (@janko)
186
196
 
187
- * Deprecate `:filename` option of the `data_uri` plugin in favour of the new `infer_extension` plugin (@janko-m)
197
+ * Deprecate `:filename` option of the `data_uri` plugin in favour of the new `infer_extension` plugin (@janko)
188
198
 
189
- * Add `infer_extension` plugin for automatically deducing upload location extension from MIME type (@janko-m)
199
+ * Add `infer_extension` plugin for automatically deducing upload location extension from MIME type (@janko)
190
200
 
191
- * Apply default storage options passed via `Attachment.new` in `backgrounding` plugin (@janko-m)
201
+ * Apply default storage options passed via `Attachment.new` in `backgrounding` plugin (@janko)
192
202
 
193
203
  * Fix S3 storage replacing spaces in filename with "+" symbols (@ndbroadbent)
194
204
 
195
- * Deprecate the `multi_delete` plugin (@janko-m)
205
+ * Deprecate the `multi_delete` plugin (@janko)
196
206
 
197
207
  * Allow calling `UploadedFile#open` without passing a block (@hmistry)
198
208
 
@@ -200,662 +210,662 @@
200
210
 
201
211
  * Freeze all string literals (@hmistry)
202
212
 
203
- * Allow passing options to `Model#<attachment>_attacher` for overriding `Attacher` options (@janko-m)
213
+ * Allow passing options to `Model#<attachment>_attacher` for overriding `Attacher` options (@janko)
204
214
 
205
215
  ## 2.8.0 (2017-10-11)
206
216
 
207
- * Expand relative directory paths when initializing `Storage::FileSystem` (@janko-m)
217
+ * Expand relative directory paths when initializing `Storage::FileSystem` (@janko)
208
218
 
209
- * Fix `logging` plugin erroring on `:json` format when ActiveSupport is loaded (@janko-m)
219
+ * Fix `logging` plugin erroring on `:json` format when ActiveSupport is loaded (@janko)
210
220
 
211
- * Allow `Storage::S3#clear!` to take a block for specifying which objects to delete (@janko-m)
221
+ * Allow `Storage::S3#clear!` to take a block for specifying which objects to delete (@janko)
212
222
 
213
- * Make `:filemagic` analyzer close the FileMagic descriptor even in case of exceptions (@janko-m)
223
+ * Make `:filemagic` analyzer close the FileMagic descriptor even in case of exceptions (@janko)
214
224
 
215
- * Make `:file` analyzer work for potential file types which have magic bytes farther than 256 KB (@janko-m)
225
+ * Make `:file` analyzer work for potential file types which have magic bytes farther than 256 KB (@janko)
216
226
 
217
- * Deprecate `aws-sdk` 2.x in favour of the new `aws-sdk-s3` gem (@janko-m)
227
+ * Deprecate `aws-sdk` 2.x in favour of the new `aws-sdk-s3` gem (@janko)
218
228
 
219
- * Modify `UploadedFile#extension` to always return the extension in lowercase format (@janko-m)
229
+ * Modify `UploadedFile#extension` to always return the extension in lowercase format (@janko)
220
230
 
221
- * Downcase the original file extension when generating an upload location (@janko-m)
231
+ * Downcase the original file extension when generating an upload location (@janko)
222
232
 
223
- * Allow specifying the full record attribute name in `metadata_attributes` plugin (@janko-m)
233
+ * Allow specifying the full record attribute name in `metadata_attributes` plugin (@janko)
224
234
 
225
- * Allow specifying metadata mappings on `metadata_attributes` plugin initialization (@janko-m)
235
+ * Allow specifying metadata mappings on `metadata_attributes` plugin initialization (@janko)
226
236
 
227
- * Add support for ranged requests in `download_endpoint` and `rack_response` plugins (@janko-m)
237
+ * Add support for ranged requests in `download_endpoint` and `rack_response` plugins (@janko)
228
238
 
229
- * Allow `Storage::S3#open` and `Storage::S3#download` to accept additional options (@janko-m)
239
+ * Allow `Storage::S3#open` and `Storage::S3#download` to accept additional options (@janko)
230
240
 
231
- * Forward any options given to `UploadedFile#open` or `UploadedFile#download` to the storage (@janko-m)
241
+ * Forward any options given to `UploadedFile#open` or `UploadedFile#download` to the storage (@janko)
232
242
 
233
- * Update `direct_upload` plugin to support Roda 3 (@janko-m)
243
+ * Update `direct_upload` plugin to support Roda 3 (@janko)
234
244
 
235
245
  ## 2.7.0 (2017-09-11)
236
246
 
237
- * Deprecate the `Shrine::DownloadEndpoint` constant over `Shrine.download_endpoint` (@janko-m)
247
+ * Deprecate the `Shrine::DownloadEndpoint` constant over `Shrine.download_endpoint` (@janko)
238
248
 
239
- * Allow an additional `#headers` attribute on presigns and return it in `presign_endpoint` (@janko-m)
249
+ * Allow an additional `#headers` attribute on presigns and return it in `presign_endpoint` (@janko)
240
250
 
241
- * Allow overriding `upload_endpoint` and `presign_endpoint` options per-endpoint (@janko-m)
251
+ * Allow overriding `upload_endpoint` and `presign_endpoint` options per-endpoint (@janko)
242
252
 
243
- * Add `:presign` and `:rack_response` options to `presign_endpoint` (@janko-m)
253
+ * Add `:presign` and `:rack_response` options to `presign_endpoint` (@janko)
244
254
 
245
- * Add `:upload`, `:upload_context` and `:rack_response` options to `upload_endpoint` (@janko-m)
255
+ * Add `:upload`, `:upload_context` and `:rack_response` options to `upload_endpoint` (@janko)
246
256
 
247
- * Modify `upload_endpoint` and `presign_endpoint` to return `text/plain` error responses (@janko-m)
257
+ * Modify `upload_endpoint` and `presign_endpoint` to return `text/plain` error responses (@janko)
248
258
 
249
- * Add `:request` upload context parameter in `upload_endpoint` (@janko-m)
259
+ * Add `:request` upload context parameter in `upload_endpoint` (@janko)
250
260
 
251
- * Change `:action` upload context parameter to `:upload` in `upload_endpoint` (@janko-m)
261
+ * Change `:action` upload context parameter to `:upload` in `upload_endpoint` (@janko)
252
262
 
253
- * Return `405 Method Not Allowed` on invalid HTTP verb in `upload_endpoint` and `presign_endpoint` (@janko-m)
263
+ * Return `405 Method Not Allowed` on invalid HTTP verb in `upload_endpoint` and `presign_endpoint` (@janko)
254
264
 
255
- * Modify `upload_endpoint` and `presign_endpoint` to handle requests on the root URL (@janko-m)
265
+ * Modify `upload_endpoint` and `presign_endpoint` to handle requests on the root URL (@janko)
256
266
 
257
- * Allow creating Rack apps dynamically in `upload_endpoint` and `presign_endpoint` (@janko-m)
267
+ * Allow creating Rack apps dynamically in `upload_endpoint` and `presign_endpoint` (@janko)
258
268
 
259
- * Remove Roda dependency from `upload_endpoint` and `presign_endpoint` plugins (@janko-m)
269
+ * Remove Roda dependency from `upload_endpoint` and `presign_endpoint` plugins (@janko)
260
270
 
261
- * Split `direct_upload` plugin into `upload_endpoint` and `presign_endpoint` plugins (@janko-m)
271
+ * Split `direct_upload` plugin into `upload_endpoint` and `presign_endpoint` plugins (@janko)
262
272
 
263
273
  * Support the new `aws-sdk-s3` gem in `Shrine::Storage::S3` (@lizdeika)
264
274
 
265
- * Return `Cache-Control` header in `download_endpoint` to permanently cache responses (@janko-m)
275
+ * Return `Cache-Control` header in `download_endpoint` to permanently cache responses (@janko)
266
276
 
267
- * Return `404 Not Found` when uploaded file doesn't exist in `download_endpoint` (@janko-m)
277
+ * Return `404 Not Found` when uploaded file doesn't exist in `download_endpoint` (@janko)
268
278
 
269
- * Utilize uploaded file metadata when generating response in `download_endpoint` (@janko-m)
279
+ * Utilize uploaded file metadata when generating response in `download_endpoint` (@janko)
270
280
 
271
- * Fix deprecation warning when generating fake presign with query parameters (@janko-m)
281
+ * Fix deprecation warning when generating fake presign with query parameters (@janko)
272
282
 
273
283
  * Don't raise error in `file` and `filemagic` MIME type analyzer on empty IO (@ypresto)
274
284
 
275
- * Require `down` in `remote_url` plugin even when a custom downloader is given (@janko-m)
285
+ * Require `down` in `remote_url` plugin even when a custom downloader is given (@janko)
276
286
 
277
- * Require `time` library in `logging` plugin to fix `undefined method #iso8601 for Time` (@janko-m)
287
+ * Require `time` library in `logging` plugin to fix `undefined method #iso8601 for Time` (@janko)
278
288
 
279
289
  * Allow validations defined on a superclass to be reused in a subclass (@printercu)
280
290
 
281
- * Allow validation error messages to be an array of arguments for ActiveRecord (@janko-m)
291
+ * Allow validation error messages to be an array of arguments for ActiveRecord (@janko)
282
292
 
283
- * Allow model subclasses to override the attachment with a different uploader (@janko-m)
293
+ * Allow model subclasses to override the attachment with a different uploader (@janko)
284
294
 
285
295
  * Accept `Attacher.new` options like `store:` and `cache:` via `Attachment.new` (@ypresto)
286
296
 
287
- * Raise `ArgumentError` when `:bucket` option is nil in `Shrine::Storage::S3#initialize` (@janko-m)
297
+ * Raise `ArgumentError` when `:bucket` option is nil in `Shrine::Storage::S3#initialize` (@janko)
288
298
 
289
- * Don't wrap base64-encoded content into 60 columns in `UploadedFile#base64` and `#data_uri` (@janko-m)
299
+ * Don't wrap base64-encoded content into 60 columns in `UploadedFile#base64` and `#data_uri` (@janko)
290
300
 
291
- * Add `:mini_mime` option to `determine_mime_type` plugin for using the [mini_mime](https://github.com/discourse/mini_mime) gem (@janko-m)
301
+ * Add `:mini_mime` option to `determine_mime_type` plugin for using the [mini_mime](https://github.com/discourse/mini_mime) gem (@janko)
292
302
 
293
- * Fix `data_uri` plugin raising an exception on Ruby 2.4.1 when using raw data URIs (@janko-m)
303
+ * Fix `data_uri` plugin raising an exception on Ruby 2.4.1 when using raw data URIs (@janko)
294
304
 
295
- * Implement `Shrine::Storage::S3#open` using the aws-sdk gem instead of `Down.open` (@janko-m)
305
+ * Implement `Shrine::Storage::S3#open` using the aws-sdk gem instead of `Down.open` (@janko)
296
306
 
297
- * Un-deprecate `Shrine.uploaded_file` accepting file data as JSON string (@janko-m)
307
+ * Un-deprecate `Shrine.uploaded_file` accepting file data as JSON string (@janko)
298
308
 
299
- * Don't wrap base64-formatted signatures to 60 columns (@janko-m)
309
+ * Don't wrap base64-formatted signatures to 60 columns (@janko)
300
310
 
301
- * Don't add a newline at the end of the base64-formatted signature (@janko-m)
311
+ * Don't add a newline at the end of the base64-formatted signature (@janko)
302
312
 
303
313
  ## 2.6.1 (2017-04-12)
304
314
 
305
- * Fix `download_endpoint` returning incorrect reponse body in some cases (@janko-m)
315
+ * Fix `download_endpoint` returning incorrect reponse body in some cases (@janko)
306
316
 
307
317
  ## 2.6.0 (2017-04-04)
308
318
 
309
- * Make `Shrine::Storage::FileSystem#path` public which returns path to the file as a `Pathname` object (@janko-m)
319
+ * Make `Shrine::Storage::FileSystem#path` public which returns path to the file as a `Pathname` object (@janko)
310
320
 
311
- * Add `Shrine.rack_file` to `rack_file` plugin for converting Rack uploaded file hash into an IO (@janko-m)
321
+ * Add `Shrine.rack_file` to `rack_file` plugin for converting Rack uploaded file hash into an IO (@janko)
312
322
 
313
- * Deprecate passing a Rack file hash to `Shrine#upload` (@janko-m)
323
+ * Deprecate passing a Rack file hash to `Shrine#upload` (@janko)
314
324
 
315
- * Expose `Shrine.extract_dimensions` and `Shrine.dimensions_analyzers` in `store_dimensions` plugin (@janko-m)
325
+ * Expose `Shrine.extract_dimensions` and `Shrine.dimensions_analyzers` in `store_dimensions` plugin (@janko)
316
326
 
317
- * Add `metadata_attributes` plugin for syncing attachment metadata with additional record attributes (@janko-m)
327
+ * Add `metadata_attributes` plugin for syncing attachment metadata with additional record attributes (@janko)
318
328
 
319
- * Remove the undocumented `:magic_header` option from `determine_mime_type` plugin (@janko-m)
329
+ * Remove the undocumented `:magic_header` option from `determine_mime_type` plugin (@janko)
320
330
 
321
- * Expose `Shrine.determine_mime_type` and `Shrine.mime_type_analyzers` in `determine_mime_type` plugin (@janko-m)
331
+ * Expose `Shrine.determine_mime_type` and `Shrine.mime_type_analyzers` in `determine_mime_type` plugin (@janko)
322
332
 
323
- * Add `signature` plugin for calculating a SHA{1,256,384,512}/MD5/CRC32 hash of a file (@janko-m)
333
+ * Add `signature` plugin for calculating a SHA{1,256,384,512}/MD5/CRC32 hash of a file (@janko)
324
334
 
325
- * Return the resolved plugin module when calling `Shrine.plugin` (@janko-m)
335
+ * Return the resolved plugin module when calling `Shrine.plugin` (@janko)
326
336
 
327
- * Accept hash of metadata with symbol keys as well in `add_metadata` block (@janko-m)
337
+ * Accept hash of metadata with symbol keys as well in `add_metadata` block (@janko)
328
338
 
329
- * Add `refresh_metadata` plugin for re-extracting metadata from an uploaded file (@janko-m)
339
+ * Add `refresh_metadata` plugin for re-extracting metadata from an uploaded file (@janko)
330
340
 
331
- * Allow S3 storage to use parallelized multipart upload for files from FileSystem storage as well (@janko-m)
341
+ * Allow S3 storage to use parallelized multipart upload for files from FileSystem storage as well (@janko)
332
342
 
333
- * Improve default multipart copy threshold for S3 storage (@janko-m)
343
+ * Improve default multipart copy threshold for S3 storage (@janko)
334
344
 
335
- * Allow specifying multipart upload and copy thresholds separately in `Shrine::Storage::S3` (@janko-m)
345
+ * Allow specifying multipart upload and copy thresholds separately in `Shrine::Storage::S3` (@janko)
336
346
 
337
- * Fix `Storage::FileSystem#clear!` not deleting old files if there are newer files in the same directory (@janko-m)
347
+ * Fix `Storage::FileSystem#clear!` not deleting old files if there are newer files in the same directory (@janko)
338
348
 
339
- * Allow media type in the data URI to have additional parameters (@janko-m)
349
+ * Allow media type in the data URI to have additional parameters (@janko)
340
350
 
341
- * URI-decode non-base64 data URIs, as such data URIs are URI-encoded according to the specification (@janko-m)
351
+ * URI-decode non-base64 data URIs, as such data URIs are URI-encoded according to the specification (@janko)
342
352
 
343
- * Improve performance of parsing data URIs by 10x switching from a regex to StringScanner (@janko-m)
353
+ * Improve performance of parsing data URIs by 10x switching from a regex to StringScanner (@janko)
344
354
 
345
- * Reduce memory usage of `Shrine.data_uri` and `UploadedFile#base64` by at least 2x (@janko-m)
355
+ * Reduce memory usage of `Shrine.data_uri` and `UploadedFile#base64` by at least 2x (@janko)
346
356
 
347
- * Add `Shrine.data_uri` to `data_uri` plugin which parses and converts the given data URI to an IO object (@janko-m)
357
+ * Add `Shrine.data_uri` to `data_uri` plugin which parses and converts the given data URI to an IO object (@janko)
348
358
 
349
- * Make `rack_file` plugin work with HashWithIndifferentAccess-like objects such as Hashie::Mash (@janko-m)
359
+ * Make `rack_file` plugin work with HashWithIndifferentAccess-like objects such as Hashie::Mash (@janko)
350
360
 
351
- * Expose `Aws::S3::Client` via `Shrine::Storage::S3#client`, and deprecate `Shrine::Strorage::S3#s3` (@janko-m)
361
+ * Expose `Aws::S3::Client` via `Shrine::Storage::S3#client`, and deprecate `Shrine::Strorage::S3#s3` (@janko)
352
362
 
353
- * Modify `delete_raw` plugin to delete any IOs that respond to `#path` (@janko-m)
363
+ * Modify `delete_raw` plugin to delete any IOs that respond to `#path` (@janko)
354
364
 
355
- * Require the Tempfile standard library in lib/shrine.rb (@janko-m)
365
+ * Require the Tempfile standard library in lib/shrine.rb (@janko)
356
366
 
357
- * Deprecate dimensions validations passing when a dimension is nil (@janko-m)
367
+ * Deprecate dimensions validations passing when a dimension is nil (@janko)
358
368
 
359
- * Deprecate passing regexes to type/extension whitelists/blacklists in `validation_helpers` (@janko-m)
369
+ * Deprecate passing regexes to type/extension whitelists/blacklists in `validation_helpers` (@janko)
360
370
 
361
- * Don't include list of blacklisted types and extensions in default `validation_helpers` messages (@janko-m)
371
+ * Don't include list of blacklisted types and extensions in default `validation_helpers` messages (@janko)
362
372
 
363
- * Improve default error messages in `validation_helpers` plugin (@janko-m)
373
+ * Improve default error messages in `validation_helpers` plugin (@janko)
364
374
 
365
- * Don't require the `benchmark` standard library in `logging` plugin (@janko-m)
375
+ * Don't require the `benchmark` standard library in `logging` plugin (@janko)
366
376
 
367
- * Don't dirty the attacher in `Attacher#set` when attachment hasn't changed (@janko-m)
377
+ * Don't dirty the attacher in `Attacher#set` when attachment hasn't changed (@janko)
368
378
 
369
- * Rename `Attacher#attached?` to a more accurate `Attacher#changed?` (@janko-m)
379
+ * Rename `Attacher#attached?` to a more accurate `Attacher#changed?` (@janko)
370
380
 
371
- * Allow calling `Attacher#finalize` if attachment hasn't changed, instead of raising an error (@janko-m)
381
+ * Allow calling `Attacher#finalize` if attachment hasn't changed, instead of raising an error (@janko)
372
382
 
373
- * Make `Shrine::Storage::S3#object` method public (@janko-m)
383
+ * Make `Shrine::Storage::S3#object` method public (@janko)
374
384
 
375
- * Prevent autoloading race conditions in aws-sdk gem by eager loading the S3 service (@janko-m)
385
+ * Prevent autoloading race conditions in aws-sdk gem by eager loading the S3 service (@janko)
376
386
 
377
- * Raise `Shrine::Error` when `Shrine#generate_location` returns nil (@janko-m)
387
+ * Raise `Shrine::Error` when `Shrine#generate_location` returns nil (@janko)
378
388
 
379
389
  ## 2.5.0 (2016-11-11)
380
390
 
381
- * Add `Attacher.default_url` as the idiomatic way of declaring default URLs (@janko-m)
391
+ * Add `Attacher.default_url` as the idiomatic way of declaring default URLs (@janko)
382
392
 
383
- * Allow uploaders themselves to accept Rack uploaded files when `rack_file` is loaded (@janko-m)
393
+ * Allow uploaders themselves to accept Rack uploaded files when `rack_file` is loaded (@janko)
384
394
 
385
- * Raise a descriptive error when two versions are pointing to the same IO object (@janko-m)
395
+ * Raise a descriptive error when two versions are pointing to the same IO object (@janko)
386
396
 
387
- * Make `backgrounding` plugin work with plain model instances (@janko-m)
397
+ * Make `backgrounding` plugin work with plain model instances (@janko)
388
398
 
389
- * Make validation methods in `validation_helpers` plugin return whether validation succeeded (@janko-m)
399
+ * Make validation methods in `validation_helpers` plugin return whether validation succeeded (@janko)
390
400
 
391
401
  * Make extension matching case insensitive in `validation_helpers` plugin (@jonasheinrich)
392
402
 
393
- * Make `remove_invalid` plugin remove dirty state on attacher after removing invalid file (@janko-m)
403
+ * Make `remove_invalid` plugin remove dirty state on attacher after removing invalid file (@janko)
394
404
 
395
- * Raise error if `Shrine::UploadedFile` isn't initialized with valid data (@janko-m)
405
+ * Raise error if `Shrine::UploadedFile` isn't initialized with valid data (@janko)
396
406
 
397
407
  * Accept `extension` parameter without the dot in presign endpoint of `direct_upload` plugin (@jonasheinrich)
398
408
 
399
- * Add `:fallback_to_original` option to `versions` plugin for disabling fallback to original file (@janko-m)
409
+ * Add `:fallback_to_original` option to `versions` plugin for disabling fallback to original file (@janko)
400
410
 
401
- * Add `#dimensions` method to `UploadedFile` when loading `store_dimensions` plugin (@janko-m)
411
+ * Add `#dimensions` method to `UploadedFile` when loading `store_dimensions` plugin (@janko)
402
412
 
403
- * Make it possible to extract multiple metadata values at once with the `add_metadata` plugin (@janko-m)
413
+ * Make it possible to extract multiple metadata values at once with the `add_metadata` plugin (@janko)
404
414
 
405
415
  ## 2.4.1 (2016-10-17)
406
416
 
407
- * Move back JSON serialization from `Attacher#write` to `Attacher#_set` (@janko-m)
417
+ * Move back JSON serialization from `Attacher#write` to `Attacher#_set` (@janko)
408
418
 
409
- * Make `remove_invalid` plugin assign back a previous attachment if was there (@janko-m)
419
+ * Make `remove_invalid` plugin assign back a previous attachment if was there (@janko)
410
420
 
411
- * Deprecate `Storage::FileSystem#download` (@janko-m)
421
+ * Deprecate `Storage::FileSystem#download` (@janko)
412
422
 
413
- * In `UploadedFile#download` use extension from `#original_filename` if `#id` doesn't have it (@janko-m)
423
+ * In `UploadedFile#download` use extension from `#original_filename` if `#id` doesn't have it (@janko)
414
424
 
415
425
  ## 2.4.0 (2016-10-11)
416
426
 
417
- * Add `#convert_before_write` and `#convert_after_read` on the Attacher for data attribute conversion (@janko-m)
427
+ * Add `#convert_before_write` and `#convert_after_read` on the Attacher for data attribute conversion (@janko)
418
428
 
419
- * Extract the `<attachment>_data` attribute name into `Attacher#data_attribute` (@janko-m)
429
+ * Extract the `<attachment>_data` attribute name into `Attacher#data_attribute` (@janko)
420
430
 
421
- * Support JSON and JSONB PostgreSQL columns with ActiveRecord (@janko-m)
431
+ * Support JSON and JSONB PostgreSQL columns with ActiveRecord (@janko)
422
432
 
423
- * Fix S3 storage not handling filenames with double quotes in Content-Disposition header (@janko-m)
433
+ * Fix S3 storage not handling filenames with double quotes in Content-Disposition header (@janko)
424
434
 
425
- * Work around aws-sdk failing with non-ASCII characters in Content-Disposition header (@janko-m)
435
+ * Work around aws-sdk failing with non-ASCII characters in Content-Disposition header (@janko)
426
436
 
427
- * Allow dynamically generating URL options in `default_url_options` plugin (@janko-m)
437
+ * Allow dynamically generating URL options in `default_url_options` plugin (@janko)
428
438
 
429
- * Don't run file validations when duplicating the record in `copy` plugin (@janko-m)
439
+ * Don't run file validations when duplicating the record in `copy` plugin (@janko)
430
440
 
431
- * Don't use `Storage#stream` in download_endpoint plugin anymore, rely on `Storage#open` (@janko-m)
441
+ * Don't use `Storage#stream` in download_endpoint plugin anymore, rely on `Storage#open` (@janko)
432
442
 
433
- * Remove explicitly unlinking Tempfiles returned by `Storage#open` (@janko-m)
443
+ * Remove explicitly unlinking Tempfiles returned by `Storage#open` (@janko)
434
444
 
435
- * Move `:host` from first-class storage option to `#url` option on FileSystem and S3 storage (@janko-m)
445
+ * Move `:host` from first-class storage option to `#url` option on FileSystem and S3 storage (@janko)
436
446
 
437
- * Don't fail in FileSystem storage when attempting to delete a file that doesn't exist (@janko-m)
447
+ * Don't fail in FileSystem storage when attempting to delete a file that doesn't exist (@janko)
438
448
 
439
- * In `UploadedFile#open` handle the case when `Storage#open` raises an error (@janko-m)
449
+ * In `UploadedFile#open` handle the case when `Storage#open` raises an error (@janko)
440
450
 
441
- * Make the `sequel` plugin use less memory during transactions (@janko-m)
451
+ * Make the `sequel` plugin use less memory during transactions (@janko)
442
452
 
443
- * Use Roda's streaming plugin in `download_endpoint` for better EventMachine integration (@janko-m)
453
+ * Use Roda's streaming plugin in `download_endpoint` for better EventMachine integration (@janko)
444
454
 
445
- * Deprecate accepting a JSON string in `Shrine.uploaded_file` (@janko-m)
455
+ * Deprecate accepting a JSON string in `Shrine.uploaded_file` (@janko)
446
456
 
447
- * In S3 storage automatically write original filename to `Content-Disposition` header (@janko-m)
457
+ * In S3 storage automatically write original filename to `Content-Disposition` header (@janko)
448
458
 
449
- * Override `#to_s` in `Shrine::Attachment` for better introspection with `puts` (@janko-m)
459
+ * Override `#to_s` in `Shrine::Attachment` for better introspection with `puts` (@janko)
450
460
 
451
461
  ## 2.3.1 (2016-09-01)
452
462
 
453
- * Don't change permissions of existing directories in FileSystem storage (@janko-m)
463
+ * Don't change permissions of existing directories in FileSystem storage (@janko)
454
464
 
455
465
  ## 2.3.0 (2016-08-27)
456
466
 
457
- * Prevent client from caching the presign response in direct_upload plugin (@janko-m)
467
+ * Prevent client from caching the presign response in direct_upload plugin (@janko)
458
468
 
459
- * Make Sequel update only the attachment in background job (@janko-m)
469
+ * Make Sequel update only the attachment in background job (@janko)
460
470
 
461
- * Add copy plugin for copying files from one record to another (@janko-m)
471
+ * Add copy plugin for copying files from one record to another (@janko)
462
472
 
463
- * Disable moving when uploading stored file to backup storage (@janko-m)
473
+ * Disable moving when uploading stored file to backup storage (@janko)
464
474
 
465
- * Make `Attacher#recache` from the recache plugin public for standalone usage (@janko-m)
475
+ * Make `Attacher#recache` from the recache plugin public for standalone usage (@janko)
466
476
 
467
- * Allow changing `Shrine::Attacher#context` once the attacher is instantiated (@janko-m)
477
+ * Allow changing `Shrine::Attacher#context` once the attacher is instantiated (@janko)
468
478
 
469
- * Make `Attacher#read` for reading the attachment column public (@janko-m)
479
+ * Make `Attacher#read` for reading the attachment column public (@janko)
470
480
 
471
- * Don't rely on the `#id` writer on a model instance in backgrounding plugin (@janko-m)
481
+ * Don't rely on the `#id` writer on a model instance in backgrounding plugin (@janko)
472
482
 
473
- * Don't make `Attacher#swap` private in sequel and activerecord plugins (@janko-m)
483
+ * Don't make `Attacher#swap` private in sequel and activerecord plugins (@janko)
474
484
 
475
- * Set default UNIX permissions to 0644 for files and 0755 for directories (@janko-m)
485
+ * Set default UNIX permissions to 0644 for files and 0755 for directories (@janko)
476
486
 
477
- * Apply directory permissions to all subfolders inside the main folder (@janko-m)
487
+ * Apply directory permissions to all subfolders inside the main folder (@janko)
478
488
 
479
- * Add `:directory_permissions` to `Storage::FileSystem` (@janko-m)
489
+ * Add `:directory_permissions` to `Storage::FileSystem` (@janko)
480
490
 
481
491
  ## 2.2.0 (2016-07-29)
482
492
 
483
- * Soft deprecate `:phase` over `:action` in `context` (@janko-m)
493
+ * Soft deprecate `:phase` over `:action` in `context` (@janko)
484
494
 
485
- * Add ability to sequel and activerecord plugins to disable callbacks and validations (@janko-m)
495
+ * Add ability to sequel and activerecord plugins to disable callbacks and validations (@janko)
486
496
 
487
- * The direct_upload endpoint now always includes both upload and presign routes (@janko-m)
497
+ * The direct_upload endpoint now always includes both upload and presign routes (@janko)
488
498
 
489
- * Don't let the combination for delete_raw and moving plugins trigger any errors (@janko-m)
499
+ * Don't let the combination for delete_raw and moving plugins trigger any errors (@janko)
490
500
 
491
- * Add `UploadedFile#open` that mimics `File.open` with a block (@janko-m)
501
+ * Add `UploadedFile#open` that mimics `File.open` with a block (@janko)
492
502
 
493
- * In the storage linter don't require `#clear!` to be implemented (@janko-m)
503
+ * In the storage linter don't require `#clear!` to be implemented (@janko)
494
504
 
495
- * In backgrounding plugin don't require model to have attachment module included (@janko-m)
505
+ * In backgrounding plugin don't require model to have attachment module included (@janko)
496
506
 
497
- * Add add_metadata plugin for defining additional metadata values to be extracted (@janko-m)
507
+ * Add add_metadata plugin for defining additional metadata values to be extracted (@janko)
498
508
 
499
- * In determine_mime_type plugin raise error when file command wasn't found or errored (@janko-m)
509
+ * In determine_mime_type plugin raise error when file command wasn't found or errored (@janko)
500
510
 
501
- * Add processing plugin for simpler and more declarative definition of processing (@janko-m)
511
+ * Add processing plugin for simpler and more declarative definition of processing (@janko)
502
512
 
503
- * Storage classes don't need to implement the `#read` method anymore (@janko-m)
513
+ * Storage classes don't need to implement the `#read` method anymore (@janko)
504
514
 
505
- * Use aws-sdk in `S3#download`, which will automatically retry failed downloads (@janko-m)
515
+ * Use aws-sdk in `S3#download`, which will automatically retry failed downloads (@janko)
506
516
 
507
- * Add `:multipart_threshold` for when S3 storage should use parallelized multipart copy/upload (@janko-m)
517
+ * Add `:multipart_threshold` for when S3 storage should use parallelized multipart copy/upload (@janko)
508
518
 
509
- * Automatically use optimized multipart S3 upload for files larger than 15MB (@janko-m)
519
+ * Automatically use optimized multipart S3 upload for files larger than 15MB (@janko)
510
520
 
511
- * Avoid an additional HEAD request to determine content length in multipart S3 copy (@janko-m)
521
+ * Avoid an additional HEAD request to determine content length in multipart S3 copy (@janko)
512
522
 
513
523
  ## 2.1.1 (2016-07-14)
514
524
 
515
- * Fix `S3#open` throwing a NameError if `net/http` isn't required (@janko-m)
525
+ * Fix `S3#open` throwing a NameError if `net/http` isn't required (@janko)
516
526
 
517
527
  ## 2.1.0 (2016-06-27)
518
528
 
519
- * Remove `:names` from versions plugin, and deprecate generating versions in :cache phase (@janko-m)
529
+ * Remove `:names` from versions plugin, and deprecate generating versions in :cache phase (@janko)
520
530
 
521
- * Pass a `Shrine::UploadedFile` in restore_cached_data instead of the raw IO (@janko-m)
531
+ * Pass a `Shrine::UploadedFile` in restore_cached_data instead of the raw IO (@janko)
522
532
 
523
- * Increase magic header length in determine_mime_type and make it configurable (@janko-m)
533
+ * Increase magic header length in determine_mime_type and make it configurable (@janko)
524
534
 
525
- * Execute `file` command in determine_mime_type the same way for files as for general IOs (@janko-m)
535
+ * Execute `file` command in determine_mime_type the same way for files as for general IOs (@janko)
526
536
 
527
- * Make logging and parallelize plugins work properly when loaded in this order (@janko-m)
537
+ * Make logging and parallelize plugins work properly when loaded in this order (@janko)
528
538
 
529
- * Don't assert arity of IO methods, so that objects like `Rack::Test::UploadedFile` are allowed (@janko-m)
539
+ * Don't assert arity of IO methods, so that objects like `Rack::Test::UploadedFile` are allowed (@janko)
530
540
 
531
- * Deprecate `#cached_<attachment>_data=` over using `<attachment>` for the hidden field (@janko-m)
541
+ * Deprecate `#cached_<attachment>_data=` over using `<attachment>` for the hidden field (@janko)
532
542
 
533
543
  ## 2.0.1 (2016-05-30)
534
544
 
535
- * Don't override previously set default_url in versions plugin (@janko-m)
545
+ * Don't override previously set default_url in versions plugin (@janko)
536
546
 
537
547
  ## 2.0.0 (2016-05-19)
538
548
 
539
- * Include query parameters in CDN-ed S3 URLs, making them work for private objects (@janko-m)
549
+ * Include query parameters in CDN-ed S3 URLs, making them work for private objects (@janko)
540
550
 
541
- * Remove the `:include_error` option from remote_url plugin (@janko-m)
551
+ * Remove the `:include_error` option from remote_url plugin (@janko)
542
552
 
543
- * Make previous plugin options persist when reapplying the plugin (@janko-m)
553
+ * Make previous plugin options persist when reapplying the plugin (@janko)
544
554
 
545
- * Improve how upload options and metadata are passed to storage's `#upload` and `#move` (@janko-m)
555
+ * Improve how upload options and metadata are passed to storage's `#upload` and `#move` (@janko)
546
556
 
547
- * Remove `Shrine::Confirm` and confirming `Storage#clear!` in general (@janko-m)
557
+ * Remove `Shrine::Confirm` and confirming `Storage#clear!` in general (@janko)
548
558
 
549
- * Allow implementing a custom dimensions analyzer using built-in ones (@janko-m)
559
+ * Allow implementing a custom dimensions analyzer using built-in ones (@janko)
550
560
 
551
- * Don't error in determine_mime_type when MimeMagic cannot determine the MIME (@janko-m)
561
+ * Don't error in determine_mime_type when MimeMagic cannot determine the MIME (@janko)
552
562
 
553
- * Allow implementing a custom MIME type analyzer using built-in ones (@janko-m)
563
+ * Allow implementing a custom MIME type analyzer using built-in ones (@janko)
554
564
 
555
- * Don't check that the cached file exists in restore_cached_data plugin (@janko-m)
565
+ * Don't check that the cached file exists in restore_cached_data plugin (@janko)
556
566
 
557
- * Deprecate migration_helpers plugin and move `Attacher#cached?` and `Attacher#stored?` to base (@janko-m)
567
+ * Deprecate migration_helpers plugin and move `Attacher#cached?` and `Attacher#stored?` to base (@janko)
558
568
 
559
- * Don't trigger restore_cached_data plugin functionality when assigning the same cached attachment (@janko-m)
569
+ * Don't trigger restore_cached_data plugin functionality when assigning the same cached attachment (@janko)
560
570
 
561
- * Give `Attacher#_promote` and `Attacher#promote` the same method signature (@janko-m)
571
+ * Give `Attacher#_promote` and `Attacher#promote` the same method signature (@janko)
562
572
 
563
- * Add `Attacher#_delete` which now spawns a background job instead of `Attacher#delete!` (@janko-m)
573
+ * Add `Attacher#_delete` which now spawns a background job instead of `Attacher#delete!` (@janko)
564
574
 
565
- * Make `Attacher#cache!`, `Attacher#store!`, and `Attacher#delete!` public (@janko-m)
575
+ * Make `Attacher#cache!`, `Attacher#store!`, and `Attacher#delete!` public (@janko)
566
576
 
567
- * Don't cache storages in dynamic_storage plugin (@janko-m)
577
+ * Don't cache storages in dynamic_storage plugin (@janko)
568
578
 
569
- * Make only one HTTP request in download_endpoint plugin (@janko-m)
579
+ * Make only one HTTP request in download_endpoint plugin (@janko)
570
580
 
571
- * Print secuity warning when not using determine_mime_type plugin (@janko-m)
581
+ * Print secuity warning when not using determine_mime_type plugin (@janko)
572
582
 
573
- * Support Mongoid in backgrounding plugin (@janko-m)
583
+ * Support Mongoid in backgrounding plugin (@janko)
574
584
 
575
- * Allow including attachment module to non-`Sequel::Model` objects in sequel plugin (@janko-m)
585
+ * Allow including attachment module to non-`Sequel::Model` objects in sequel plugin (@janko)
576
586
 
577
587
  * Handle paths that start with "-" in determine_mime_type plugin when `:file` analyzer is used (@zaeleus)
578
588
 
579
- * Allow including attachment module to non-`ActiveRecord::Base` objects in activerecord plugin (@janko-m)
589
+ * Allow including attachment module to non-`ActiveRecord::Base` objects in activerecord plugin (@janko)
580
590
 
581
- * Remove deprecated "restore_cached" alias for restore_cached_data plugin (@janko-m)
591
+ * Remove deprecated "restore_cached" alias for restore_cached_data plugin (@janko)
582
592
 
583
- * Remove deprecated "delete_uploaded" alias for delete_raw plugin (@janko-m)
593
+ * Remove deprecated "delete_uploaded" alias for delete_raw plugin (@janko)
584
594
 
585
- * Make the default generated unique location shorter (@janko-m)
595
+ * Make the default generated unique location shorter (@janko)
586
596
 
587
- * Make the `:delegate` option in migration_helpers default to `false` (@janko-m)
597
+ * Make the `:delegate` option in migration_helpers default to `false` (@janko)
588
598
 
589
- * Don't require `:storages` option anymore in moving plugin (@janko-m)
599
+ * Don't require `:storages` option anymore in moving plugin (@janko)
590
600
 
591
- * Don't delete uploaded IO if storage doesn't support moving in moving plugin (@janko-m)
601
+ * Don't delete uploaded IO if storage doesn't support moving in moving plugin (@janko)
592
602
 
593
- * Rename delete phases to be shorter and consistent in naming with upload phases (@janko-m)
603
+ * Rename delete phases to be shorter and consistent in naming with upload phases (@janko)
594
604
 
595
- * Remove deprecated `Shrine#default_url` (@janko-m)
605
+ * Remove deprecated `Shrine#default_url` (@janko)
596
606
 
597
- * Remove deprecated `:subdirectory` on FileSystem storage (@janko-m)
607
+ * Remove deprecated `:subdirectory` on FileSystem storage (@janko)
598
608
 
599
- * Don't return the uploaded file in `Attacher#set` and `Attacher#assign` (@janko-m)
609
+ * Don't return the uploaded file in `Attacher#set` and `Attacher#assign` (@janko)
600
610
 
601
- * Return the attacher instance in `Attacher.promote` and `Attacher.delete` in backgrounding plugin (@janko-m)
611
+ * Return the attacher instance in `Attacher.promote` and `Attacher.delete` in backgrounding plugin (@janko)
602
612
 
603
- * Rename "attachment" to "name", and "uploaded_file" to "attachment" in backgrounding plugin (@janko-m)
613
+ * Rename "attachment" to "name", and "uploaded_file" to "attachment" in backgrounding plugin (@janko)
604
614
 
605
- * Remove using `:presign` for presign options instead of `:presign_options` (@janko-m)
615
+ * Remove using `:presign` for presign options instead of `:presign_options` (@janko)
606
616
 
607
- * Remove deprecated `Shrine.direct_endpoint` from direct_upload plugin (@janko-m)
617
+ * Remove deprecated `Shrine.direct_endpoint` from direct_upload plugin (@janko)
608
618
 
609
- * Remove deprecated keep_location plugin (@janko-m)
619
+ * Remove deprecated keep_location plugin (@janko)
610
620
 
611
- * Make `Shrine#extract_dimensions` a private method in store_dimensions plugin (@janko-m)
621
+ * Make `Shrine#extract_dimensions` a private method in store_dimensions plugin (@janko)
612
622
 
613
- * Keep `Shrine#extract_mime_type` a private method when loading determine_mime_type plugin (@janko-m)
623
+ * Keep `Shrine#extract_mime_type` a private method when loading determine_mime_type plugin (@janko)
614
624
 
615
- * Deprecate loading the backgrounding plugin through the old "background_helpers" alias (@janko-m)
625
+ * Deprecate loading the backgrounding plugin through the old "background_helpers" alias (@janko)
616
626
 
617
627
  ## 1.4.2 (2016-04-19)
618
628
 
619
- * Removed ActiveRecord's automatic support for optimistic locking as it wasn't stable (@janko-m)
629
+ * Removed ActiveRecord's automatic support for optimistic locking as it wasn't stable (@janko)
620
630
 
621
- * Fixed record's dataset being modified after promoting preventing further updates with the same instance (@janko-m)
631
+ * Fixed record's dataset being modified after promoting preventing further updates with the same instance (@janko)
622
632
 
623
633
  ## 1.4.1 (2016-04-18)
624
634
 
625
- * Bring back triggering callbacks on promote in ORM plugins, and add support for optimistic locking (@janko-m)
635
+ * Bring back triggering callbacks on promote in ORM plugins, and add support for optimistic locking (@janko)
626
636
 
627
637
  ## 1.4.0 (2016-04-15)
628
638
 
629
- * Return "Content-Length" response header in download_endpoint plugin (@janko-m)
639
+ * Return "Content-Length" response header in download_endpoint plugin (@janko)
630
640
 
631
- * Make determine_mime_type and store_dimensions automatically rewind IO with custom analyzer (@janko-m)
641
+ * Make determine_mime_type and store_dimensions automatically rewind IO with custom analyzer (@janko)
632
642
 
633
- * Make `before_*` and `after_*` hooks happen before and after `around_*` hooks (@janko-m)
643
+ * Make `before_*` and `after_*` hooks happen before and after `around_*` hooks (@janko)
634
644
 
635
- * Rename restore_cached plugin to more accurate "restore_cached_data" (@janko-m)
645
+ * Rename restore_cached plugin to more accurate "restore_cached_data" (@janko)
636
646
 
637
- * Prevent errors when attempting to validate dimensions when they are absent (@janko-m)
647
+ * Prevent errors when attempting to validate dimensions when they are absent (@janko)
638
648
 
639
- * Remove "thread" gem dependency in parallelize plugin (@janko-m)
649
+ * Remove "thread" gem dependency in parallelize plugin (@janko)
640
650
 
641
- * Add `:filename` to data_uri plugin for generating filenames based on content type (@janko-m)
651
+ * Add `:filename` to data_uri plugin for generating filenames based on content type (@janko)
642
652
 
643
- * Make user-defined hooks always happen around logging (@janko-m)
653
+ * Make user-defined hooks always happen around logging (@janko)
644
654
 
645
- * Add `:presign_location` to direct_upload for generating the key (@janko-m)
655
+ * Add `:presign_location` to direct_upload for generating the key (@janko)
646
656
 
647
- * Add separate `:presign_options` option for receiving presign options in direct_upload plugin (@janko-m)
657
+ * Add separate `:presign_options` option for receiving presign options in direct_upload plugin (@janko)
648
658
 
649
- * Add ability to generate fake presigns for storages which don't support them for testing (@janko-m)
659
+ * Add ability to generate fake presigns for storages which don't support them for testing (@janko)
650
660
 
651
- * Change the `/:storage/:name` route to `/:storage/upload` in direct_upload plugin (@janko-m)
661
+ * Change the `/:storage/:name` route to `/:storage/upload` in direct_upload plugin (@janko)
652
662
 
653
- * Fix logger not being inherited in the logging plugin (@janko-m)
663
+ * Fix logger not being inherited in the logging plugin (@janko)
654
664
 
655
- * Add delete_promoted plugin for deleting promoted files after record has been updated (@janko-m)
665
+ * Add delete_promoted plugin for deleting promoted files after record has been updated (@janko)
656
666
 
657
- * Allow passing phase to `Attacher#promote` and generalize promoting background job (@janko-m)
667
+ * Allow passing phase to `Attacher#promote` and generalize promoting background job (@janko)
658
668
 
659
- * Close the cached file after extracting its metadata in restore_cached plugin (@janko-m)
669
+ * Close the cached file after extracting its metadata in restore_cached plugin (@janko)
660
670
 
661
- * Rename delete_uploaded plugin to "delete_raw" to better explain its functionality (@janko-m)
671
+ * Rename delete_uploaded plugin to "delete_raw" to better explain its functionality (@janko)
662
672
 
663
- * Pass the SSL CA bundle to open-uri when downloading an S3 file (@janko-m)
673
+ * Pass the SSL CA bundle to open-uri when downloading an S3 file (@janko)
664
674
 
665
- * Add `Attacher.dump` and `Attacher.load` for writing custom background jobs with custom functionality (@janko-m)
675
+ * Add `Attacher.dump` and `Attacher.load` for writing custom background jobs with custom functionality (@janko)
666
676
 
667
- * Fix S3 URL erroring due to not being URL-encoded when `:host` option is used (@janko-m)
677
+ * Fix S3 URL erroring due to not being URL-encoded when `:host` option is used (@janko)
668
678
 
669
- * Remove a tiny possibility of a race condition with backgrounding on subsequent updates (@janko-m)
679
+ * Remove a tiny possibility of a race condition with backgrounding on subsequent updates (@janko)
670
680
 
671
- * Add `:delegate` option to migration_helpers for opting out of defining methods on the model (@janko-m)
681
+ * Add `:delegate` option to migration_helpers for opting out of defining methods on the model (@janko)
672
682
 
673
- * Make logging plugin log number of both input and output files for processing (@janko-m)
683
+ * Make logging plugin log number of both input and output files for processing (@janko)
674
684
 
675
- * Make deleting backup work with backgrounding plugin (@janko-m)
685
+ * Make deleting backup work with backgrounding plugin (@janko)
676
686
 
677
- * Make storing backup happen *after* promoting instead of before (@janko-m)
687
+ * Make storing backup happen *after* promoting instead of before (@janko)
678
688
 
679
- * Add `:fallbacks` to versions plugin for fallback URLs for versions which haven't finished processing (@janko-m)
689
+ * Add `:fallbacks` to versions plugin for fallback URLs for versions which haven't finished processing (@janko)
680
690
 
681
- * Fix keep_files not to spawn a background job when file will not be deleted (@janko-m)
691
+ * Fix keep_files not to spawn a background job when file will not be deleted (@janko)
682
692
 
683
693
  ## 1.3.0 (2016-03-12)
684
694
 
685
- * Add `<attachment>_cached?` and `<attachment>_stored?` to migration_helpers plugin (@janko-m)
695
+ * Add `<attachment>_cached?` and `<attachment>_stored?` to migration_helpers plugin (@janko)
686
696
 
687
- * Fix `Attacher#backup_file` from backup plugin not to modify the given uploaded file (@janko-m)
697
+ * Fix `Attacher#backup_file` from backup plugin not to modify the given uploaded file (@janko)
688
698
 
689
- * Allow modifying UploadedFile's data hash after it's instantiated to change the UploadedFile (@janko-m)
699
+ * Allow modifying UploadedFile's data hash after it's instantiated to change the UploadedFile (@janko)
690
700
 
691
- * Deprecate the keep_location plugin (@janko-m)
701
+ * Deprecate the keep_location plugin (@janko)
692
702
 
693
- * Don't mutate context hash inside the uploader (@janko-m)
703
+ * Don't mutate context hash inside the uploader (@janko)
694
704
 
695
- * Make extracted metadata accessible in `#generate_location` through `:metadata` in context hash (@janko-m)
705
+ * Make extracted metadata accessible in `#generate_location` through `:metadata` in context hash (@janko)
696
706
 
697
- * Don't require the "metadata" key when instantiating a `Shrine::UploadedFile` (@janko-m)
707
+ * Don't require the "metadata" key when instantiating a `Shrine::UploadedFile` (@janko)
698
708
 
699
- * Add `:include_error` option to remote_url for accessing download error in `:error_message` block (@janko-m)
709
+ * Add `:include_error` option to remote_url for accessing download error in `:error_message` block (@janko)
700
710
 
701
- * Give different error message when file wasn't found or was too large in remote_url (@janko-m)
711
+ * Give different error message when file wasn't found or was too large in remote_url (@janko)
702
712
 
703
- * Rewind the IO after extracting MIME type with MimeMagic (@janko-m)
713
+ * Rewind the IO after extracting MIME type with MimeMagic (@janko)
704
714
 
705
715
  * Rewind the IO after extracting image dimensions even when extraction failed (@kaapa)
706
716
 
707
- * Correctly infer the extension in `#generate_location` when uploading an `UploadedFile` (@janko-m)
717
+ * Correctly infer the extension in `#generate_location` when uploading an `UploadedFile` (@janko)
708
718
 
709
- * Fix ability for errors to accumulate in data_uri and remote_url plugins when assigning mutliples to same record instance (@janko-m)
719
+ * Fix ability for errors to accumulate in data_uri and remote_url plugins when assigning mutliples to same record instance (@janko)
710
720
 
711
- * Bump Down dependency to 2.0.0 in order to fix downloading URLs with "[]" characters (@janko-m)
721
+ * Bump Down dependency to 2.0.0 in order to fix downloading URLs with "[]" characters (@janko)
712
722
 
713
- * Add `:namespace` option to pretty_location for including class namespace in location (@janko-m)
723
+ * Add `:namespace` option to pretty_location for including class namespace in location (@janko)
714
724
 
715
- * Don't include the namespace of the class in the location with the pretty_location plugin (@janko-m)
725
+ * Don't include the namespace of the class in the location with the pretty_location plugin (@janko)
716
726
 
717
727
  * Remove aws-sdk deprecation warning when storage isn't instantiated with credentials (@reidab)
718
728
 
719
- * Don't make uploaded file's metadata methods error when the corresponding key-value pair is missing (@janko-m)
729
+ * Don't make uploaded file's metadata methods error when the corresponding key-value pair is missing (@janko)
720
730
 
721
731
  * Close the `UploadedFile` on upload only if it was previously opened, which doesn't happen on S3 COPY (@reidab)
722
732
 
723
- * Fix `NameError` when silencing "missing record" errors in backgrounding (@janko-m)
733
+ * Fix `NameError` when silencing "missing record" errors in backgrounding (@janko)
724
734
 
725
735
  ## 1.2.0 (2016-01-26)
726
736
 
727
- * Make `Shrine::Attacher.promote` and `Shrine::Attacher.delete` return the record in backgrounding plugin (@janko-m)
737
+ * Make `Shrine::Attacher.promote` and `Shrine::Attacher.delete` return the record in backgrounding plugin (@janko)
728
738
 
729
- * Close the IO on upload even if the upload errors (@janko-m)
739
+ * Close the IO on upload even if the upload errors (@janko)
730
740
 
731
- * Use a transaction when checking if attachment has changed after storing during promotion (@janko-m)
741
+ * Use a transaction when checking if attachment has changed after storing during promotion (@janko)
732
742
 
733
- * Don't attempt to start promoting in background if attachment has already changed (@janko-m)
743
+ * Don't attempt to start promoting in background if attachment has already changed (@janko)
734
744
 
735
- * Don't error in backgrounding when record is missing (@janko-m)
745
+ * Don't error in backgrounding when record is missing (@janko)
736
746
 
737
747
  * Prevent multiline content type spoof attempts in validation_helpers (@xzo)
738
748
 
739
- * Make custom metadata inherited from uploaded files and make `#extract_metadata` called only on caching (@janko-m)
749
+ * Make custom metadata inherited from uploaded files and make `#extract_metadata` called only on caching (@janko)
740
750
 
741
751
  ## 1.1.0 (2015-12-26)
742
752
 
743
- * Rename the "background_helpers" plugin to "backgrounding" (@janko-m)
753
+ * Rename the "background_helpers" plugin to "backgrounding" (@janko)
744
754
 
745
- * Rename the `:subdirectory` option to `:prefix` on FileSystem storage (@janko-m)
755
+ * Rename the `:subdirectory` option to `:prefix` on FileSystem storage (@janko)
746
756
 
747
- * Add download_endpoint plugin for downloading files uploaded to database storages and for securing downloads (@janko-m)
757
+ * Add download_endpoint plugin for downloading files uploaded to database storages and for securing downloads (@janko)
748
758
 
749
- * Make `around_*` hooks return the result of the corresponding action (@janko-m)
759
+ * Make `around_*` hooks return the result of the corresponding action (@janko)
750
760
 
751
- * Make the direct upload endpoint customizable, inheritable and inspectable (@janko-m)
761
+ * Make the direct upload endpoint customizable, inheritable and inspectable (@janko)
752
762
 
753
- * Add upload_options plugin for dynamically generating storage-specific upload options (@janko-m)
763
+ * Add upload_options plugin for dynamically generating storage-specific upload options (@janko)
754
764
 
755
- * Allow the context hash to be modified (@janko-m)
765
+ * Allow the context hash to be modified (@janko)
756
766
 
757
- * Fix extension not being returned for storages which remove it from ID (Flickr, SQL, GridFS) (@janko-m)
767
+ * Fix extension not being returned for storages which remove it from ID (Flickr, SQL, GridFS) (@janko)
758
768
 
759
- * Delete underlying Tempfiles when closing an `UploadedFile` (@janko-m)
769
+ * Delete underlying Tempfiles when closing an `UploadedFile` (@janko)
760
770
 
761
- * Fix background_helpers plugin not working with ActiveJob (@janko-m)
771
+ * Fix background_helpers plugin not working with ActiveJob (@janko)
762
772
 
763
- * Add `UploadedFile#base64` to the data_uri plugin (@janko-m)
773
+ * Add `UploadedFile#base64` to the data_uri plugin (@janko)
764
774
 
765
- * Optimize `UploadedData#data_uri` to not download the file and instantiate file contents string only once (@janko-m)
775
+ * Optimize `UploadedData#data_uri` to not download the file and instantiate file contents string only once (@janko)
766
776
 
767
- * Allow adding S3 upload options dynamically per upload (@janko-m)
777
+ * Allow adding S3 upload options dynamically per upload (@janko)
768
778
 
769
- * Add delete_uploaded plugin for automatically deleting files after they're uploaded (@janko-m)
779
+ * Add delete_uploaded plugin for automatically deleting files after they're uploaded (@janko)
770
780
 
771
- * Close an open file descriptor left after downloading a FileSystem file (@janko-m)
781
+ * Close an open file descriptor left after downloading a FileSystem file (@janko)
772
782
 
773
- * Make `FileSystem#url` Windows compatible (@janko-m)
783
+ * Make `FileSystem#url` Windows compatible (@janko)
774
784
 
775
- * Add `UploadedFile#content_type` alias to `#mime_type` for better integration with upload libraries (@janko-m)
785
+ * Add `UploadedFile#content_type` alias to `#mime_type` for better integration with upload libraries (@janko)
776
786
 
777
- * Add a `UploadedFile#data_uri` method to the data_uri plugin (@janko-m)
787
+ * Add a `UploadedFile#data_uri` method to the data_uri plugin (@janko)
778
788
 
779
- * Allow the data_uri plugin to accept "+" symbols in MIME type names (@janko-m)
789
+ * Allow the data_uri plugin to accept "+" symbols in MIME type names (@janko)
780
790
 
781
- * Make the data_uri plugin accept data URIs which aren't base64 encoded (@janko-m)
791
+ * Make the data_uri plugin accept data URIs which aren't base64 encoded (@janko)
782
792
 
783
- * Close all IOs after uploading them (@janko-m)
793
+ * Close all IOs after uploading them (@janko)
784
794
 
785
- * Allow passing a custom IO object to the Linter (@janko-m)
795
+ * Allow passing a custom IO object to the Linter (@janko)
786
796
 
787
- * Add remove_invalid plugin for automatically deleting and deassigning invalid cached files (@janko-m)
797
+ * Add remove_invalid plugin for automatically deleting and deassigning invalid cached files (@janko)
788
798
 
789
- * Add `:max_size` option to the direct_upload plugin (@janko-m)
799
+ * Add `:max_size` option to the direct_upload plugin (@janko)
790
800
 
791
- * Move `Shrine#default_url` to default_url plugin (@janko-m)
801
+ * Move `Shrine#default_url` to default_url plugin (@janko)
792
802
 
793
- * Enable `S3#multi_delete` to delete more than 1000 objects by batching deletes (@janko-m)
803
+ * Enable `S3#multi_delete` to delete more than 1000 objects by batching deletes (@janko)
794
804
 
795
- * Add the keep_location plugin for easier debugging or backups (@janko-m)
805
+ * Add the keep_location plugin for easier debugging or backups (@janko)
796
806
 
797
- * Add the backup plugin for backing up stored files (@janko-m)
807
+ * Add the backup plugin for backing up stored files (@janko)
798
808
 
799
- * Storages don't need to rewind the files after upload anymore (@janko-m)
809
+ * Storages don't need to rewind the files after upload anymore (@janko)
800
810
 
801
811
  * Make S3 presigns work when the `:endpoint` option is given (@NetsoftHoldings)
802
812
 
803
- * Fix parallelize plugin to always work with the moving plugin (@janko-m)
813
+ * Fix parallelize plugin to always work with the moving plugin (@janko)
804
814
 
805
- * Fix S3 storage to handle copying files that are larger than 5GB (@janko-m)
815
+ * Fix S3 storage to handle copying files that are larger than 5GB (@janko)
806
816
 
807
- * Add `:upload_options` to S3 storage for applying additional options on upload (@janko-m)
817
+ * Add `:upload_options` to S3 storage for applying additional options on upload (@janko)
808
818
 
809
819
  * Reduce length of URLs generated with pretty_location plugin (@gshaw)
810
820
 
811
821
  ## 1.0.0 (2015-11-27)
812
822
 
813
- * Improve Windows compatibility in the FileSystem storage (@janko-m)
823
+ * Improve Windows compatibility in the FileSystem storage (@janko)
814
824
 
815
- * Remove the ability for FileSystem storage to accept IDs starting with a slash (@janko-m)
825
+ * Remove the ability for FileSystem storage to accept IDs starting with a slash (@janko)
816
826
 
817
- * Fix keep_files plugin requiring context for deleting files (@janko-m)
827
+ * Fix keep_files plugin requiring context for deleting files (@janko)
818
828
 
819
- * Extract assigning cached files by parsed JSON into a parsed_json plugin (@janko-m)
829
+ * Extract assigning cached files by parsed JSON into a parsed_json plugin (@janko)
820
830
 
821
- * Add `(before|around|after)_upload` to the hooks plugin (@janko-m)
831
+ * Add `(before|around|after)_upload` to the hooks plugin (@janko)
822
832
 
823
- * Fix `S3#multi_delete` and `S3#clear!` not using the prefix (@janko-m)
833
+ * Fix `S3#multi_delete` and `S3#clear!` not using the prefix (@janko)
824
834
 
825
- * Add ability to pass presign options to storages in the direct_upload plugin (@janko-m)
835
+ * Add ability to pass presign options to storages in the direct_upload plugin (@janko)
826
836
 
827
- * Remove `Shrine.io!` because it was actually meant to be only for internal use (@janko-m)
837
+ * Remove `Shrine.io!` because it was actually meant to be only for internal use (@janko)
828
838
 
829
- * Remove `Shrine.delete` because of redundancy (@janko-m)
839
+ * Remove `Shrine.delete` because of redundancy (@janko)
830
840
 
831
- * Add default_url_options plugin for specifiying default URL options for uploaded files (@janko-m)
841
+ * Add default_url_options plugin for specifiying default URL options for uploaded files (@janko)
832
842
 
833
- * Add module_include plugin for easily extending core classes for given uploader (@janko-m)
843
+ * Add module_include plugin for easily extending core classes for given uploader (@janko)
834
844
 
835
- * Add support for Sequel's Postgres JSON column support (@janko-m)
845
+ * Add support for Sequel's Postgres JSON column support (@janko)
836
846
 
837
- * Fix migration_helpers plugin not detecting when column changed (@janko-m)
847
+ * Fix migration_helpers plugin not detecting when column changed (@janko)
838
848
 
839
- * Add the `:public` option to S3 storage for retrieving public URLs which aren't signed (@janko-m)
849
+ * Add the `:public` option to S3 storage for retrieving public URLs which aren't signed (@janko)
840
850
 
841
- * Remove the delete_invalid plugin, as it could cause lame errors (@janko-m)
851
+ * Remove the delete_invalid plugin, as it could cause lame errors (@janko)
842
852
 
843
- * Don't delete cached files anymore, as it can cause errors with backgrounding (@janko-m)
853
+ * Don't delete cached files anymore, as it can cause errors with backgrounding (@janko)
844
854
 
845
- * Add a `:host` option to the S3 storage for specifying CDNs (@janko-m)
855
+ * Add a `:host` option to the S3 storage for specifying CDNs (@janko)
846
856
 
847
- * Don't allow same attachment to be promoted multiple times with backgrounding (@janko-m)
857
+ * Don't allow same attachment to be promoted multiple times with backgrounding (@janko)
848
858
 
849
- * Fix recache plugin causing an infinite loop (@janko-m)
859
+ * Fix recache plugin causing an infinite loop (@janko)
850
860
 
851
- * Fix an encoding error in determine_mime_type when using `:file` with non-files (@janko-m)
861
+ * Fix an encoding error in determine_mime_type when using `:file` with non-files (@janko)
852
862
 
853
- * Make `UploadedFile` actually delete itself only once (@janko-m)
863
+ * Make `UploadedFile` actually delete itself only once (@janko)
854
864
 
855
- * Make `UploadedFile#inspect` cleaner by showing only the data hash (@janko-m)
865
+ * Make `UploadedFile#inspect` cleaner by showing only the data hash (@janko)
856
866
 
857
- * Make determine_mime_type able to accept non-files when using :file (@janko-m)
867
+ * Make determine_mime_type able to accept non-files when using :file (@janko)
858
868
 
859
- * Make logging plugin accept PORO instance which don't have an #id (@janko-m)
869
+ * Make logging plugin accept PORO instance which don't have an #id (@janko)
860
870
 
861
- * Add rack_file plugin for attaching Rack file hashes to models (@janko-m)
871
+ * Add rack_file plugin for attaching Rack file hashes to models (@janko)