The param_matchers plugin adds hash matchers that operate on the request’s params.
It adds a :param matcher for matching on any param with the same name, yielding the value of the param:
r.on param: 'foo' do |foo| # Matches '?foo=bar', '?foo=' # Doesn't match '?bar=foo' end
It adds a :param! matcher for matching on any non-empty param with the same name, yielding the value of the param:
r.on(param!: 'foo') do |foo| # Matches '?foo=bar' # Doesn't match '?foo=', '?bar=foo' end
It also adds :params and :params! matchers, for matching multiple params at the same time:
r.on params: ['foo', 'baz'] do |foo, baz| # Matches '?foo=bar&baz=quuz', '?foo=&baz=' # Doesn't match '?foo=bar', '?baz=' end r.on params!: ['foo', 'baz'] do |foo, baz| # Matches '?foo=bar&baz=quuz' # Doesn't match '?foo=bar', '?baz=', '?foo=&baz=', '?foo=bar&baz=' end
Because users have some control over the types of submitted parameters, it is recommended that you explicitly force the correct type for values yielded by the block:
r.get(:param=>'foo') do |foo| foo = foo.to_s end