Carrierwave + carrierwave-vips 利用時、webp の変換に対応する

carrierwave-vips を利用し、画像を変換する場合、libvips が対応しているフォーマットであっても、

class ImageUploader < CarrierWave::Uploader::Base
    process convert: "webp"
end

例えばこのように、jpg, jpeg, png 以外の、webp を指定してしまうと、ArgumentError が固定で発生する。

現在 gem "carrierwave-vips" で install できるバージョンでは、フォーマットがハードコードされていて、回避する手段がない。
git の master にコミットされているものでは、これに対する設定項目が増えているため、まず git ブランチから gem をインストールする必要がある。
github.com

gem "carrierwave-vips", github: "eltiare/carrierwave-vips"

さらに設定ファイルを追加する。

config/initializers/carrierwave_vips.rb

CarrierWave::Vips.configure do |config|
  config.sharpen_mask = [ [ -1, -1, -1 ], [ -1, 24, -1 ], [ -1, -1, -1 ] ]
  config.sharpen_scale = 16
  config.allowed_formats = %(jpg jpeg png webp)
end