• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

ruby-grape / grape / 30240557756 / 9
97%
master: 97%

Build:
DEFAULT BRANCH: master
Ran 27 Jul 2026 05:44AM UTC
Files 166
Run time 10s
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

27 Jul 2026 05:43AM UTC coverage: 55.523% (+0.07%) from 55.456%
30240557756.9

push

github

web-flow
Remove Grape::Util::InheritableValues, resolving inheritable settings by walking parent (#2830)

* Store namespace settings in a plain Hash

InheritableValues layers a scope's own values over an enclosing scope's,
but nothing ever gave @namespace an enclosing scope to layer over:
#inherit_from assigns inherited_values only to @namespace_inheritable.
Namespace settings are scope-local by design — a nested namespace must
not see the outer one's value, which DSL::Settings#namespace_setting is
specified to do — so the layering resolved nothing and the store was a
Hash with extra indirection.

Keep it as a Hash. #namespace_setting reads and writes through #[] and
#[]= either way, so the DSL is unaffected.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* Resolve inheritable settings by walking parent

Each InheritableSetting held an InheritableValues layered over the store
of the scope it inherited from, so the parent relationship was encoded
twice: once as @parent, once as that chain, kept in sync by
produced #2794, where handlers were written to and read from different
stores.

Keep a scope's own overrides in a plain Hash — nil until first write,
like @stackable_values — and resolve reads against #parent, the same
move StackableValues got in #2823. InheritableValues then has nothing
left to do and is removed, along with its unreachable #merge and

Resolution is unchanged: reads key off presence rather than truthiness,
so a scope can still override an inherited value with an explicit nil
(#cascade relies on this), #inheritable? still reports an assignment
made anywhere along the chain, and the chain stays live, so a value an
enclosing scope gains later is visible through scopes already nested
inside it. The deleted class's spec is replaced by coverage of those
invariants through InheritableSetting's own API, where they were
previously untested.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Fable 5 <nor... (continued)

279 of 1280 branches covered (21.8%)

Branch coverage included in aggregate %.

2571 of 3853 relevant lines covered (66.73%)

9.61 hits per line

Source Files on job run-4.0-gemfiles/grape_swagger.gemfile - 30240557756.9
  • Tree
  • List 166
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 30240557756
  • fdf3bd74 on github
  • Prev Job for on master (#30240331355.21)
  • Next Job for on master (#30261081468.5)
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc