diff --git a/.gitignore b/.gitignore index 4040c6c..3904386 100644 --- a/.gitignore +++ b/.gitignore @@ -2,3 +2,4 @@ .bundle Gemfile.lock pkg/* +*.orig diff --git a/lib/rack-livereload.rb b/lib/rack-livereload.rb index d3b9213..d3a6d6d 100644 --- a/lib/rack-livereload.rb +++ b/lib/rack-livereload.rb @@ -1,6 +1,6 @@ require "rack/livereload" class Rack::LiveReload - VERSION = '0.3.3' + VERSION = '0.3.4' end diff --git a/lib/rack/livereload.rb b/lib/rack/livereload.rb index c5fac35..6eab424 100644 --- a/lib/rack/livereload.rb +++ b/lib/rack/livereload.rb @@ -52,7 +52,7 @@ module Rack new_body = body.dup 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 new_body = [] @@ -78,7 +78,7 @@ module Rack headers["X-Rack-LiveReload"] = '1' end - content_length += line.length + content_length += line.bytesize new_body << line end 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 }, [ '' ] ])