У меня есть загрузчик изображений в форме, и изображения загружаются нормально без обработки фона.С момента перехода на Heroku, большие исходные изображения часто перестают работать, поэтому я собираюсь перенести это на фоновую работу.При этом я посмотрел на carrierwave_backgrounder
, поскольку он, казалось, покрывал то, что мне нужно.
Я нашел вилку carrierwave_backgrounder
и раздвоил ее в своем репо.Чтобы заставить его работать в 5.2, автор сказал, что ему нужно жестко закодировать путь (https://github.com/lardawge/carrierwave_backgrounder/issues/282, https://github.com/lardawge/carrierwave_backgrounder/issues/280)
Это не работает на store_in_background
. Запуск только process_in_background
дает локально обработанные изображения в разработке, но они не загружаются на S3.
Поле модели, о котором идет речь, issue.image
, и вот как оно смонтировано в issue.rb
:
# Image attachment via Carrierwave
mount_uploader :image, ImageUploader
process_in_background :image
store_in_background :image
attr_accessor :image_cache
Вот ошибка вывода:
2019-02-24T01:05:33.168Z 43666 TID-oxnydp4bq CarrierWave::Workers::StoreAsset JID-83163770b014d37186118cf9 INFO: start
2019-02-24T01:05:33.545Z 43666 TID-oxnydp4bq CarrierWave::Workers::StoreAsset JID-83163770b014d37186118cf9 INFO: fail: 0.377 sec
2019-02-24T01:05:33.545Z 43666 TID-oxnydp4bq WARN: {"context":"Job raised exception","job":{"class":"CarrierWave::Workers::StoreAsset","args":["Issue","6355","image"],"queue":"carrierwave","retry":true,"jid":"83163770b014d37186118cf9","created_at":1550970333.167957,"enqueued_at":1550970333.168011},"jobstr":"{\"class\":\"CarrierWave::Workers::StoreAsset\",\"args\":[\"Issue\",\"6355\",\"image\"],\"queue\":\"carrierwave\",\"retry\":true,\"jid\":\"83163770b014d37186118cf9\",\"created_at\":1550970333.167957,\"enqueued_at\":1550970333.168011}"}
2019-02-24T01:05:33.545Z 43666 TID-oxnydp4bq WARN: TypeError: no implicit conversion of nil into String
2019-02-24T01:05:33.545Z 43666 TID-oxnydp4bq WARN: /Users/jathayde/Development/Meticulous/carrierwave_backgrounder/lib/backgrounder/workers/store_asset_mixin.rb:40:in `join'
и вот соответствующий метод из моего store_asset_mixin.rb
метода из моей локальной версии гема. Упомянутая в ошибке строка 40 начинается с @tmp_directory
:
def store_directories(record)
asset, asset_tmp = record.send(:"#{column}"), record.send(:"#{column}_tmp")
cache_directory = File.expand_path(asset.cache_dir, asset.root)
# @cache_path = File.join(cache_directory, asset_tmp)
# # XXX Hardcoded our path here... not ideal..
@cache_path = open("https://patchvault.s3.amazonaws.com/uploads/tmp/#{asset_tmp}")
@tmp_directory = File.join(cache_directory, asset_tmp.split("/").first)
end
Итак, asset_tmp
- это ""
, но это актив, но я понятия не имею, почему. Проходя по нему с помощью debugger
, кажется, что присутствует запись.ноль.