aboutsummaryrefslogtreecommitdiffstats
path: root/activestorage/CHANGELOG.md
diff options
context:
space:
mode:
authorJacob Smith <jacob.wesley.smith@gmail.com>2018-05-19 22:14:57 -0400
committerJacob Smith <jacob.wesley.smith@gmail.com>2018-05-21 10:38:15 -0400
commit0210ac0b430757f2b5ba5e81f4391e6a37b769a4 (patch)
tree389f87256bdc031e67b09e076b1820282ed77233 /activestorage/CHANGELOG.md
parentce4d467f7c2fc812e257a87bd4875c1f1f08a981 (diff)
downloadrails-0210ac0b430757f2b5ba5e81f4391e6a37b769a4.tar.gz
rails-0210ac0b430757f2b5ba5e81f4391e6a37b769a4.tar.bz2
rails-0210ac0b430757f2b5ba5e81f4391e6a37b769a4.zip
Disable variant options when false or nil present
In response to https://github.com/rails/rails/issues/32917 In the current implementation, ActiveStorage passes all options to the underlying processor, including when a key has a value of false. For example, passing: ``` avatar.variant(resize: "100x100", monochrome: false, flip: "-90") ``` will return a monochrome image (or an error, pending on ImageMagick configuration) because it passes `-monochrome false` to the command (but the command line does not allow disabling flags this way, as usually a user would omit the flag entirely to disable that feature). This fix only passes those keys forward to the underlying processor if the value responds to `present?`. In practice, this means that `false` or `nil` will be filtered out before going to the processor. One possible use case would be for a user to be able to apply different filters to an avatar. The code might look something like: ``` variant_options = { monochrome: params[:monochrome], resize: params[:resize] } avatar.variant(*variant_options) ``` Obviously some sanitization may be beneficial in a real-world scenario, but this type of configuration object could be used in many other places as well. - Add removing falsy values from varaints to changelog - The entirety of #image_processing_transformation inject block was wrapped in `list.tap` to guard against the default `nil` being returned if no conditional was called. - add test for explicitly true variant options
Diffstat (limited to 'activestorage/CHANGELOG.md')
-rw-r--r--activestorage/CHANGELOG.md10
1 files changed, 10 insertions, 0 deletions
diff --git a/activestorage/CHANGELOG.md b/activestorage/CHANGELOG.md
index 7b724b7b81..c8911fe611 100644
--- a/activestorage/CHANGELOG.md
+++ b/activestorage/CHANGELOG.md
@@ -1,3 +1,13 @@
+* Variant arguments of `false` or `nil` will no longer be passed to the
+ processor. For example, the following will not have the monochrome
+ variation applied:
+
+ ```ruby
+ avatar.variant(monochrome: false)
+ ```
+
+ *Jacob Smith*
+
* Generated attachment getter and setter methods are created
within the model's `GeneratedAssociationMethods` module to
allow overriding and composition using `super`.