Class: Ace::Review::Molecules::FeedbackFileWriter

Inherits:
Object
  • Object
show all
Defined in:
lib/ace/review/molecules/feedback_file_writer.rb

Overview

Writes FeedbackItem instances to disk as markdown files with YAML frontmatter.

Files are written atomically (temp file + rename) with file locking to ensure safe concurrent access.

Examples:

Write a feedback item

writer = FeedbackFileWriter.new
result = writer.write(feedback_item, "/path/to/feedback")
result[:success] #=> true
result[:path]    #=> "/path/to/feedback/8o7abc-missing-error-handling.s.md"

Instance Method Summary collapse

Instance Method Details

#write(feedback_item, directory) ⇒ Hash

Write a FeedbackItem to disk

Parameters:

  • feedback_item (Models::FeedbackItem)

    The feedback item to write

  • directory (String)

    The directory to write to

Returns:

  • (Hash)

    Result hash with :success, :path or :error keys



27
28
29
30
31
32
33
34
35
36
37
38
39
# File 'lib/ace/review/molecules/feedback_file_writer.rb', line 27

def write(feedback_item, directory)
  validate_inputs(feedback_item, directory)

  filename = generate_filename(feedback_item)
  file_path = File.join(directory, filename)
  content = generate_content(feedback_item)

  write_atomic(file_path, content)
rescue ArgumentError => e
  {success: false, error: e.message}
rescue SystemCallError, IOError => e
  {success: false, error: "Failed to write feedback file: #{e.message}"}
end