Add logging
This commit is contained in:
parent
5355f57a64
commit
e642d382b8
3 changed files with 57 additions and 19 deletions
|
|
@ -12,9 +12,7 @@ class GeneratePartyPreviewJob < ApplicationJob
|
|||
around_perform :track_timing
|
||||
|
||||
def perform(party_id)
|
||||
# Log start of job processing
|
||||
Rails.logger.info("Starting preview generation for party #{party_id}")
|
||||
|
||||
party = Party.find(party_id)
|
||||
|
||||
if party.preview_state == 'generated' &&
|
||||
|
|
@ -26,7 +24,10 @@ class GeneratePartyPreviewJob < ApplicationJob
|
|||
|
||||
begin
|
||||
service = PreviewService::Coordinator.new(party)
|
||||
Rails.logger.info("Created PreviewService::Coordinator")
|
||||
|
||||
result = service.generate_preview
|
||||
Rails.logger.info("Generate preview result: #{result}")
|
||||
|
||||
if result
|
||||
Rails.logger.info("Successfully generated preview for party #{party_id}")
|
||||
|
|
@ -36,9 +37,10 @@ class GeneratePartyPreviewJob < ApplicationJob
|
|||
end
|
||||
rescue => e
|
||||
Rails.logger.error("Error generating preview for party #{party_id}: #{e.message}")
|
||||
Rails.logger.error(e.backtrace.join("\n"))
|
||||
Rails.logger.error("Full error details:")
|
||||
Rails.logger.error(e.full_message) # This will include the stack trace
|
||||
notify_failure(party, e)
|
||||
raise # Allow retry mechanism to handle the error
|
||||
raise
|
||||
end
|
||||
end
|
||||
|
||||
|
|
|
|||
|
|
@ -15,12 +15,24 @@ module PreviewService
|
|||
end
|
||||
|
||||
def create_blank_canvas(width: PREVIEW_WIDTH, height: PREVIEW_HEIGHT, color: DEFAULT_BACKGROUND_COLOR)
|
||||
temp_file = Tempfile.new(%w[canvas .png])
|
||||
Rails.logger.info("Checking ImageMagick installation...")
|
||||
version = `convert -version`
|
||||
Rails.logger.info("ImageMagick version: #{version}")
|
||||
|
||||
MiniMagick::Tool::Convert.new do |convert|
|
||||
convert.size "#{width}x#{height}"
|
||||
convert << "xc:#{color}"
|
||||
convert << temp_file.path
|
||||
temp_file = Tempfile.new(%w[canvas .png])
|
||||
Rails.logger.info("Created temp file: #{temp_file.path}")
|
||||
|
||||
begin
|
||||
MiniMagick::Tool::Convert.new do |convert|
|
||||
convert.size "#{width}x#{height}"
|
||||
convert << "xc:#{color}"
|
||||
convert << temp_file.path
|
||||
end
|
||||
Rails.logger.info("Canvas created successfully")
|
||||
rescue => e
|
||||
Rails.logger.error("Failed to create canvas: #{e.message}")
|
||||
Rails.logger.error(e.backtrace.join("\n"))
|
||||
raise
|
||||
end
|
||||
|
||||
temp_file
|
||||
|
|
|
|||
|
|
@ -41,22 +41,33 @@ module PreviewService
|
|||
Rails.logger.info("Starting preview generation for party #{@party.id}")
|
||||
set_generation_in_progress
|
||||
|
||||
# Generate the preview image
|
||||
Rails.logger.info("Creating preview image...")
|
||||
image = create_preview_image
|
||||
save_preview(image)
|
||||
Rails.logger.info("Preview image created successfully")
|
||||
|
||||
# Update party state
|
||||
Rails.logger.info("Saving preview...")
|
||||
save_preview(image)
|
||||
Rails.logger.info("Preview saved successfully")
|
||||
|
||||
Rails.logger.info("Updating party state...")
|
||||
@party.update!(
|
||||
preview_state: :generated,
|
||||
preview_generated_at: Time.current
|
||||
)
|
||||
Rails.logger.info("Party state updated successfully")
|
||||
|
||||
true
|
||||
rescue => e
|
||||
Rails.logger.error("Failed to generate preview: #{e.class} - #{e.message}")
|
||||
Rails.logger.error("Stack trace:")
|
||||
Rails.logger.error(e.backtrace.join("\n"))
|
||||
handle_preview_generation_error(e)
|
||||
false
|
||||
ensure
|
||||
Rails.logger.info("Cleaning up resources...")
|
||||
@image_fetcher.cleanup
|
||||
clear_generation_in_progress
|
||||
Rails.logger.info("Cleanup completed")
|
||||
end
|
||||
end
|
||||
|
||||
|
|
@ -99,28 +110,34 @@ module PreviewService
|
|||
#
|
||||
# @return [MiniMagick::Image] The generated preview image
|
||||
def create_preview_image
|
||||
# Create blank canvas
|
||||
Rails.logger.info("Creating blank canvas...")
|
||||
canvas = @canvas_service.create_blank_canvas
|
||||
image = MiniMagick::Image.new(canvas.path)
|
||||
Rails.logger.info("Blank canvas created")
|
||||
|
||||
# Fetch job icon
|
||||
Rails.logger.info("Processing job icon...")
|
||||
job_icon = nil
|
||||
if @party.job.present?
|
||||
Rails.logger.info("Fetching job icon for job ID: #{@party.job.granblue_id}")
|
||||
job_icon = @image_fetcher.fetch_job_icon(@party.job.granblue_id)
|
||||
Rails.logger.info("Job icon fetched successfully") if job_icon
|
||||
end
|
||||
|
||||
# Add party name with job icon
|
||||
Rails.logger.info("Adding party name and job icon...")
|
||||
text_result = @canvas_service.add_text(image, @party.name, job_icon: job_icon, user: @party.user)
|
||||
image = text_result[:image]
|
||||
Rails.logger.info("Party name and job icon added")
|
||||
|
||||
# Calculate grid layout
|
||||
Rails.logger.info("Calculating grid layout...")
|
||||
grid_layout = @grid_service.calculate_layout(
|
||||
canvas_height: Canvas::PREVIEW_HEIGHT,
|
||||
title_bottom_y: text_result[:text_bottom_y]
|
||||
)
|
||||
Rails.logger.info("Grid layout calculated")
|
||||
|
||||
# Organize and draw weapons
|
||||
Rails.logger.info("Drawing weapons...")
|
||||
image = organize_and_draw_weapons(image, grid_layout)
|
||||
Rails.logger.info("Weapons drawn successfully")
|
||||
|
||||
image
|
||||
end
|
||||
|
|
@ -196,15 +213,22 @@ module PreviewService
|
|||
begin
|
||||
image.write(temp_file.path)
|
||||
|
||||
# Use timestamped filename similar to local storage
|
||||
timestamp = Time.current.strftime('%Y%m%d%H%M%S')
|
||||
key = "#{PREVIEW_FOLDER}/#{@party.shortcode}_#{timestamp}.png"
|
||||
|
||||
File.open(temp_file.path, 'rb') do |file|
|
||||
@aws_service.s3_client.put_object(
|
||||
bucket: S3_BUCKET,
|
||||
key: preview_key,
|
||||
bucket: @aws_service.bucket,
|
||||
key: key,
|
||||
body: file,
|
||||
content_type: 'image/png',
|
||||
acl: 'private'
|
||||
)
|
||||
end
|
||||
|
||||
# Optionally, store this key on the party record if needed for retrieval
|
||||
@party.update!(preview_s3_key: key)
|
||||
ensure
|
||||
temp_file.close
|
||||
temp_file.unlink
|
||||
|
|
|
|||
Loading…
Reference in a new issue