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

ruby-grape / grape / 33769456501 / 31
99%
master: 99%

Build:
DEFAULT BRANCH: master
Ran 03 Sep 2026 02:54PM UTC
Files 169
Run time 7s
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

03 Sep 2026 02:52PM UTC coverage: 95.719% (+0.002%) from 95.717%
33769456501.31

push

github

web-flow
Resolve the params builder when params are first read, not in the constructor (#2892)

`Grape::Request#initialize` runs once per request, and resolved the params
builder eagerly:

    def initialize(env, build_params_with: nil)
      super(env)
      @params_builder = Grape::ParamsBuilder.params_builder_for(build_params_with || Grape.config[:param_builder])
    end

Two lookups behind that line, both on the request path:

* `Grape.config[:param_builder]` — dry-configurable's `Config#[]`, 126 ns;
* `params_builder_for` — a `key?` plus a `[]` against the registry
  `HashWithIndifferentAccess`, 200 ns together.

`@params_builder` has exactly one reader, `make_params`, which only runs when
something asks for `params`. An endpoint with no validations whose block never
mentions them — a health check, a static resource, a redirect — paid both
lookups to build an object it then dropped.

Memoize it on first use instead. `Grape.config` stays the source of truth, read
at the same point in the request as before for anything that does read params,
so a `build_with :unknown` still surfaces as a 500 during the request rather
than at mount time.

Median of 5 interleaved runs against master (Ruby 4.0.5): **+5.9%** on a
minimal versioned GET that never touches params; **+1.1%** on one with params
and validations, where the work moved rather than disappeared.

Co-authored-by: Claude Opus 5 <noreply@anthropic.com>

1222 of 1338 branches covered (91.33%)

Branch coverage included in aggregate %.

3898 of 4011 relevant lines covered (97.18%)

1129.51 hits per line

Source Files on job run-3.3-gemfiles/rails_7_2.gemfile - 33769456501.31
  • Tree
  • List 169
  • Changed 1
  • Source Changed 1
  • Coverage Changed 1
Coverage ∆ File Lines Relevant Covered Missed Hits/Line Branch Hits Branch Misses
  • Back to Build 33769456501
  • f1987c4f on github
  • Prev Job for on master (#33768866081.27)
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