Class: RailsMcpInsight::Analyzers::JobAnalyzer
- Inherits:
-
Object
- Object
- RailsMcpInsight::Analyzers::JobAnalyzer
- Defined in:
- lib/rails_mcp_insight/analyzers/job_analyzer.rb
Overview
Analyzes ActiveJob classes to extract queue configuration, retry policies, callbacks, and trigger locations.
Instance Method Summary collapse
- #analyze(job_name) ⇒ Object
-
#initialize(config, ast_parser: AstParser.new) ⇒ JobAnalyzer
constructor
A new instance of JobAnalyzer.
-
#list_all ⇒ Object
List all jobs.
Constructor Details
#initialize(config, ast_parser: AstParser.new) ⇒ JobAnalyzer
Returns a new instance of JobAnalyzer.
8 9 10 11 |
# File 'lib/rails_mcp_insight/analyzers/job_analyzer.rb', line 8 def initialize(config, ast_parser: AstParser.new) @config = config @ast_parser = ast_parser end |
Instance Method Details
#analyze(job_name) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/rails_mcp_insight/analyzers/job_analyzer.rb', line 13 def analyze(job_name) file_path = find_job_file(job_name) return nil unless file_path parsed = @ast_parser.parse_file(file_path) return nil unless parsed content = File.read(file_path) { name: job_name, file: relative_path(file_path), parent_class: parsed.classes.first&.parent || "ApplicationJob", queue: extract_queue(parsed), retry_config: extract_retry_config(parsed), discard_config: extract_discard_config(parsed), callbacks: extract_job_callbacks(parsed), perform_args: extract_perform_args(content), triggered_by: find_triggers(job_name) } end |
#list_all ⇒ Object
List all jobs
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/rails_mcp_insight/analyzers/job_analyzer.rb', line 36 def list_all jobs_dir = @config.jobs_path return [] unless Dir.exist?(jobs_dir) Dir.glob(File.join(jobs_dir, "**", "*.rb")).filter_map do |file| parsed = @ast_parser.parse_file(file) next unless parsed&.classes&.any? klass = parsed.classes.first { name: klass.name, file: relative_path(file), queue: extract_queue(parsed) } end end |