diff --git a/sinatra-contrib/lib/sinatra/capture.rb b/sinatra-contrib/lib/sinatra/capture.rb index 10a0073321..fb1cd106bd 100644 --- a/sinatra-contrib/lib/sinatra/capture.rb +++ b/sinatra-contrib/lib/sinatra/capture.rb @@ -97,7 +97,9 @@ def capture(*args, &block) result = block[*args] elsif current_engine == :erb || current_engine == :slim @_out_buf, _buf_was = '', @_out_buf - result = block.call(*args) + raw = block.call(*args) + captured = block.binding.eval('@_out_buf') + result = captured.empty? ? raw : captured @_out_buf = _buf_was else buffer = eval '_buf if defined?(_buf)', block.binding