Files
Brenda Wallace 977a984c24 Remove Elasticsearch integration and related code
- Deleted Elasticsearch gems from Gemfile and Gemfile.lock.
- Updated README and TECH documentation to reflect the removal of Elasticsearch.
- Removed Elasticsearch-related code from models, controllers, services, and factories.
- Adjusted tests to eliminate dependencies on Elasticsearch.
- Cleaned up Docker configuration and environment variables related to Elasticsearch.
- Added a TODO file for future gem reviews and potential removals.
2026-10-22 15:37:03 +13:00

35 lines
1.4 KiB
Ruby

# frozen_string_literal: true
namespace :crops do
desc "Copy approved crops from production (or SOURCE_URL) into the local database, gently. " \
"Options: SOURCE_URL, PAGE_SIZE=50 (the server may cap this), DELAY=2 (seconds between requests), " \
"MAX_PAGES"
task pull_from_production: :environment do
abort "Refusing to pull crops into a production database." if Rails.env.production?
options = {
source_url: ENV.fetch('SOURCE_URL', RemoteApiClient::DEFAULT_SOURCE_URL),
page_size: ENV.fetch('PAGE_SIZE', 50).to_i,
delay: ENV.fetch('DELAY', 2).to_f,
max_pages: ENV['MAX_PAGES']&.to_i
}
puts "Pulling crops from #{options[:source_url]} (#{options[:delay]}s between requests)"
begin
stats = CropImportService.new(**options).call
puts "Done: #{stats.map { |key, count| "#{count} #{key.to_s.tr('_', ' ')}" }.join(', ')}"
rescue CropImportService::Aborted => e
abort "Stopped: #{e.message}"
end
end
desc "Give crops an icon from app/assets/images/crops by their name, where they haven't one. " \
"Varieties then follow their parent. DRY_RUN=true to only list what it would do."
task assign_icons: :environment do
dry_run = ENV['DRY_RUN'] == 'true'
assigned = CropIconMatcher.new.call(dry_run:)
assigned.each { |crop, icon| puts "#{crop.name} -> #{icon}" }
puts "#{dry_run ? 'Would give' : 'Gave'} #{assigned.size} crops an icon."
end
end