Skip to content

build(deps-dev): bump rails-ai-context from 5.10.0 to 5.11.1#54

Closed
dependabot[bot] wants to merge 2 commits into
mainfrom
dependabot/bundler/rails-ai-context-5.11.1
Closed

build(deps-dev): bump rails-ai-context from 5.10.0 to 5.11.1#54
dependabot[bot] wants to merge 2 commits into
mainfrom
dependabot/bundler/rails-ai-context-5.11.1

Conversation

@dependabot
Copy link
Copy Markdown
Contributor

@dependabot dependabot Bot commented on behalf of github Jun 4, 2026

Bumps rails-ai-context from 5.10.0 to 5.11.1.

Release notes

Sourced from rails-ai-context's releases.

v5.11.1

Fixed

  • E2E MCP HTTP protocol spec sends initialize once per session instead of per-test, fixing compatibility with newer mcp gem versions that reject duplicate initialization.

v5.11.0

Changed — Prism AST migration: all introspectors now use structural code extraction

Every introspector that scans .rb files has been migrated from regex-based pattern matching to Prism AST-based structural extraction. This is a zero-regression internal refactor -- all introspector outputs are verified identical via side-by-side comparison, 2257 unit tests, 119 E2E tests, and live validation against a production-scale Rails 8.1 app (39/39 introspectors, 41/41 tool invocations, 0 failures).

What changed internally:

  • SourceIntrospector.walk(path, listener_map) -- new generic API that accepts any combination of listener classes or Proc factories, enabling ad-hoc AST extraction without modifying the core dispatcher. Supports both Class values (instantiated via .new) and -> { Instance } lambdas for configurable listeners.
  • 11 new listener classes for patterns beyond the original 7 model-level listeners:
    • GenericMacroListener -- configurable no-receiver call detector (handles most Rails DSL patterns including self.method calls)
    • ChainedCallListener -- method calls with receivers (.variant(), .includes(), .create())
    • VariantCallListener -- ActiveStorage variant detection
    • MailboxRoutingListener -- ActionMailbox routing + lifecycle callbacks
    • MiddlewareConfigListener -- config.middleware.use/insert_before/insert_after/unshift
    • EnvAccessListener -- ENV["KEY"] / ENV.fetch("KEY") with block-default detection
    • MountListener -- mount Engine, at: "/path" (both keyword and hash-rocket syntax)
    • RakeTaskDslListener -- namespace/desc/task with deps and args (handles string + symbol deps)
    • GemfileDslListener -- gem/group/source with group-scope tracking
    • SchemaDslListener -- create_table/t.type/t.index/add_foreign_key/create_enum/check_constraint
    • MigrationDslListener -- create_table/add_column/add_index/rename_column/add_reference and 6 more actions
  • 28 introspectors converted: ActiveStorage, ActionText, ActionMailbox, Middleware, ActiveSupport, Auth, Security, Controller (all 9 regex blocks including strong params, filters, rescue_from, rate_limit, respond_to, turbo_stream), Convention, Turbo, MultiDatabase, Performance, Job, Model, Component, View, Api, AssetPipeline, DevOps, Env, Gem, RakeTask, Engine, Seeds, Test, Schema, Config.
  • 181 regex patterns intentionally remain in categories where Prism cannot help: non-Ruby files (JS/TS/ERB/Haml -- 78), keyword/content matching (22), config assignments (15), runtime SQL/YAML (25), and complex partial patterns (41).

What didn't change:

  • All introspector output formats are identical. No consumer-facing API changes.
  • All 39 MCP tools work exactly as before.
  • Runtime reflection paths (ActiveRecord, Rails config, I18n, etc.) are untouched.
  • Non-Ruby file scanning (YAML, JSON, ERB, JS, Procfile, Dockerfile, Gemfile.lock) is untouched.

Why this matters:

  • Regex scanning matches patterns in comments, strings, and dead code. AST extraction only matches actual code structure -- fewer false positives.
  • Multi-line declarations that broke regex (e.g., devise with 9 modules across 3 lines, before_action with complex only:/except: constraints) are now parsed correctly by Prism.
  • The AstCache provides thread-safe LRU caching of parse results, so repeated walks of the same file are free.
  • New listeners are composable -- introspectors mix and match listeners via SourceIntrospector.walk(path, { key: Listener }) without coupling.

Fixed

  • Avoid false-positive route helper warnings when rails_validate sees locally defined Ruby methods ending in _path or _url (#83, thanks @​curi).
  • Preserve newline-separated staged file names in the generated pre-commit validation hook (#83).

Tests

... (truncated)

Changelog

Sourced from rails-ai-context's changelog.

[5.11.1] - 2026-05-24

Fixed

  • E2E MCP HTTP protocol spec sends initialize once per session instead of per-test, fixing compatibility with newer mcp gem versions that reject duplicate initialization.

[5.11.0] - 2026-05-24

Changed - Prism AST migration: all introspectors now use structural code extraction

Every introspector that scans .rb files has been migrated from regex-based pattern matching to Prism AST-based structural extraction. This is a zero-regression internal refactor -- all introspector outputs are verified identical via side-by-side comparison, 2257 unit tests, 119 E2E tests, and live validation against a production-scale Rails 8.1 app (39/39 introspectors, 41/41 tool invocations, 0 failures).

What changed internally:

  • SourceIntrospector.walk(path, listener_map) -- new generic API that accepts any combination of listener classes or Proc factories, enabling ad-hoc AST extraction without modifying the core dispatcher. Supports both Class values (instantiated via .new) and -> { Instance } lambdas for configurable listeners.
  • 11 new listener classes for patterns beyond the original 7 model-level listeners:
    • GenericMacroListener -- configurable no-receiver call detector (handles most Rails DSL patterns including self.method calls)
    • ChainedCallListener -- method calls with receivers (.variant(), .includes(), .create())
    • VariantCallListener -- ActiveStorage variant detection
    • MailboxRoutingListener -- ActionMailbox routing + lifecycle callbacks
    • MiddlewareConfigListener -- config.middleware.use/insert_before/insert_after/unshift
    • EnvAccessListener -- ENV["KEY"] / ENV.fetch("KEY") with block-default detection
    • MountListener -- mount Engine, at: "/path" (both keyword and hash-rocket syntax)
    • RakeTaskDslListener -- namespace/desc/task with deps and args (handles string + symbol deps)
    • GemfileDslListener -- gem/group/source with group-scope tracking
    • SchemaDslListener -- create_table/t.type/t.index/add_foreign_key/create_enum/check_constraint
    • MigrationDslListener -- create_table/add_column/add_index/rename_column/add_reference and 6 more actions
  • 28 introspectors converted: ActiveStorage, ActionText, ActionMailbox, Middleware, ActiveSupport, Auth, Security, Controller (all 9 regex blocks including strong params, filters, rescue_from, rate_limit, respond_to, turbo_stream), Convention, Turbo, MultiDatabase, Performance, Job, Model, Component, View, Api, AssetPipeline, DevOps, Env, Gem, RakeTask, Engine, Seeds, Test, Schema, Config.
  • 181 regex patterns intentionally remain in categories where Prism cannot help: non-Ruby files (JS/TS/ERB/Haml -- 78), keyword/content matching (22), config assignments (15), runtime SQL/YAML (25), and complex partial patterns (41).

What didn't change:

  • All introspector output formats are identical. No consumer-facing API changes.
  • All 39 MCP tools work exactly as before.
  • Runtime reflection paths (ActiveRecord, Rails config, I18n, etc.) are untouched.
  • Non-Ruby file scanning (YAML, JSON, ERB, JS, Procfile, Dockerfile, Gemfile.lock) is untouched.

Why this matters:

  • Regex scanning matches patterns in comments, strings, and dead code. AST extraction only matches actual code structure -- fewer false positives.
  • Multi-line declarations that broke regex (e.g., devise with 9 modules across 3 lines, before_action with complex only:/except: constraints) are now parsed correctly by Prism.
  • The AstCache provides thread-safe LRU caching of parse results, so repeated walks of the same file are free.
  • New listeners are composable -- introspectors mix and match listeners via SourceIntrospector.walk(path, { key: Listener }) without coupling.

Fixed

  • Avoid false-positive route helper warnings when rails_validate sees locally defined Ruby methods ending in _path or _url (#83, thanks @​curi).
  • Preserve newline-separated staged file names in the generated pre-commit validation hook (#83).

Tests

... (truncated)

Commits
  • b03ad5d chore: release v5.11.1 -- fix E2E MCP HTTP double-init
  • 61bd3c3 fix: E2E MCP HTTP spec sends initialize once, not per-test
  • f9db956 fix: resolve 49 RuboCop offenses in agent-generated listener specs and intros...
  • 9a5093d chore: release v5.11.0 -- Prism AST migration + validate fix (#83)
  • a85a836 chore: bump version to 5.11.0 + changelog for Prism AST migration
  • df4548a test: add AST edge case specs for controller, auth, and security introspectors
  • 34b2d40 refactor: convert all 28 introspectors from regex to Prism AST
  • df415dd test: add specs for all 11 new AST listener classes
  • 6a668eb feat: add SourceIntrospector.walk API + GenericMacroListener for AST migration
  • d8d36f3 Fix validation false positives for local route-like methods
  • See full diff in compare view

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Rykian and others added 2 commits June 4, 2026 10:07
Bumps [rails-ai-context](https://github.com/crisnahine/rails-ai-context) from 5.10.0 to 5.11.1.
- [Release notes](https://github.com/crisnahine/rails-ai-context/releases)
- [Changelog](https://github.com/crisnahine/rails-ai-context/blob/main/CHANGELOG.md)
- [Commits](crisnahine/rails-ai-context@v5.10.0...v5.11.1)

---
updated-dependencies:
- dependency-name: rails-ai-context
  dependency-version: 5.11.1
  dependency-type: direct:development
  update-type: version-update:semver-minor
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file ruby Pull requests that update ruby code labels Jun 4, 2026
@Rykian Rykian force-pushed the main branch 3 times, most recently from 017a130 to 3590111 Compare June 5, 2026 08:19
@dependabot @github
Copy link
Copy Markdown
Contributor Author

dependabot Bot commented on behalf of github Jun 5, 2026

Looks like rails-ai-context is up-to-date now, so this is no longer needed.

@dependabot dependabot Bot closed this Jun 5, 2026
@dependabot dependabot Bot deleted the dependabot/bundler/rails-ai-context-5.11.1 branch June 5, 2026 18:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file ruby Pull requests that update ruby code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant