Class: RailsAiBridge::Serializers::Providers::CopilotInstructionsSerializer
- Inherits:
-
Object
- Object
- RailsAiBridge::Serializers::Providers::CopilotInstructionsSerializer
- Defined in:
- lib/rails_ai_bridge/serializers/providers/copilot_instructions_serializer.rb
Overview
Generates .github/instructions/*.instructions.md files with applyTo front matter
for GitHub Copilot path-scoped instructions.
Instance Attribute Summary collapse
-
#context ⇒ Hash
readonly
Introspection context passed to serializers.
Instance Method Summary collapse
-
#call(output_dir) ⇒ Hash<Symbol, Array<String>>
Writes models, controllers, and MCP instruction files under
.github/instructions/. -
#initialize(context) ⇒ CopilotInstructionsSerializer
constructor
A new instance of CopilotInstructionsSerializer.
Constructor Details
#initialize(context) ⇒ CopilotInstructionsSerializer
Returns a new instance of CopilotInstructionsSerializer.
13 14 15 |
# File 'lib/rails_ai_bridge/serializers/providers/copilot_instructions_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/copilot_instructions_serializer.rb', line 10 def context @context end |
Instance Method Details
#call(output_dir) ⇒ Hash<Symbol, Array<String>>
Writes models, controllers, and MCP instruction files under .github/instructions/.
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 |
# File 'lib/rails_ai_bridge/serializers/providers/copilot_instructions_serializer.rb', line 21 def call(output_dir) dir = File.join(output_dir, '.github', 'instructions') FileUtils.mkdir_p(dir) written = [] skipped = [] files = { 'rails-models.instructions.md' => render_models_instructions, 'rails-controllers.instructions.md' => render_controllers_instructions, 'rails-mcp-tools.instructions.md' => render_mcp_tools_instructions } files.each do |filename, content| next unless content filepath = File.join(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 |