ActiveStorage не будет обрезать варианты - PullRequest
0 голосов
/ 27 мая 2018

Я перевожу мое приложение rails из paperclip в ActiveStorage, и оно просто не примет аргумент crop в варианте

этой строки:

@user.image.variant(crop: [180,135])

вызвать эту ошибку:

Errno::ENOENT (No such file or directory @ rb_sysopen - /var/folders/dd/dy3xgqrs2vv6h97ckrtmrb4m0000gn/T/mini_magick20180526-14598-njz21n.jpg):

activestorage (5.2.0) app/models/active_storage/variant.rb:130:in `initialize'
activestorage (5.2.0) app/models/active_storage/variant.rb:130:in `open'
activestorage (5.2.0) app/models/active_storage/variant.rb:130:in `upload'
activestorage (5.2.0) app/models/active_storage/variant.rb:88:in `block in process'
activestorage (5.2.0) app/models/active_storage/variant.rb:110:in `open_image'
activestorage (5.2.0) app/models/active_storage/variant.rb:85:in `process'
activestorage (5.2.0) app/models/active_storage/variant.rb:53:in `processed'
activestorage (5.2.0) app/controllers/active_storage/representations_controller.rb:12:in `show'

в то время как например.это работает:

@user.image.variant(resize: '180x135')

1 Ответ

0 голосов
/ 27 мая 2018

resize_to_fit - это преобразование ImageProcessing .Rails 5.2 не использует ImageProcessing;вместо этого он использует MiniMagick напрямую.Rails 6 будет использовать ImageProcessing.

Чтобы изменить размер, чтобы соответствовать Rails 5.2, добавьте > к аргументу resize:

@user.image.variant(resize: '180x135>')

Чтобы обрезать, используйте combine_options, чтобы MiniMagick прошелgravity и crop аргументы вместе в одном вызове ImageMagick:

@user.image.variant(combine_options: { gravity: 'Center', crop: '180x135+0+0' })
...