aboutsummaryrefslogtreecommitdiffstats
path: root/activejob/test/cases/rescue_test.rb
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 /activejob/test/cases/rescue_test.rb
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 'activejob/test/cases/rescue_test.rb')
0 files changed, 0 insertions, 0 deletions