lib/alchemy/upgrader/tasks/ingredients_migrator.rb in alchemy_cms-6.1.5 vs lib/alchemy/upgrader/tasks/ingredients_migrator.rb in alchemy_cms-6.1.6
- old
+ new
@@ -6,31 +6,30 @@
class IngredientsMigrator < Thor
include Thor::Actions
no_tasks do
def create_ingredients(verbose: !Rails.env.test?)
- Alchemy::Deprecation.silence do
- elements_with_ingredients = Alchemy::ElementDefinition.all.select { |d| d.key?(:ingredients) }
- if ENV["ONLY"]
- elements_with_ingredients = elements_with_ingredients.select { |d| d[:name].in? ENV["ONLY"].split(",") }
- end
- # eager load all elements that have ingredients defined but no ingredient records yet.
- all_elements = Alchemy::Element
- .named(elements_with_ingredients.map { |d| d[:name] })
- .preload(contents: :essence)
- .left_outer_joins(:ingredients).where(alchemy_ingredients: { id: nil })
- .to_a
- elements_with_ingredients.map do |element_definition|
- elements = all_elements.select { |e| e.name == element_definition[:name] }
- if elements.any?
- puts "-- Creating ingredients for #{elements.count} #{element_definition[:name]}(s)" if verbose
- elements.each do |element|
- MigrateElementIngredients.call(element)
- print "." if verbose
+ Rails.logger.silence do
+ Alchemy::Deprecation.silence do
+ elements_with_ingredients = Alchemy::ElementDefinition.all.select { |d| d.key?(:ingredients) }
+ if ENV["ONLY"]
+ elements_with_ingredients = elements_with_ingredients.select { |d| d[:name].in? ENV["ONLY"].split(",") }
+ end
+ elements_with_ingredients.each do |element_definition|
+ elements = Alchemy::Element
+ .named(element_definition[:name])
+ .left_outer_joins(:ingredients).where(alchemy_ingredients: { id: nil })
+ count = elements.count
+ if count.positive?
+ puts "-- Creating ingredients for #{elements.count} #{element_definition[:name]}(s)" if verbose
+ elements.preload(contents: :essence).find_each.with_index(1) do |element, index|
+ MigrateElementIngredients.call(element)
+ puts "\e[H\e[2J #{index}/#{count}" if verbose
+ end
+ puts "\n" if verbose
+ elsif verbose
+ puts "-- No #{element_definition[:name]} elements found for migration."
end
- puts "\n" if verbose
- elsif verbose
- puts "-- No #{element_definition[:name]} elements found for migration."
end
end
end
end
end