diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index 0e72e1a1..179b7d0e 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -990,7 +990,7 @@ module Sinatra # Will set params[:agent]. def user_agent(pattern) condition do - if request.user_agent =~ pattern + if request.user_agent.to_s =~ pattern @params[:agent] = $~[1..-1] true else diff --git a/test/routing_test.rb b/test/routing_test.rb index 795de34c..0da34306 100644 --- a/test/routing_test.rb +++ b/test/routing_test.rb @@ -611,6 +611,18 @@ class RoutingTest < Test::Unit::TestCase assert_equal 'Hello World', body end + it "treats missing user agent like an empty string" do + mock_app do + user_agent(/.*/) + get '/' do + "Hello World" + end + end + get '/' + assert_equal 200, status + assert_equal 'Hello World', body + end + it "makes captures in user agent pattern available in params[:agent]" do mock_app { user_agent(/Foo (.*)/)