lib/tasks/alchemy/thumbnails.rake
# frozen_string_literal: true
namespace :alchemy do
namespace :generate do
desc "Generates all thumbnails for Alchemy Pictures and Picture Ingredients."
task thumbnails: [
"alchemy:generate:picture_thumbnails",
"alchemy:generate:ingredient_picture_thumbnails"
]
desc "Generates thumbnails for Alchemy Pictures."
task picture_thumbnails: :environment do
puts "Regenerate #{Alchemy::Picture.count} picture thumbnails."
puts "Please wait..."
Alchemy::Picture.find_each do |picture|
next unless picture.has_convertible_format?
puts Alchemy::PictureThumb.generate_thumbs!(picture)
end
puts "Done!"
end
desc "Generates thumbnails for Alchemy Picture Ingredients (set ELEMENTS=element1,element2 to only generate thumbnails for a subset of elements)."
task ingredient_picture_thumbnails: :environment do
ingredient_pictures = Alchemy::Ingredients::Picture
.joins(:element)
.preload({related_object: :thumbs})
.merge(Alchemy::Element.published)
if ENV["ELEMENTS"].present?
ingredient_pictures = ingredient_pictures.merge(
Alchemy::Element.named(ENV["ELEMENTS"].split(","))
)
end
puts "Regenerate #{ingredient_pictures.count} ingredient picture thumbnails."
puts "Please wait..."
ingredient_pictures.find_each do |ingredient_picture|
puts ingredient_picture.picture_url
puts ingredient_picture.thumbnail_url
ingredient_picture.settings.fetch(:srcset, []).each do |src|
puts ingredient_picture.picture_url(src)
end
end
puts "Done!"
end
end
end