Class: RailsAiBridge::Serializers::Providers::CursorRulesSerializer
- Inherits:
-
Object
- Object
- RailsAiBridge::Serializers::Providers::CursorRulesSerializer
- Defined in:
- lib/rails_ai_bridge/serializers/providers/cursor_rules_serializer.rb
Overview
Generates .cursor/rules/*.mdc files in the Cursor MDC format (YAML frontmatter, focused bodies).
Complements legacy .cursorrules from RulesSerializer.
Instance Attribute Summary collapse
-
#context ⇒ Hash
readonly
Introspection context passed to serializers.
Instance Method Summary collapse
-
#call(output_dir) ⇒ Hash<Symbol, Array<String>>
Writes MDC rule files under
.cursor/rules/when content changes. -
#initialize(context) ⇒ CursorRulesSerializer
constructor
A new instance of CursorRulesSerializer.
Constructor Details
#initialize(context) ⇒ CursorRulesSerializer
Returns a new instance of CursorRulesSerializer.
13 14 15 |
# File 'lib/rails_ai_bridge/serializers/providers/cursor_rules_serializer.rb', line 13 def initialize(context) @context = context end |
Instance Attribute Details
#context ⇒ Hash (readonly)
Returns Introspection context passed to serializers.
10 11 12 |
# File 'lib/rails_ai_bridge/serializers/providers/cursor_rules_serializer.rb', line 10 def context @context end |
Instance Method Details
#call(output_dir) ⇒ Hash<Symbol, Array<String>>
Writes MDC rule files under .cursor/rules/ when content changes.
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/rails_ai_bridge/serializers/providers/cursor_rules_serializer.rb', line 21 def call(output_dir) rules_dir = File.join(output_dir, '.cursor', 'rules') FileUtils.mkdir_p(rules_dir) written = [] skipped = [] files = { 'rails-engineering.mdc' => render_engineering_rule, 'rails-project.mdc' => render_project_rule, 'rails-models.mdc' => render_models_rule, 'rails-controllers.mdc' => render_controllers_rule, 'rails-mcp-tools.mdc' => render_mcp_tools_rule } files.each do |filename, content| next unless content filepath = File.join(rules_dir, filename) if File.exist?(filepath) && File.read(filepath) == content skipped << filepath else File.write(filepath, content) written << filepath end end { written: written, skipped: skipped } end |