diff --git a/lib/rack/livereload.rb b/lib/rack/livereload.rb index bfba052..3de003d 100644 --- a/lib/rack/livereload.rb +++ b/lib/rack/livereload.rb @@ -50,7 +50,7 @@ module Rack status, headers, body = @app.call(env) if !ignored?(env['PATH_INFO']) && !bad_browser?(env['HTTP_USER_AGENT']) - if headers['Content-Type'][%r{text/html}] + if headers['Content-Type'] && headers['Content-Type'][%r{text/html}] content_length = 0 body.each do |line| diff --git a/spec/rack/livereload_spec.rb b/spec/rack/livereload_spec.rb index 96d1cba..12fd1b9 100644 --- a/spec/rack/livereload_spec.rb +++ b/spec/rack/livereload_spec.rb @@ -53,6 +53,18 @@ describe Rack::LiveReload do end end + context 'unknown Content-Type' do + let(:ret) { [ 200, {}, [ 'hey ho' ] ] } + + before do + app.stubs(:call).with(env).returns(ret) + end + + it 'should not break' do + middleware.call(env).should_not raise_error(NoMethodError, /You have a nil object/) + end + end + context 'text/html' do before do app.stubs(:call).with(env).returns([ 200, { 'Content-Type' => 'text/html', 'Content-Length' => 0 }, [ '' ] ])