Class: RailsAiBridge::Watcher::BridgeRegenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/rails_ai_bridge/watcher/bridge_regenerator.rb

Overview

Detects fingerprint changes and regenerates context via RailsAiBridge.generate_context. Single responsibility: fingerprint state and regeneration (no stderr).

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(app) ⇒ BridgeRegenerator

Returns a new instance of BridgeRegenerator.

Parameters:

  • app (Rails::Application)

    host application



12
13
14
15
# File 'lib/rails_ai_bridge/watcher/bridge_regenerator.rb', line 12

def initialize(app)
  @app = app
  @last_fingerprint = Fingerprinter.compute(@app)
end

Instance Attribute Details

#last_fingerprintString (readonly)

Returns last computed fingerprint digest.

Returns:

  • (String)

    last computed fingerprint digest



9
10
11
# File 'lib/rails_ai_bridge/watcher/bridge_regenerator.rb', line 9

def last_fingerprint
  @last_fingerprint
end

Instance Method Details

#change_pending?Boolean

Returns whether the app fingerprint differs from #last_fingerprint.

Returns:



18
19
20
# File 'lib/rails_ai_bridge/watcher/bridge_regenerator.rb', line 18

def change_pending?
  Fingerprinter.changed?(@app, @last_fingerprint)
end

#regenerate!Hash{Symbol => Array<String>}

Updates the stored fingerprint and runs RailsAiBridge.generate_context. Regenerates only the formats configured via +config.watcher_formats+ (default +:all+; set to e.g. +%i[claude cursor]+ to limit churn).

Returns:

  • (Hash{Symbol => Array<String>})

    +:written+ and +:skipped+ file path lists



27
28
29
30
31
# File 'lib/rails_ai_bridge/watcher/bridge_regenerator.rb', line 27

def regenerate!
  @last_fingerprint = Fingerprinter.compute(@app)
  formats = RailsAiBridge.configuration.watcher_formats
  RailsAiBridge.generate_context(@app, format: formats, split_rules: true)
end