From d22d8ec29afd2f77b7df992fb58abf48739827f8 Mon Sep 17 00:00:00 2001 From: Mark Burns Date: Tue, 18 Aug 2015 10:07:21 +0900 Subject: [PATCH 001/160] Add section about text editor settings When adding better_errors to a new project I couldn't remember how this was done. I think this setting would be useful to make more visible. --- README.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/README.md b/README.md index d1901aa9..81083f08 100644 --- a/README.md +++ b/README.md @@ -95,6 +95,14 @@ in `development`. Another option would be to use Webrick, Mongrel, Thin, or another single-process server as your `rails server`, when you are trying to troubleshoot an issue in development. +##Specify editor to open files in + +```ruby +# e.g. in config/initializers/better_errors.rb +# Other preset values are [:mvim, :macvim, :textmate, :txmt, :tm, :sublime, :subl, :st] +BetterErrors.editor = :mvim +``` + ## Get in touch! If you're using better_errors, I'd love to hear from you. Drop me a line and tell me what you think! From c57231c0345be1654245f63de00d502684fd2c39 Mon Sep 17 00:00:00 2001 From: Romet Date: Wed, 28 Oct 2015 14:59:46 +0200 Subject: [PATCH 002/160] fixed typo in editor protocol spec --- spec/better_errors_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/better_errors_spec.rb b/spec/better_errors_spec.rb index e9b26b67..44a0ff5d 100644 --- a/spec/better_errors_spec.rb +++ b/spec/better_errors_spec.rb @@ -55,7 +55,7 @@ end ["subl -w", "/Applications/Sublime Text 2.app/Contents/SharedSupport/bin/subl"].each do |editor| - it "uses mvim:// scheme when EDITOR=#{editor}" do + it "uses subl:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor subject.editor = subject.default_editor subject.editor[].should start_with "subl://" From 4b146fcef6d6359d65a5013493af61355d326b3c Mon Sep 17 00:00:00 2001 From: Matt Schlobohm Date: Mon, 16 Nov 2015 15:22:16 -0600 Subject: [PATCH 003/160] add idea + rubymine app url capability --- lib/better_errors.rb | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index 976927f4..5088af4a 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -17,6 +17,8 @@ module BetterErrors { symbols: [:macvim, :mvim], sniff: /vim/i, url: proc { |file, line| "mvim://open?url=file://#{file}&line=#{line}" } }, { symbols: [:sublime, :subl, :st], sniff: /subl/i, url: "subl://open?url=file://%{file}&line=%{line}" }, { symbols: [:textmate, :txmt, :tm], sniff: /mate/i, url: "txmt://open?url=file://%{file}&line=%{line}" }, + { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" }, + { symbols: [:rubymine], sniff: /rubymine/i, url: "rubymine://open?file=%{file}&line=%{line}" }, ] class << self From a65b56d03e0cb4a16ad02775631238068256b419 Mon Sep 17 00:00:00 2001 From: Drew Ulmer Date: Tue, 1 Dec 2015 21:17:35 -0600 Subject: [PATCH 004/160] Consolidate newlines in exception messages to avoid blank output The exception message will now have leading newlines removed to avoid displaying a blank message as a header. --- lib/better_errors/error_page.rb | 8 ++++++++ lib/better_errors/middleware.rb | 2 +- lib/better_errors/templates/main.erb | 6 +++--- lib/better_errors/templates/text.erb | 4 ++-- spec/better_errors/error_page_spec.rb | 16 ++++++++++++++++ 5 files changed, 30 insertions(+), 6 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index a7d888f9..e50c8deb 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -58,6 +58,14 @@ def backtrace_frames exception.backtrace end + def exception_type + exception.type + end + + def exception_message + exception.message.lstrip + end + def application_frames backtrace_frames.select(&:application?) end diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 3648db87..5362f3cc 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -115,7 +115,7 @@ def text?(env) def log_exception return unless BetterErrors.logger - message = "\n#{@error_page.exception.type} - #{@error_page.exception.message}:\n" + message = "\n#{@error_page.exception_type} - #{@error_page.exception_message}:\n" @error_page.backtrace_frames.each do |frame| message << " #{frame}\n" end diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index e1a7f9ed..43046056 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -1,7 +1,7 @@ - <%= exception.type %> at <%= request_path %> + <%= exception_type %> at <%= request_path %> <%# Stylesheets are placed in the for Turbolinks compatibility. %> @@ -731,8 +731,8 @@
-

<%= exception.type %> at <%= request_path %>

-

<%= exception.message %>

+

<%= exception_type %> at <%= request_path %>

+

<%= exception_message %>

diff --git a/lib/better_errors/templates/text.erb b/lib/better_errors/templates/text.erb index fe9068bb..f51f1eed 100644 --- a/lib/better_errors/templates/text.erb +++ b/lib/better_errors/templates/text.erb @@ -1,6 +1,6 @@ -<%== text_heading("=", "%s at %s" % [exception.type, request_path]) %> +<%== text_heading("=", "%s at %s" % [exception_type, request_path]) %> -> <%== exception.message %> +> <%== exception_message %> <% if backtrace_frames.any? %> <%== text_heading("-", "%s, line %i" % [first_frame.pretty_path, first_frame.line]) %> diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 0fc99ccb..e9b91895 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -72,5 +72,21 @@ module BetterErrors ]) response.should include("Source unavailable") end + + context 'with an exception with blank lines' do + class SpacedError < StandardError + def initialize(message = nil) + message = "\n\n#{message}" if message + super + end + end + + let!(:exception) { raise SpacedError, "Danger Warning!" rescue $! } + + it 'should not include leading blank lines from exception_message' do + exception.message.should =~ /\A\n\n/ + error_page.exception_message.should_not =~ /\A\n\n/ + end + end end end From a05a894134d62002e88f1e951beca90d2ddd06fa Mon Sep 17 00:00:00 2001 From: Charlie Somerville Date: Fri, 18 Dec 2015 17:08:20 +1100 Subject: [PATCH 005/160] ignore special #$! local variable in StackFrame#local_variables --- lib/better_errors/stack_frame.rb | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/better_errors/stack_frame.rb b/lib/better_errors/stack_frame.rb index 2a347f4f..46518031 100644 --- a/lib/better_errors/stack_frame.rb +++ b/lib/better_errors/stack_frame.rb @@ -68,7 +68,14 @@ def pretty_path def local_variables return {} unless frame_binding + frame_binding.eval("local_variables").each_with_object({}) do |name, hash| + # Ruby 2.2's local_variables will include the hidden #$! variable if + # called from within a rescue context. This is not a valid variable name, + # so the local_variable_get method complains. This should probably be + # considered a bug in Ruby itself, but we need to work around it. + next if name == :"\#$!" + if defined?(frame_binding.local_variable_get) hash[name] = frame_binding.local_variable_get(name) else From 748cb59a72d72645be9637cdb2298f7e2358400b Mon Sep 17 00:00:00 2001 From: Adam Eberlin Date: Wed, 23 Dec 2015 12:29:35 -0600 Subject: [PATCH 006/160] Fix issues with pry version >= 0.10 --- lib/better_errors/error_page.rb | 33 ++++++++++++++++++++++++++------- lib/better_errors/repl/pry.rb | 4 ++++ 2 files changed, 30 insertions(+), 7 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index e50c8deb..220a8d7c 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -41,17 +41,13 @@ def do_eval(opts) index = opts["index"].to_i code = opts["source"] - unless binding = backtrace_frames[index].frame_binding + unless (binding = backtrace_frames[index].frame_binding) return { error: "REPL unavailable in this stack frame" } end - result, prompt, prefilled_input = - (@repls[index] ||= REPL.provider.new(binding)).send_input(code) + @repls[index] ||= get_repl(index, binding) - { result: result, - prompt: prompt, - prefilled_input: prefilled_input, - highlighted_input: CodeRay.scan(code, :ruby).div(wrap: nil) } + send_input(index, code) end def backtrace_frames @@ -114,5 +110,28 @@ def inspect_value(obj) rescue Exception "(exception was raised in inspect)" end + + def get_repl(index, binding) + REPL.provider.new(binding).tap do |repl| + if repl.is_a?(REPL::Pry) + pry = repl.instance_variable_get(:@pry) + pry.instance_variable_set( + :@last_exception, + ::Pry::LastException.new(@exception.exception) + ) + end + end + end + + def send_input(index, code) + result, prompt, prefilled_input = @repls[index].send_input(code) + + { + highlighted_input: CodeRay.scan(code, :ruby).div(wrap: nil), + prefilled_input: prefilled_input, + prompt: prompt, + result: result + } + end end end diff --git a/lib/better_errors/repl/pry.rb b/lib/better_errors/repl/pry.rb index 5653e42c..0d88e8ce 100644 --- a/lib/better_errors/repl/pry.rb +++ b/lib/better_errors/repl/pry.rb @@ -30,6 +30,10 @@ def read_buffer ensure @buffer = "" end + + def print(*args) + @buffer << args.join(' ') + end end def initialize(binding) From 9c982335de414d9c4f7bac48e041b249642b6384 Mon Sep 17 00:00:00 2001 From: AQNOUCH Mohammed Date: Fri, 1 Jan 2016 01:34:01 +0000 Subject: [PATCH 007/160] Updated copyright to 2016 --- LICENSE.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/LICENSE.txt b/LICENSE.txt index 7de0d08b..59342cca 100644 --- a/LICENSE.txt +++ b/LICENSE.txt @@ -1,4 +1,4 @@ -Copyright (c) 2012-2015 Charlie Somerville +Copyright (c) 2012-2016 Charlie Somerville MIT License From e5a509cfda11dc44d1b2922baad38c8055d481b2 Mon Sep 17 00:00:00 2001 From: Chester Law Date: Thu, 11 Feb 2016 20:23:29 -0800 Subject: [PATCH 008/160] Make hitting tab key focus on the console --- lib/better_errors/templates/variable_info.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/templates/variable_info.erb b/lib/better_errors/templates/variable_info.erb index bde5daab..91c8b61a 100644 --- a/lib/better_errors/templates/variable_info.erb +++ b/lib/better_errors/templates/variable_info.erb @@ -11,7 +11,7 @@

-                
>>
+
>>
<% end %> From beed1868b9c1ce2321bc8784c58e4639ebc3595a Mon Sep 17 00:00:00 2001 From: pzgz Date: Sat, 16 Apr 2016 02:46:41 +0800 Subject: [PATCH 009/160] Try to respect Rails BacktraceCleaner if it's defined --- lib/better_errors/middleware.rb | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 5362f3cc..bcb9f8c1 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -116,7 +116,13 @@ def log_exception return unless BetterErrors.logger message = "\n#{@error_page.exception_type} - #{@error_page.exception_message}:\n" - @error_page.backtrace_frames.each do |frame| + traces = if defined?(Rails) && defined?(Rails.backtrace_cleaner) + Rails.backtrace_cleaner.clean(@error_page.backtrace_frames.map {|frame| "#{frame}"}) + else + @error_page.backtrace_frames + end + + traces.each do |frame| message << " #{frame}\n" end From 1cae83d7d48bb7534fbb42668118adc348d8ce86 Mon Sep 17 00:00:00 2001 From: "yuuji.yaginuma" Date: Sat, 14 May 2016 11:20:12 +0900 Subject: [PATCH 010/160] use `Exception#cause` insted of deprecated `Exception#original_exception` `Exception#original_exception` is deprecated in Rails 5. Ref: https://github.com/rails/rails/pull/18774 Therefore, if `Exception#cause` can be used, should use`Exception#cause`. Fixes #333 --- lib/better_errors/raised_exception.rb | 4 +- spec/better_errors/middleware_spec.rb | 70 ++++++++++++++++++--------- 2 files changed, 51 insertions(+), 23 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index 4057d5bf..f3ee36ae 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -4,7 +4,9 @@ class RaisedException attr_reader :exception, :message, :backtrace def initialize(exception) - if exception.respond_to?(:original_exception) && exception.original_exception + if exception.respond_to?(:cause) + exception = exception.cause if exception.cause + elsif exception.respond_to?(:original_exception) && exception.original_exception exception = exception.original_exception end diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 4cdd7826..592359cf 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -79,37 +79,63 @@ module BetterErrors status.should == 500 end - context "original_exception" do - class OriginalExceptionException < Exception - attr_reader :original_exception + if Exception.new.respond_to?(:cause) + context "cause" do + class OtherException < Exception + def initialize(message) + super(message) + end + end + + it "shows Original Exception if it responds_to and has an cause" do + app = Middleware.new(->env { + begin + raise "Original Exception" + rescue + raise OtherException.new("Other Exception") + end + }) - def initialize(message, original_exception = nil) - super(message) - @original_exception = original_exception + status, _, body = app.call({}) + + status.should == 500 + body.join.should_not match(/\n> Other Exception\n/) + body.join.should match(/\n> Original Exception\n/) end end + else + context "original_exception" do + class OriginalExceptionException < Exception + attr_reader :original_exception + + def initialize(message, original_exception = nil) + super(message) + @original_exception = original_exception + end + end - it "shows Original Exception if it responds_to and has an original_exception" do - app = Middleware.new(->env { - raise OriginalExceptionException.new("Other Exception", Exception.new("Original Exception")) - }) + it "shows Original Exception if it responds_to and has an original_exception" do + app = Middleware.new(->env { + raise OriginalExceptionException.new("Other Exception", Exception.new("Original Exception")) + }) - status, _, body = app.call({}) + status, _, body = app.call({}) - status.should == 500 - body.join.should_not match(/Other Exception/) - body.join.should match(/Original Exception/) - end + status.should == 500 + body.join.should_not match(/Other Exception/) + body.join.should match(/Original Exception/) + end - it "won't crash if the exception responds_to but doesn't have an original_exception" do - app = Middleware.new(->env { - raise OriginalExceptionException.new("Other Exception") - }) + it "won't crash if the exception responds_to but doesn't have an original_exception" do + app = Middleware.new(->env { + raise OriginalExceptionException.new("Other Exception") + }) - status, _, body = app.call({}) + status, _, body = app.call({}) - status.should == 500 - body.join.should match(/Other Exception/) + status.should == 500 + body.join.should match(/Other Exception/) + end end end From 9aae9be699dfbebf7a4f412da9bb15ac07b20891 Mon Sep 17 00:00:00 2001 From: Samuel Cochran Date: Fri, 24 Jun 2016 10:25:31 +0800 Subject: [PATCH 011/160] Hide variables unless we have binding_of_caller We can't show variables without the frame, as stated in the message under the code snippet, so there's no point displaying these sections. At the moment it just looks like there are no variables. --- lib/better_errors/templates/variable_info.erb | 40 ++++++++++--------- 1 file changed, 21 insertions(+), 19 deletions(-) diff --git a/lib/better_errors/templates/variable_info.erb b/lib/better_errors/templates/variable_info.erb index bde5daab..8d6bd166 100644 --- a/lib/better_errors/templates/variable_info.erb +++ b/lib/better_errors/templates/variable_info.erb @@ -45,26 +45,28 @@ -
-

Local Variables

-
- - <% @frame.local_variables.each do |name, value| %> - - <% end %> -
<%= name %>
<%== inspect_value value %>
+<% if BetterErrors.binding_of_caller_available? && @frame.frame_binding %> +
+

Local Variables

+
+ + <% @frame.local_variables.each do |name, value| %> + + <% end %> +
<%= name %>
<%== inspect_value value %>
+
-
-
-

Instance Variables

-
- - <% @frame.instance_variables.each do |name, value| %> - - <% end %> -
<%= name %>
<%== inspect_value value %>
+
+

Instance Variables

+
+ + <% @frame.instance_variables.each do |name, value| %> + + <% end %> +
<%= name %>
<%== inspect_value value %>
+
-
- + +<% end %> From a0311f94ec70dddb015af630840b96508fa78ff0 Mon Sep 17 00:00:00 2001 From: Charlie Somerville Date: Tue, 20 Sep 2016 19:24:59 -0400 Subject: [PATCH 012/160] use rack 1.6.4 --- Gemfile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 89418348..91f8a26b 100644 --- a/Gemfile +++ b/Gemfile @@ -3,7 +3,7 @@ source 'https://rubygems.org' gemspec gem "rake" -gem "rack" +gem "rack", "1.6.4" gem "rspec", "2.14.1" gem "binding_of_caller", platforms: :ruby gem "pry", "0.9.12" From 1dca9622b224e3467cc19cded60dbf504f3b2458 Mon Sep 17 00:00:00 2001 From: Charlie Somerville Date: Tue, 20 Sep 2016 19:26:10 -0400 Subject: [PATCH 013/160] build on ruby 2.3 too --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index f96813da..f3e99a3c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,3 +5,4 @@ rvm: - 2.0 - 2.1 - 2.2 + - 2.3 From 40cb4e6f6a4cdd0bc67a21a45bfadf9d325d1305 Mon Sep 17 00:00:00 2001 From: Charlie Somerville Date: Tue, 20 Sep 2016 19:27:50 -0400 Subject: [PATCH 014/160] ok 2.3.1 --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index f3e99a3c..c94db8cd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,4 @@ rvm: - 2.0 - 2.1 - 2.2 - - 2.3 + - 2.3.1 From 41421211306cb1696277b48e7a6eb93825b352d5 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Thu, 23 Mar 2017 21:38:44 +0100 Subject: [PATCH 015/160] Convert specs to RSpec 2.99.2 syntax with Transpec This conversion is done by Transpec 3.3.0 with the following command: transpec * 91 conversions from: obj.should to: expect(obj).to * 57 conversions from: == expected to: eq(expected) * 18 conversions from: obj.stub(:message) to: allow(obj).to receive(:message) * 10 conversions from: obj.should_not to: expect(obj).not_to * 6 conversions from: obj.should_receive(:message) to: expect(obj).to receive(:message) * 3 conversions from: =~ /pattern/ to: match(/pattern/) * 2 conversions from: obj.should_not_receive(:message) to: expect(obj).not_to receive(:message) For more details: https://github.com/yujinakayama/transpec#supported-conversions --- spec/better_errors/code_formatter_spec.rb | 26 ++++---- spec/better_errors/error_page_spec.rb | 42 ++++++------ spec/better_errors/middleware_spec.rb | 52 +++++++-------- spec/better_errors/raised_exception_spec.rb | 12 ++-- spec/better_errors/repl/pry_spec.rb | 20 +++--- spec/better_errors/repl/shared_examples.rb | 10 +-- spec/better_errors/stack_frame_spec.rb | 74 ++++++++++----------- spec/better_errors_spec.rb | 20 +++--- 8 files changed, 128 insertions(+), 128 deletions(-) diff --git a/spec/better_errors/code_formatter_spec.rb b/spec/better_errors/code_formatter_spec.rb index 93445b46..5b612de6 100644 --- a/spec/better_errors/code_formatter_spec.rb +++ b/spec/better_errors/code_formatter_spec.rb @@ -7,13 +7,13 @@ module BetterErrors let(:formatter) { CodeFormatter.new(filename, 8) } it "picks an appropriate scanner" do - formatter.coderay_scanner.should == :ruby + expect(formatter.coderay_scanner).to eq(:ruby) end it "shows 5 lines of context" do - formatter.line_range.should == (3..13) + expect(formatter.line_range).to eq(3..13) - formatter.context_lines.should == [ + expect(formatter.context_lines).to eq([ "three\n", "four\n", "five\n", @@ -25,40 +25,40 @@ module BetterErrors "eleven\n", "twelve\n", "thirteen\n" - ] + ]) end it "works when the line is right on the edge" do formatter = CodeFormatter.new(filename, 20) - formatter.line_range.should == (15..20) + expect(formatter.line_range).to eq(15..20) end describe CodeFormatter::HTML do it "highlights the erroring line" do formatter = CodeFormatter::HTML.new(filename, 8) - formatter.output.should =~ /highlight.*eight/ + expect(formatter.output).to match(/highlight.*eight/) end it "works when the line is right on the edge" do formatter = CodeFormatter::HTML.new(filename, 20) - formatter.output.should_not == formatter.source_unavailable + expect(formatter.output).not_to eq(formatter.source_unavailable) end it "doesn't barf when the lines don't make any sense" do formatter = CodeFormatter::HTML.new(filename, 999) - formatter.output.should == formatter.source_unavailable + expect(formatter.output).to eq(formatter.source_unavailable) end it "doesn't barf when the file doesn't exist" do formatter = CodeFormatter::HTML.new("fkdguhskd7e l", 1) - formatter.output.should == formatter.source_unavailable + expect(formatter.output).to eq(formatter.source_unavailable) end end describe CodeFormatter::Text do it "highlights the erroring line" do formatter = CodeFormatter::Text.new(filename, 8) - formatter.output.should == <<-TEXT.gsub(/^ /, "") + expect(formatter.output).to eq <<-TEXT.gsub(/^ /, "") 3 three 4 four 5 five @@ -75,17 +75,17 @@ module BetterErrors it "works when the line is right on the edge" do formatter = CodeFormatter::Text.new(filename, 20) - formatter.output.should_not == formatter.source_unavailable + expect(formatter.output).not_to eq(formatter.source_unavailable) end it "doesn't barf when the lines don't make any sense" do formatter = CodeFormatter::Text.new(filename, 999) - formatter.output.should == formatter.source_unavailable + expect(formatter.output).to eq(formatter.source_unavailable) end it "doesn't barf when the file doesn't exist" do formatter = CodeFormatter::Text.new("fkdguhskd7e l", 1) - formatter.output.should == formatter.source_unavailable + expect(formatter.output).to eq(formatter.source_unavailable) end end end diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index e9b91895..cb9ebfd3 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -19,15 +19,15 @@ module BetterErrors } it "includes the error message" do - response.should include("you divided by zero you silly goose!") + expect(response).to include("you divided by zero you silly goose!") end it "includes the request path" do - response.should include("/some/path") + expect(response).to include("/some/path") end it "includes the exception class" do - response.should include("ZeroDivisionError") + expect(response).to include("ZeroDivisionError") end context "variable inspection" do @@ -36,41 +36,41 @@ module BetterErrors if BetterErrors.binding_of_caller_available? it "shows local variables" do html = error_page.do_variables("index" => 0)[:html] - html.should include("local_a") - html.should include(":value_for_local_a") - html.should include("local_b") - html.should include(":value_for_local_b") + expect(html).to include("local_a") + expect(html).to include(":value_for_local_a") + expect(html).to include("local_b") + expect(html).to include(":value_for_local_b") end else it "tells the user to add binding_of_caller to their gemfile to get fancy features" do html = error_page.do_variables("index" => 0)[:html] - html.should include(%{gem "binding_of_caller"}) + expect(html).to include(%{gem "binding_of_caller"}) end end it "shows instance variables" do html = error_page.do_variables("index" => 0)[:html] - html.should include("inst_c") - html.should include(":value_for_inst_c") - html.should include("inst_d") - html.should include(":value_for_inst_d") + expect(html).to include("inst_c") + expect(html).to include(":value_for_inst_c") + expect(html).to include("inst_d") + expect(html).to include(":value_for_inst_d") end it "shows filter instance variables" do - BetterErrors.stub(:ignored_instance_variables).and_return([ :@inst_d ]) + allow(BetterErrors).to receive(:ignored_instance_variables).and_return([ :@inst_d ]) html = error_page.do_variables("index" => 0)[:html] - html.should include("inst_c") - html.should include(":value_for_inst_c") - html.should_not include('@inst_d') - html.should_not include("
:value_for_inst_d
") + expect(html).to include("inst_c") + expect(html).to include(":value_for_inst_c") + expect(html).not_to include('@inst_d') + expect(html).not_to include("
:value_for_inst_d
") end end it "doesn't die if the source file is not a real filename" do - exception.stub(:backtrace).and_return([ + allow(exception).to receive(:backtrace).and_return([ ":10:in `spawn_rack_application'" ]) - response.should include("Source unavailable") + expect(response).to include("Source unavailable") end context 'with an exception with blank lines' do @@ -84,8 +84,8 @@ def initialize(message = nil) let!(:exception) { raise SpacedError, "Danger Warning!" rescue $! } it 'should not include leading blank lines from exception_message' do - exception.message.should =~ /\A\n\n/ - error_page.exception_message.should_not =~ /\A\n\n/ + expect(exception.message).to match(/\A\n\n/) + expect(error_page.exception_message).not_to match(/\A\n\n/) end end end diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 592359cf..e7041198 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -6,42 +6,42 @@ module BetterErrors let(:exception) { RuntimeError.new("oh no :(") } it "passes non-error responses through" do - app.call({}).should == ":)" + expect(app.call({})).to eq(":)") end it "calls the internal methods" do - app.should_receive :internal_call + expect(app).to receive :internal_call app.call("PATH_INFO" => "/__better_errors/1/preform_awesomness") end it "calls the internal methods on any subfolder path" do - app.should_receive :internal_call + expect(app).to receive :internal_call app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors/1/preform_awesomness") end it "shows the error page" do - app.should_receive :show_error_page + expect(app).to receive :show_error_page app.call("PATH_INFO" => "/__better_errors/") end it "shows the error page on any subfolder path" do - app.should_receive :show_error_page + expect(app).to receive :show_error_page app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors/") end it "doesn't show the error page to a non-local address" do - app.should_not_receive :better_errors_call + expect(app).not_to receive :better_errors_call app.call("REMOTE_ADDR" => "1.2.3.4") end it "shows to a whitelisted IP" do BetterErrors::Middleware.allow_ip! '77.55.33.11' - app.should_receive :better_errors_call + expect(app).to receive :better_errors_call app.call("REMOTE_ADDR" => "77.55.33.11") end it "respects the X-Forwarded-For header" do - app.should_not_receive :better_errors_call + expect(app).not_to receive :better_errors_call app.call( "REMOTE_ADDR" => "127.0.0.1", "HTTP_X_FORWARDED_FOR" => "1.2.3.4", @@ -61,12 +61,12 @@ module BetterErrors it "shows that no errors have been recorded" do status, headers, body = app.call("PATH_INFO" => "/__better_errors") - body.join.should match /No errors have been recorded yet./ + expect(body.join).to match /No errors have been recorded yet./ end it "shows that no errors have been recorded on any subfolder path" do status, headers, body = app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors") - body.join.should match /No errors have been recorded yet./ + expect(body.join).to match /No errors have been recorded yet./ end end @@ -76,7 +76,7 @@ module BetterErrors it "returns status 500" do status, headers, body = app.call({}) - status.should == 500 + expect(status).to eq(500) end if Exception.new.respond_to?(:cause) @@ -98,9 +98,9 @@ def initialize(message) status, _, body = app.call({}) - status.should == 500 - body.join.should_not match(/\n> Other Exception\n/) - body.join.should match(/\n> Original Exception\n/) + expect(status).to eq(500) + expect(body.join).not_to match(/\n> Other Exception\n/) + expect(body.join).to match(/\n> Original Exception\n/) end end else @@ -121,9 +121,9 @@ def initialize(message, original_exception = nil) status, _, body = app.call({}) - status.should == 500 - body.join.should_not match(/Other Exception/) - body.join.should match(/Original Exception/) + expect(status).to eq(500) + expect(body.join).not_to match(/Other Exception/) + expect(body.join).to match(/Original Exception/) end it "won't crash if the exception responds_to but doesn't have an original_exception" do @@ -133,45 +133,45 @@ def initialize(message, original_exception = nil) status, _, body = app.call({}) - status.should == 500 - body.join.should match(/Other Exception/) + expect(status).to eq(500) + expect(body.join).to match(/Other Exception/) end end end it "returns ExceptionWrapper's status_code" do ad_ew = double("ActionDispatch::ExceptionWrapper") - ad_ew.stub('new').with({}, exception ){ double("ExceptionWrapper", status_code: 404) } + allow(ad_ew).to receive('new').with({}, exception) { double("ExceptionWrapper", status_code: 404) } stub_const('ActionDispatch::ExceptionWrapper', ad_ew) status, headers, body = app.call({}) - status.should == 404 + expect(status).to eq(404) end it "returns UTF-8 error pages" do status, headers, body = app.call({}) - headers["Content-Type"].should match /charset=utf-8/ + expect(headers["Content-Type"]).to match /charset=utf-8/ end it "returns text pages by default" do status, headers, body = app.call({}) - headers["Content-Type"].should match /text\/plain/ + expect(headers["Content-Type"]).to match /text\/plain/ end it "returns HTML pages by default" do # Chrome's 'Accept' header looks similar this. status, headers, body = app.call("HTTP_ACCEPT" => "text/html,application/xhtml+xml;q=0.9,*/*") - headers["Content-Type"].should match /text\/html/ + expect(headers["Content-Type"]).to match /text\/html/ end it "logs the exception" do logger = Object.new - logger.should_receive :fatal - BetterErrors.stub(:logger).and_return(logger) + expect(logger).to receive :fatal + allow(BetterErrors).to receive(:logger).and_return(logger) app.call({}) end diff --git a/spec/better_errors/raised_exception_spec.rb b/spec/better_errors/raised_exception_spec.rb index 435c0139..0c28bd19 100644 --- a/spec/better_errors/raised_exception_spec.rb +++ b/spec/better_errors/raised_exception_spec.rb @@ -24,8 +24,8 @@ module BetterErrors its(:type) { should == SyntaxError } it "has the right filename and line number in the backtrace" do - subject.backtrace.first.filename.should == "foo.rb" - subject.backtrace.first.line.should == 123 + expect(subject.backtrace.first.filename).to eq("foo.rb") + expect(subject.backtrace.first.line).to eq(123) end end @@ -44,8 +44,8 @@ module BetterErrors its(:type) { should == Haml::SyntaxError } it "has the right filename and line number in the backtrace" do - subject.backtrace.first.filename.should == "foo.rb" - subject.backtrace.first.line.should == 123 + expect(subject.backtrace.first.filename).to eq("foo.rb") + expect(subject.backtrace.first.line).to eq(123) end end @@ -64,8 +64,8 @@ module BetterErrors its(:type) { should == Sprockets::Coffeelint::Error } it "has the right filename and line number in the backtrace" do - subject.backtrace.first.filename.should == "app/assets/javascripts/files/index.coffee" - subject.backtrace.first.line.should == 11 + expect(subject.backtrace.first.filename).to eq("app/assets/javascripts/files/index.coffee") + expect(subject.backtrace.first.line).to eq(11) end end end diff --git a/spec/better_errors/repl/pry_spec.rb b/spec/better_errors/repl/pry_spec.rb index 1aa502c5..6f2b627d 100644 --- a/spec/better_errors/repl/pry_spec.rb +++ b/spec/better_errors/repl/pry_spec.rb @@ -15,23 +15,23 @@ module REPL it "does line continuation" do output, prompt, filled = repl.send_input "" - output.should == "=> nil\n" - prompt.should == ">>" - filled.should == "" + expect(output).to eq("=> nil\n") + expect(prompt).to eq(">>") + expect(filled).to eq("") output, prompt, filled = repl.send_input "def f(x)" - output.should == "" - prompt.should == ".." - filled.should == " " + expect(output).to eq("") + expect(prompt).to eq("..") + expect(filled).to eq(" ") output, prompt, filled = repl.send_input "end" if RUBY_VERSION >= "2.1.0" - output.should == "=> :f\n" + expect(output).to eq("=> :f\n") else - output.should == "=> nil\n" + expect(output).to eq("=> nil\n") end - prompt.should == ">>" - filled.should == "" + expect(prompt).to eq(">>") + expect(filled).to eq("") end it_behaves_like "a REPL provider" diff --git a/spec/better_errors/repl/shared_examples.rb b/spec/better_errors/repl/shared_examples.rb index 4925d8f1..296c9f29 100644 --- a/spec/better_errors/repl/shared_examples.rb +++ b/spec/better_errors/repl/shared_examples.rb @@ -1,18 +1,18 @@ shared_examples_for "a REPL provider" do it "evaluates ruby code in a given context" do repl.send_input("local_a = 456") - fresh_binding.eval("local_a").should == 456 + expect(fresh_binding.eval("local_a")).to eq(456) end it "returns a tuple of output and the new prompt" do output, prompt = repl.send_input("1 + 2") - output.should == "=> 3\n" - prompt.should == ">>" + expect(output).to eq("=> 3\n") + expect(prompt).to eq(">>") end it "doesn't barf if the code throws an exception" do output, prompt = repl.send_input("raise Exception") - output.should include "Exception: Exception" - prompt.should == ">>" + expect(output).to include "Exception: Exception" + expect(prompt).to eq(">>") end end diff --git a/spec/better_errors/stack_frame_spec.rb b/spec/better_errors/stack_frame_spec.rb index 3d9505c0..50bb460c 100644 --- a/spec/better_errors/stack_frame_spec.rb +++ b/spec/better_errors/stack_frame_spec.rb @@ -4,80 +4,80 @@ module BetterErrors describe StackFrame do context "#application?" do it "is true for application filenames" do - BetterErrors.stub(:application_root).and_return("/abc/xyz") + allow(BetterErrors).to receive(:application_root).and_return("/abc/xyz") frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") - frame.should be_application + expect(frame).to be_application end it "is false for everything else" do - BetterErrors.stub(:application_root).and_return("/abc/xyz") + allow(BetterErrors).to receive(:application_root).and_return("/abc/xyz") frame = StackFrame.new("/abc/nope", 123, "foo") - frame.should_not be_application + expect(frame).not_to be_application end it "doesn't care if no application_root is set" do frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") - frame.should_not be_application + expect(frame).not_to be_application end end context "#gem?" do it "is true for gem filenames" do - Gem.stub(:path).and_return(["/abc/xyz"]) + allow(Gem).to receive(:path).and_return(["/abc/xyz"]) frame = StackFrame.new("/abc/xyz/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo") - frame.should be_gem + expect(frame).to be_gem end it "is false for everything else" do - Gem.stub(:path).and_return(["/abc/xyz"]) + allow(Gem).to receive(:path).and_return(["/abc/xyz"]) frame = StackFrame.new("/abc/nope", 123, "foo") - frame.should_not be_gem + expect(frame).not_to be_gem end end context "#application_path" do it "chops off the application root" do - BetterErrors.stub(:application_root).and_return("/abc/xyz") + allow(BetterErrors).to receive(:application_root).and_return("/abc/xyz") frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") - frame.application_path.should == "app/controllers/crap_controller.rb" + expect(frame.application_path).to eq("app/controllers/crap_controller.rb") end end context "#gem_path" do it "chops of the gem path and stick (gem) there" do - Gem.stub(:path).and_return(["/abc/xyz"]) + allow(Gem).to receive(:path).and_return(["/abc/xyz"]) frame = StackFrame.new("/abc/xyz/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo") - frame.gem_path.should == "whatever (1.2.3) lib/whatever.rb" + expect(frame.gem_path).to eq("whatever (1.2.3) lib/whatever.rb") end it "prioritizes gem path over application path" do - BetterErrors.stub(:application_root).and_return("/abc/xyz") - Gem.stub(:path).and_return(["/abc/xyz/vendor"]) + allow(BetterErrors).to receive(:application_root).and_return("/abc/xyz") + allow(Gem).to receive(:path).and_return(["/abc/xyz/vendor"]) frame = StackFrame.new("/abc/xyz/vendor/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo") - frame.gem_path.should == "whatever (1.2.3) lib/whatever.rb" + expect(frame.gem_path).to eq("whatever (1.2.3) lib/whatever.rb") end end context "#pretty_path" do it "returns #application_path for application paths" do - BetterErrors.stub(:application_root).and_return("/abc/xyz") + allow(BetterErrors).to receive(:application_root).and_return("/abc/xyz") frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") - frame.pretty_path.should == frame.application_path + expect(frame.pretty_path).to eq(frame.application_path) end it "returns #gem_path for gem paths" do - Gem.stub(:path).and_return(["/abc/xyz"]) + allow(Gem).to receive(:path).and_return(["/abc/xyz"]) frame = StackFrame.new("/abc/xyz/gems/whatever-1.2.3/lib/whatever.rb", 123, "foo") - frame.pretty_path.should == frame.gem_path + expect(frame.pretty_path).to eq(frame.gem_path) end end @@ -87,36 +87,36 @@ module BetterErrors rescue SyntaxError => syntax_error end frames = StackFrame.from_exception(syntax_error) - frames.first.filename.should == "my_file.rb" - frames.first.line.should == 123 + expect(frames.first.filename).to eq("my_file.rb") + expect(frames.first.line).to eq(123) end it "doesn't blow up if no method name is given" do error = StandardError.allocate - error.stub(:backtrace).and_return(["foo.rb:123"]) + allow(error).to receive(:backtrace).and_return(["foo.rb:123"]) frames = StackFrame.from_exception(error) - frames.first.filename.should == "foo.rb" - frames.first.line.should == 123 + expect(frames.first.filename).to eq("foo.rb") + expect(frames.first.line).to eq(123) - error.stub(:backtrace).and_return(["foo.rb:123: this is an error message"]) + allow(error).to receive(:backtrace).and_return(["foo.rb:123: this is an error message"]) frames = StackFrame.from_exception(error) - frames.first.filename.should == "foo.rb" - frames.first.line.should == 123 + expect(frames.first.filename).to eq("foo.rb") + expect(frames.first.line).to eq(123) end it "ignores a backtrace line if its format doesn't make any sense at all" do error = StandardError.allocate - error.stub(:backtrace).and_return(["foo.rb:123:in `foo'", "C:in `find'", "bar.rb:123:in `bar'"]) + allow(error).to receive(:backtrace).and_return(["foo.rb:123:in `foo'", "C:in `find'", "bar.rb:123:in `bar'"]) frames = StackFrame.from_exception(error) - frames.count.should == 2 + expect(frames.count).to eq(2) end it "doesn't blow up if a filename contains a colon" do error = StandardError.allocate - error.stub(:backtrace).and_return(["crap:filename.rb:123"]) + allow(error).to receive(:backtrace).and_return(["crap:filename.rb:123"]) frames = StackFrame.from_exception(error) - frames.first.filename.should == "crap:filename.rb" + expect(frames.first.filename).to eq("crap:filename.rb") end it "doesn't blow up with a BasicObject as frame binding" do @@ -125,7 +125,7 @@ def obj.my_binding ::Kernel.binding end frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index", obj.my_binding) - frame.class_name.should == 'BasicObject' + expect(frame.class_name).to eq('BasicObject') end it "sets method names properly" do @@ -140,11 +140,11 @@ def obj.my_method frame = StackFrame.from_exception(obj.my_method).first if BetterErrors.binding_of_caller_available? - frame.method_name.should == "#my_method" - frame.class_name.should == "String" + expect(frame.method_name).to eq("#my_method") + expect(frame.class_name).to eq("String") else - frame.method_name.should == "my_method" - frame.class_name.should == nil + expect(frame.method_name).to eq("my_method") + expect(frame.class_name).to eq(nil) end end diff --git a/spec/better_errors_spec.rb b/spec/better_errors_spec.rb index 44a0ff5d..40693e00 100644 --- a/spec/better_errors_spec.rb +++ b/spec/better_errors_spec.rb @@ -3,38 +3,38 @@ describe BetterErrors do context ".editor" do it "defaults to textmate" do - subject.editor["foo.rb", 123].should == "txmt://open?url=file://foo.rb&line=123" + expect(subject.editor["foo.rb", 123]).to eq("txmt://open?url=file://foo.rb&line=123") end it "url escapes the filename" do - subject.editor["&.rb", 0].should == "txmt://open?url=file://%26.rb&line=0" + expect(subject.editor["&.rb", 0]).to eq("txmt://open?url=file://%26.rb&line=0") end [:emacs, :emacsclient].each do |editor| it "uses emacs:// scheme when set to #{editor.inspect}" do subject.editor = editor - subject.editor[].should start_with "emacs://" + expect(subject.editor[]).to start_with "emacs://" end end [:macvim, :mvim].each do |editor| it "uses mvim:// scheme when set to #{editor.inspect}" do subject.editor = editor - subject.editor[].should start_with "mvim://" + expect(subject.editor[]).to start_with "mvim://" end end [:sublime, :subl, :st].each do |editor| it "uses subl:// scheme when set to #{editor.inspect}" do subject.editor = editor - subject.editor[].should start_with "subl://" + expect(subject.editor[]).to start_with "subl://" end end [:textmate, :txmt, :tm].each do |editor| it "uses txmt:// scheme when set to #{editor.inspect}" do subject.editor = editor - subject.editor[].should start_with "txmt://" + expect(subject.editor[]).to start_with "txmt://" end end @@ -42,7 +42,7 @@ it "uses emacs:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor subject.editor = subject.default_editor - subject.editor[].should start_with "emacs://" + expect(subject.editor[]).to start_with "emacs://" end end @@ -50,7 +50,7 @@ it "uses mvim:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor subject.editor = subject.default_editor - subject.editor[].should start_with "mvim://" + expect(subject.editor[]).to start_with "mvim://" end end @@ -58,7 +58,7 @@ it "uses subl:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor subject.editor = subject.default_editor - subject.editor[].should start_with "subl://" + expect(subject.editor[]).to start_with "subl://" end end @@ -66,7 +66,7 @@ it "uses txmt:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor subject.editor = subject.default_editor - subject.editor[].should start_with "txmt://" + expect(subject.editor[]).to start_with "txmt://" end end end From f229d1b821d246846e72fd51782a102068cad7b8 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Thu, 23 Mar 2017 21:14:51 +0100 Subject: [PATCH 016/160] Use newer version of rspec --- Gemfile | 3 ++- spec/better_errors/raised_exception_spec.rb | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Gemfile b/Gemfile index 91f8a26b..884990c0 100644 --- a/Gemfile +++ b/Gemfile @@ -4,7 +4,8 @@ gemspec gem "rake" gem "rack", "1.6.4" -gem "rspec", "2.14.1" +gem "rspec", "3.5.0" +gem "rspec-its" gem "binding_of_caller", platforms: :ruby gem "pry", "0.9.12" gem "yard" diff --git a/spec/better_errors/raised_exception_spec.rb b/spec/better_errors/raised_exception_spec.rb index 0c28bd19..bb528ffd 100644 --- a/spec/better_errors/raised_exception_spec.rb +++ b/spec/better_errors/raised_exception_spec.rb @@ -1,4 +1,5 @@ require "spec_helper" +require "rspec/its" module BetterErrors describe RaisedException do From aeaf96f4ebf0f2908f62835adfa84f3d7d63e9c7 Mon Sep 17 00:00:00 2001 From: Anthony Date: Mon, 3 Apr 2017 11:24:31 -0400 Subject: [PATCH 017/160] Minor formatting fix to README --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 81083f08..8579041e 100644 --- a/README.md +++ b/README.md @@ -95,7 +95,7 @@ in `development`. Another option would be to use Webrick, Mongrel, Thin, or another single-process server as your `rails server`, when you are trying to troubleshoot an issue in development. -##Specify editor to open files in +## Specify editor to open files in ```ruby # e.g. in config/initializers/better_errors.rb From 9d97518e45f79e5ee8b420aa5070d2aa95aaf54d Mon Sep 17 00:00:00 2001 From: Alexey Zapparov Date: Mon, 17 Apr 2017 02:32:19 +0200 Subject: [PATCH 018/160] Fix better errors stack info jax request uri --- lib/better_errors/templates/main.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index 43046056..8237ae87 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -777,7 +777,7 @@ function apiCall(method, opts, cb) { var req = new XMLHttpRequest(); - req.open("POST", <%== uri_prefix.gsub("<", "<").inspect %> + "/__better_errors/" + OID + "/" + method, true); + req.open("POST", "//" + window.location.host + <%== uri_prefix.gsub("<", "<").inspect %> + "/__better_errors/" + OID + "/" + method, true); req.setRequestHeader("Content-Type", "application/json"); req.send(JSON.stringify(opts)); req.onreadystatechange = function() { From fa01e018eeb07731c02b01aac1817060f5475dc3 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 6 Jul 2017 17:50:40 -0400 Subject: [PATCH 019/160] Failing spec for ExceptionWrapper error --- spec/better_errors/middleware_spec.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 592359cf..20f94382 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -64,6 +64,14 @@ module BetterErrors body.join.should match /No errors have been recorded yet./ end + it 'does not attempt to use ActionDispatch::ExceptionWrapper with a nil exception' do + ad_ew = double("ActionDispatch::ExceptionWrapper") + stub_const('ActionDispatch::ExceptionWrapper', ad_ew) + ad_ew.should_not_receive :new + + status, headers, body = app.call("PATH_INFO" => "/__better_errors") + end + it "shows that no errors have been recorded on any subfolder path" do status, headers, body = app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors") body.join.should match /No errors have been recorded yet./ From 5f38cd0951dd71102b2f8c0a895c641a85e63f2a Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 6 Jul 2017 17:51:12 -0400 Subject: [PATCH 020/160] Fix ExceptionWrapper error caused by no exception --- lib/better_errors/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 5362f3cc..55bb0d7c 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -100,7 +100,7 @@ def show_error_page(env, exception=nil) end status_code = 500 - if defined? ActionDispatch::ExceptionWrapper + if defined?(ActionDispatch::ExceptionWrapper) && exception status_code = ActionDispatch::ExceptionWrapper.new(env, exception).status_code end From 02a69821c2c19465d7da472d6865e09639af8718 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 9 Jul 2017 15:12:28 -0400 Subject: [PATCH 021/160] Newer Ruby versions for CI --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c94db8cd..501f42aa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -5,4 +5,5 @@ rvm: - 2.0 - 2.1 - 2.2 - - 2.3.1 + - 2.3 + - 2.4 From 5eb99df87034e62f3c0c6b59703129a8964ff703 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 29 Jul 2017 18:10:58 -0400 Subject: [PATCH 022/160] Add feature screenshots --- feature-screenshots/1-application-error.jpg | Bin 0 -> 112056 bytes .../2-other-application-frame.jpg | Bin 0 -> 111891 bytes feature-screenshots/3-live-shell.jpg | Bin 0 -> 105799 bytes feature-screenshots/4-other-frames.jpg | Bin 0 -> 140673 bytes feature-screenshots/5-open-editor.jpg | Bin 0 -> 113156 bytes feature-screenshots/6-local-variables.jpg | Bin 0 -> 120658 bytes feature-screenshots/7-non-html-requests.jpg | Bin 0 -> 98808 bytes 7 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 feature-screenshots/1-application-error.jpg create mode 100644 feature-screenshots/2-other-application-frame.jpg create mode 100644 feature-screenshots/3-live-shell.jpg create mode 100644 feature-screenshots/4-other-frames.jpg create mode 100644 feature-screenshots/5-open-editor.jpg create mode 100644 feature-screenshots/6-local-variables.jpg create mode 100644 feature-screenshots/7-non-html-requests.jpg diff --git a/feature-screenshots/1-application-error.jpg b/feature-screenshots/1-application-error.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7fb0086386cc1a86d9980ff0706b8f671a1d5566 GIT binary patch literal 112056 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%0Awz5>^r&n1go+{p?2Dy3buO8aI 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

>O64Yv*36}OhYRl20>Os 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 E3;(m%q5uE@ literal 0 HcmV?d00001 diff --git a/feature-screenshots/2-other-application-frame.jpg b/feature-screenshots/2-other-application-frame.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b5db9af3ba84cccb77fd4067d530eccc92e99a3d GIT binary patch literal 111891 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

St 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 literal 0 HcmV?d00001 diff --git a/feature-screenshots/3-live-shell.jpg b/feature-screenshots/3-live-shell.jpg new file mode 100644 index 0000000000000000000000000000000000000000..f7a71b5c9e7cd750633f626f15105c82d02f6aac GIT binary patch literal 105799 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 lz`me*t-+N4x+4 literal 0 HcmV?d00001 diff --git a/feature-screenshots/4-other-frames.jpg b/feature-screenshots/4-other-frames.jpg new file mode 100644 index 0000000000000000000000000000000000000000..01ffaeec94dc140998db81b17e03d7d97a91158c GIT binary patch literal 140673 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 z zpxYu~aHVoUaY5tVC1;s_Q-+PpT)Ol#G4Ag>@U_XH8-bh1IlK032Fg!X0Pdy;IB<^U z4Bo9aX7i^aPZ_x0%N0uhge)xb#>OoOVZJMkF+d|nG707=w75hyf$adoTYGe@@txA6 z>a%y8Yd;}gDZJsan`jl7y5U5ZrPk4st4KXGGBGt9wp0J6~@nj=H2vXj|_9aEcGXzk^q_Q5%|X~@^X4Ikc1 z1d%G9{cd?T(a6d3!=k^X5$_Hh!CWb79MuRZvMQAISijY@F&zW4NQe^h8YPS>O}#OeY6 z46B2)A}<5#`%>vX-i5hI&?ibNvOgZ%Y_29LF2@E~tK~Ld{|0G(0B?*J*l__2NYdon z0F>x7oBRw9jh<3187w-wu~1pvKU*<)H_-{PQxg^3G$ZP1|A7(ofKBBQFu2htnkY}= z0+o4_IDQeZz;&BwAkxw~uMHRZR;_X@nqMTYu;B40aj%4!H6M+$9+!Dr{2f zlnw`4?Q{bg&_<;g_2A}@wS2?Ag>*j&)B14F?y|Nxc@949z==cO1$$MtI9oB%nV&GL z@kCUsxL{_pe}*`*DfMndCA2B_rE^K~P?@Kyk|Me5GdtnkEZ0@XR~>VoQ-6Tfg&1aM z1XlEjYBN!*0>m^!AU^=#X?sai3D>Q-V|?3v^l4AA3i0c+L*tL*PJ3Q8O0I9_p6~NS zI3-fTG+hZA`03ROk``#9BwP^}uLjF2Yb^65TT#Ca%O`?SPC^%cKwn&^O==Fgh`dNN zDVxm{Tdq|limrO+dsIH|o@*L7Z2d0z!b($yPZHcSP@-j;3F`!!;OJ29oMBUvUINSf z<%A`w)Sxx;v$NlPv5||2TU(${uNGpgI+(;C(gowwmT^E@1IEP0h9K!ic8|qvA&C*G zWCes#q~-MS5^JVT(Dg18sd|De8dK1+dsHs-4)Wp%$`uwLfMpI5p$^;l6(;8sAK@a= z?3r<|V1vr(cRSoy3#Fcg9ei8Jvsx)EnGO$dXZaTFHnz01xYfQx8 z7e^F_qsWqD_g-JV<8u32^o-*b`ET?b6GUqpz06cp872WV)I?8%`RkxrGO%19bPQf2 za%4+(EqL3REEV)RLuAB4F+UA1jDT@yhpC)n$TowxJ5(+Yae;)bg+d^CK987>bfylbGKaLXc+&m2)bYWD!N4X@`+e5})(acwAPjgBSuau&LRbvE9uUCw zzPa^#hEOCa7-1KOu5hq>-}+Kq$5AIp|D^ipx9M_t3s~_f^Y9wh1$~I@O7MU57BI3S zWT1mTOuMPyRgpuSe{fH-y!1rCiIaA8kPTxLY^*l>VG(?CSv{#VMXk79^JA-gudIAi z=KcGKU0Pf(7_@a3aNWrO%QySsYiwjo(e!|@f`moY4IA&Ar8~P0*W*PvUyhePYx7?S zYt=ND8Ed|{-#Ehk zc7SLFVU#nUEI>)4a)TyB#j6L9S<90AMjSWM03K;9qVH>LYF9NF8r~!IqW%&tQfqC^ z;*%+@RQ2+VKm?MNV7gO5SXezpa-|Na!(zy4*$DF`v(_vRHTA-sY?3~0<`E|QmbtmrTDT2t^+HbMk)OP1KH zN_JKjmrq6^k`fzOd?nH%YvymAosi-^9gdJ^7LgJ#fU^Q@@^NC+C+v4WD;9Ake z)20Zz(8SNm*|co_;W{dN@g&WV(M%>VegPJ@Z?&>O(jiL{{L^Pl1t+D@2&qT8g~{)- z+VAtoQyh*VQ-Bp zH4JGQ<#J~lAsG4GZyP@*zgBN{SGv!tcWixSn504-gdbADBxHV$FDk^Pd)1F7pA3v@ z7;EmBmMI-N&ZYOj{XU=2v)j(r5`Jwx=ZiLNiApOZaEHMTm^=-PYEqYOgvO~`R(Qa-f34>4S9(reJz;FGVMpJUF7H}MAMWD}Y zou=t#$j7Z-P$TI-*)W=$I#1(M!~KdTt~|t`Rb?!suY6x%wVf!2^-v0fiB0x3`#Fc~F6n}uN7f&!$c?b=A)Q!StTQ%lUwV~~I6VuG zz>w8u#=mVNj9{$xhNur7gSKLXMqY=j544?VzUD}{sgz*ICIEPZrRM~AGdZe_@vCaM zOthvNzWX73AZz41exOW5A;kPlldGOLFQGV;RdIyz{oBIJS}dFqSeg(aRJ|%yc8b~( zq6(_#vVy>H`%{{?2gb`&6r*!&CUQP^B;V(E59s1^F#B;t>m25nzc4*y1j`BLcudEK zh!Cb5pixwj5u}yh%rv_l@W_^^5aUtQbLSZM_;~ZlQ_aFHG>#1O3L~|Kgm+Q()8BYz z44Qs!XFjo!P6#=Q)bHz!lvhTxb?hc5tEL<-==JlvZ!RHug1V;M-acO&MyVpxla5m- zYgGx@rp)h+_|eEM6t}xJf8Q30>qcOLyD}h^+B2X`()&2C%E3E-jw`f2MdC=m^TV3Z z-QMp}4KRjkTQ5+y>kVs}13d=oQ^x|0S}ezsW1YU-7zZ9*E}j+}P8EGQa_PtPCs8?$ zQ}8aAw2w>W!lmNJ%f9$wBYi6k>-WfWp7pzaJ!?Mjs!D-X4Cs?-9!qI}eQ(6IWMR29 zC2;z~KZsNLj`5RF_^DHNbgtwN7e>k#J1*73wl_5w_{{uGezfhY?Mwhz(kbBDPWgxe%)K`<7T*bd zA}&Vgse1Uqy+Xmc(0#N*9qHn(F#YnI2681)mJKmCJ`G4mJ)&xjb>h+B9avB*?&Ar1&VyQp zF=d@qtT!So`*o@>ggM0rv`gGPbC2C+3RSPCd7Qv824@G6s)1zoB+UMB8*dJZwl`|p zWeJ>66und4Miu1qUe+)0Y=cIQt#Pn4B7ZY?N&{wkBi z=Z|AUBW3ZnO+n4mPy9%)l$0>J57rcqI}RAhNBNvlyLuzh@MGnG4zIc1C3;?Soxi@I z2gB6!KeJ-C*;<}o2;gGg&bw)@2cdHrbJv+}fAHrU$mU4W zq2w3{Q!m5Q51$&@Vr*n+AS@@d52ZTAmE*IuzvT7nFq|5QyZxhI52BJC-(!DXduvJN z4a1Y!YtPNt*`9sve19is@ckRQIxRf~Fuf@3(uIFK=FodV+CwR{?|98lxx(hz${X_m>r1nhXRgEUHXCx=?Avx8_=jKr z7UR%Ub7Yv{bsYhpC+Y;%-Lv{R4?1?~LAr)N1-$f22|Lk5xJ5)?+WDa9yv44qOVcxcwd5~U)gjo!N7{~WQI-7~UxT{JGUr}p$l zHq=k2TRR3}97 zVhYG|t~Qg-leMeCY?n;D_*+aM%1maI--=Z*L05$F>b+1xoiGp?V~M`W;&$=cSDjy& zQAt!IEr~1}l?BVXz2WTRjG88Z&2?m;4HyRZOb#lPY%)~Z&0`Se`Em8wrSfK8L}ce3@N3z5Ht@1iK?8%^Cc|P#t)>S zKBEmt*yk7S>+}|CV5Gpb-fXd-S)puB??7H!>h11*K@R%%*{2Ekn5&W|63CJ9&s`(<91pi$kB=3GGXQ6rwKW>)}W;_gNZ8_ts0zjN1e_lrSJ5i0FU^D5cEj{E>kgwZNKq?IP4N5SpBMNt=$YZD14r}&i$(B(ZZ=kMc>J%rTsKkm>IaaYF@P>8 zK2HxIMCFGU`Gb2m+&8nRyL;rHe_oa;&e(s06G~X&1f<~a#`=f+Vgs1Nz)6U$o_G` zY=ej4{{qZ^$D~#ktM={|d|b-Rr_s6`S(`s z@16PIJM;ga9mGbdc$us(z2ZQIDRZC$$-bg2m1=Y&<6?P*{Xj>@*^A;i1O`N&v%fpt z+;P4t4Y6hYZA{~&)lMsTz|FLScPc(6Xo#hIA$*`a6AWpqw?O@zW~4H3QWep_ z9k81(h9Uxn#nsh=y`zRv?&h1MSE!|sGkc()cjn#!~Ydx%SmQ~ zlI@{{Z(tW)_`VuAZrGy(NbCpdK=#7!sRKwp(7TWae%MIvoizT1g$A&a_b))Pe*)SM z0t&v^f7#Kj4j|b`C?E_2Dl=DEv{60+`)^~xb{5aUQA&~gJ{dA_WeQ|>VqJ5Z_gC;j_HCyx-j2A zplA6f^w>XvXZ#oNR(}A0^B3^g()S?n{}svq4Qp7!H#ot4c-IS77+qq?qTY-b0J;!ytyM?e34DyBP+p|G#96f^K?y&WK@LdnlaZ)@D9$^ftx z2>WA@yq3Rk1pmb^_d#A&0!~y=MDQRvKn^2zU{=+&ey5r5?jJOR;XYw!K1^?Uft(Nq zzFK9#!9gYpFF^IzD*fX8a|S!<;=OCP{zC76{P&+2`|s$zh;jp^d2=Ch@OF*AfyC}0j0lmCq< zSNd;cq=YKMN@XehB_r5BxUzW^OdbVfF^}(<x8z5>kBItb$5)^#}M)#YEo_@ zWE#%DmBv{Lyz(`Yh)W_hn+3z0dhria`=;qNrN8>2xyK&Fj+_*4uWO%}e1$wpP`Z)G z%-N}3hFWMlzdo050q+{JF>M4jV=zg+RtnJdZ8N!IHqi=-{cK_8NTpMgrco@FpFuEi zw?Nhe4$v#7P)%w~p4{`dFb>(|UDodV5e^D%p40(kLwEl;*s_P07N;LysdcDh)7-o7 zi>)s#_V6^Y>JKehUp-ZXyfd;kQ#EjOaK%aI)@}d93wsORN7$SOu*}sWZ$l=vdF4(~ zUbFuwAp1;3N*_R=m|U_J=@P2ms9KikQ6uP=k5KJ6yQesWTG?KjIT|1DHrnd+P9yl` zfLT=UEEpnO*X8|+&e?dN;a2_yFksl?`5bWh6dYhD_fFUR-(LpyVSn(rCTv?*0JPW2 zg4&`D^@^0mq$P_Wh}co8VKcc?BF~PD)E;7T(7B8*TWfHaVIW|VZEi>&iIP%_I(62=q;!rU#l0C@pP9{j zRkp3$Cv|lw%S{=u^?KcLX03^ayqqtWsqL%n7!-5&+UPduXc~D6n2N|uBKMZ=m7*GQ z(Nt6p*x<Dbkb;7}yQsI=E!?Ze{Mafo&sd19ye} z&-j2pa_e%y<`*jc_ALx|4P2mL1E^^UvfBdMdsFCZ?C7?#ixPZjB!zqeT&x!MO-Vmc zU<-|WaPi1ogsnfLD*Lp4@%j6Qf1~GbrubVF{=cs&)`S00s|kU-JOQ$Y1aFJ>+wBzO z8so(7vMRsqNGiH#kO#f|)8pc=j>CAlXGF&RPWb*3wx@FG2icHX`z@#~Z@VaOi2eR* zQhUzSRPNJlA`VdH3|<)5gco)6Q&0!dB5Q zug#A%mcVoZ{(LqtO%*ODOxpnWOTggZSJFkT|FHett#0O$8~9*GXFF< zm(O};OT@>wTO=(PFiH1^GGfnVkblZbv)87gVfc9W#gxPu!_zYWZ4Hc6H& z4u}*2j3xy3vLSOIswpMac|A?zlFgJ*_C?mJvq#P?6b9wB^n$f+AASMSK9He+?Ss5P z8&l5l36G%2_xshUgpoKedt5`pv7Xm;Qt&Xsl7W*>k4?A0B~P!XfWE8dsiPMp)~ zctP8j+BF0gD!6Lr9tURhpq)Q11@K#qmaDon+|cf)q@4_(5pZenyniSueJVV0_1Iq8 zxBYM6Y2L$2U=5%{&3ONs?N1a3Y^KWCR*Nm zR?VPQf^hi&!Vi|}8B`Y2ZQZ|e!6j7$zgT`r@o1dkT-GbbS6@UAH8U7|!91d>laCG8 z9zxz22D4E|;a(|MWc2Ey-){0-aO64pE`NLaQ1mLpE6T&b(VYkY0alF|52W}Bt{3_V zMkLGK#icGtNZjl-y&5RCyupdzZSfK$JB@PW;bkw|fJr^8+~^lv)Q=B8Q|OTfBq=~+ z=Q&U^BWA40Emla$i(KPpa{6kCKNlAK_Bk=KcfkQu$Qdur=p%rxW)Bw5n@VktSlk{P zXCil_)B`_1Cl-00yG3}3+Br*kX?*VTq)U3*MvSqNT0Y4&>RbwobHBxB73^5Xns+h! zxkElGW;eu0_otj!0$gCFG_X_*)+CU;^Ys1o1jY>lV`V7HhJXeUfRNpC`Cd) zL+fCVKfUQMb#u5*RWmb$*=(NmYLIU|*LbaYVK4rACb??&Yqo2Nk3U?dY*;mcyxa7e z-|9(*h;;om&tPo8i|G$$)ANHrhkKiPIrCbePp&d)3kRNFbDIwH4hiXnYBdzi!xH2c z;Y`%J=~8q;dGG8rS5fSp=^!!fQ$nqz)f94k2yStoADz?kX|cS&F1GJjn9cD1ni0;6 zZ7$jOp2vN-M;@p-#01(UHthzRL`hJ;YlmkA2E>=hDx`6kDiw;VKcmeU=-@k4eI*g0 z_9!`dvFoGha5ScjEJyIcVILi_MRB^D=?LUWE_Sd~Y15zk>I@4zET0hY{!qMksnEE?GU;~q0Jtfgx{xbN7W|*s-6BxrKr;;R;kTz0Z@~ovO`C#}-)04(u9nwU4M^Vb zx)o{hKq2SW7s;5M7n1jBgj5D@_A#J#e6gF`pm8FM6ErWHQ__{l6j0C1=z==O;_V}S zc8Dt&T>Dq}q2C8GQvNv^H?Y)Dk6VZmAuoDueMM6(-xl8c&Ugp$ZS{w>@Yu~Wb8Wnd z@p1R=-E*TgC8=K_45bCK4M&u4mJbv@Vvc28XSru|?A(zaQsH4Ie(*qQEl(m@^^VJsnjoU1;qQ zFv6{?)x|$3kKwg~l-|9N^!OgfU?0B3i+YNDe4xy*RO?#Pn0?J^S(oM2dW9kPV|FI2 z20XGyqV6$UXg)prhGUwfZMwG)a$j8(XtsP$?M3p~AIoEx{J0!mOvtS8MW{)a=#n&6VtFBd^4i_YW8bsWxR8w+e_v9`ZIja5=X*0&iAT3WC)e{ zT~0u}g2(^iX(}D;0K#Xr2(l22qz?ZpDtey#RsIt(1-cCHr_eVqwx=W-T*{s~#~E@r=FUknT&ou=c>9Ls_emN2 z29%{q?5rsh5Nk6;K8K@R9@_w85Pf6KD#CR(Yz>dC={=L zA98GwHeO}KYE?5NWfXW!B*U6X&wS#uCPd4<&zOEf&c_3P;|I-)B)ZcX=jpt|&(WFD z!+)a|D4c(pXu&Jk;SebO$m?bQBZ2pLK2Rx~-$LyddKZ4|>941WvUr72k0Z5!G-t&; z!m@4gsKRQ8JjVHS*ZZEg&s7KRU4B|8-XsiJ`i-G}=Z-=)@v>OF68BGWu6{+ZS9{er zFb*BK;R1+*5bbyo%hCS_51IguB@Ys=$x<7K;~Q^>jYZ>Os(-(_~W8Wf%SaqC{nu z|Mkw&AX?KE$H~B|i>H{3ULhenJrO%!EtS+APfHj#-F2jCh|4&EVht>5psMyCBPu=e z6Y;b%eUi$2_*ag{ z-00P}qzmV~BMeFTjl=R`B|rXS2`rU+O;n20l%DClp`;0aKel*p(j>XB-S0$Gv9a`o zp1h7?Yu2_hP5yt@^M75W-0pKc95AEj{BPL$1BI7H_ct*96GpLm5VPNL{2L2n`gM4J z``~w;F4+1XhNp7c*oi*^B^l+~{+I26(r-H9da~7sO^oKw)trum{?Gc8WuxI|*EEK^ zgdsh@F9e_f|7+inWCqqpmXc7-^A@X=QM?i-Fz1kmIX^KHDnyg=^a10@FHLLwmm!UE zYvy0!wN#E&rYGaCCL~_&VOf>VKCHf5U||jW;WPkS2C4H?DilgQIooUr-EPNj9ldrP z%7gmh0s07wz-Z*REU$y>?N0$Z2mPS!Adx6dM%o-eM)jzEBco7!?#+>v7`rGt$Z5mg z^Y->F>G4TJ1C~6KOZ87k^t}|4ig0g11-WqzyZ(r((zVOo*MCF&F6IEDL&A_i4{iK! zZ;q(_{K%;Wo;2PBk5UMz7W7~4L)Cs3A$toje?03uXf-x1^_bq`tOPC1oIoF=uHMZD zl~@Yx9|I}><(3Ak=Y#jOJAia)FH-^7tkL`u=m-1f{}?EIVSoK#fVs@)0CMslz(G7G zZ1w!^?j*&xAA5f5wezL=#Yb%_vmvqoEupn3gVmJ2HMiM`z51$wyRuyLk<;NH>$aVG zkA6{El=8Gg{bNAGop@Vn*e-k*bS?@r`Ue^>th^)SdY-v5s8BdIDGwIlO&^Yam~{BL zS@-Mr3uoBxE;BkvHdgCZ5aC#3T`%#P~tnDrB>>#e*mp>Z(+u&L0~w|MxB=d z_q4^t)_V4#^9fgUyC%f62EOTs+Gm_Z zO*4|+>Gr=a=KXQ&MtfXaBv2U2dVc18=@0u8Qx+L=!L1%`m})f)ds`9WI>1hdwHlQo z^1sVAP?+qBmrt;-bM+hRF6C0=u0LC}**y&M>^~sQ{_C4Oe~psoFvbueWhwrC{E5yx zInK4KdHc^s0S(J5D2O(vp4h}GH}4Zu6!ICiTNTLH8K7d{<`YVePCc8Tkeu-jO>-;|VSsAYoi*y$KIFHSS5LHnw4|Iq_smM-L2@&DE1 z0vut_d&dQKB!MK7b|8L#*?2H-2q_zIrqea}kPsht0`jYBxJ63d*>2>vGjVz6*?{IP zXu{UCphxn4HNWna1ZUPV`60+LZoZA3P)0)1I{f=Dn-EuE=#amyVM!E~IFc`^b z5}VDE@Lny9#N-kphq22#>0y)qfb~*Ji^`_r%yarg)jjV>T1JR4wFib18NmLugOlmt zRH-B?ca0qNaTB}}8pjBF&fbua|2!_%m+vFw z!kt-_=xz4~SRm<2%CTw73~^tbTI%=D%D>^2+4V)|0zne>3T+nTh%KhU70RHxzF+|+ zEY1L&nH7aK`T!CNdcd3dlvh8KBke+lv1RGql*mHwS&fBEWBp6f;m3+3%@UmLU%q&y zL)RuaW2M271Y+|Q5V!yChYdQ0Y?yyqu6J(XG0k;RnTudP)L94%wHf=@NtNFDIBi7d zo+>wfcX`e>qIWKa4mnBU3h8DiDIxiy8q}+D#zx*AtsZjFzJ9q561vND^2{>aYU<~h zW!5{T!r2$5W*zKi*8h}LP?x3uRn7F#+kXk@NH0^y)0_PM^v1F+oZkB ziCBRx3%G0U6v1%dQ5bEG8U?-6RkMV*e*g0s`-J#h)7JVE!tB(O

YUO{ z2EN7ip^MJiwhG<;bvDyNJndj(n~3 zp%n90g}O_(^kOc(^>@01q%xt`k<#>(<0!PdH~uqSUg=bf%o@~Cowrg(w)QZHs;X+fVLRWLir zXf#arK_CRiR<~Y(33ew<2IX&b^)NW!YQ5uIlwAiaMX&l1lUl_O0V25Gn4mGh)Rs73 z^X6M%%M?@Mre*)CXT<0B6toi`^8Is}Zqy|xAuRB$Z(|7XRT`PDsRu7Rc%>MO@_AMDFOZ%_V zW!_M_5N)y>aEpWlN=%5BdBHfZ$KuCo5h5|%H9x}<#p0I6{RHB<>IVowlslRluEfDrN;2u(&NdHky zb!YmU_iZA8r>7IZHfV(^B%r-BSH?AX3ZO`*Fprg42SUs9=oJ#bHnYk z=AhQ-1lyMu;?X;Yzlq5$_CmoT+0g{AnSgMr4|ZV*-`;S}&EkF)yVoUO0s;sJqt&r%4;GX-#XuNZJc9Q6^tRC@%F8m)9% zQk8WUFFbt)E%Uvt=+G+sY_3n$cnq~b8hD7;=w#X&Z+zS7DY6&Mx){@6uzT|zfwT5R z^Dfw5FW*pf|Mi$k)3dh;YAGgD7M%3w74I=E(L+#*Q*xAIuzExxYh&u%d^S*dyA@c*;TDiS;^iB^ji9>(i1&itcJj4oH;2B=FS~}0eX0EIyQQDMq z(rzNl-bl3L!?8f~*R1~fb@r15`wV?x!R>6^WC)bkJt#qO=4nUTTvhT(Q@fVkcH*SqQ-Oe}}71@_{w&FJWTYGD>wXb*#H z^W1iCLTLJ1wH0e7oi+$Ra@TA|Mmm+6U8qTeH`cCmw=~Xb^u%^^wdOuXcZosWkgn5( z)?Wy&abCy1MD7HO->y8GXEj*C%(A7(N^W{M9|}v0cbWw&HNOKXnKuhxWe3lMF=Hdy z*??N}GA>Ro{<^v*&HC5QHR%1w8j;u~t zZ-OxxX91~uG*2h(&Zu-_Q=eq%M9>b-^~mk#lo6uh@2t*!E~y+i79Jv*pat{L*4K9C zeAFsBd_$8KkC5XXSjoH?Iihwr=hWg`Co5a~y%J{0Zh0g3S%^!bil1Ts^)C>faXt!-16Y2VkMeY2n>NeTqsW=7 zJy-5nThOPgKkjOODewuDYY}j8oaoJNlX`Ogh$XGDGhLxUNx{Pym4u@ezo&j2F zwT8)vd|=#wh&=6PRZdLvf?Y7A&(?n*R^4)&t?Bh=%;I;@5}hv@?yjUUt>x(aqB4CzH3 zu0DguJ`o7odGU}yUA7r6d|M@8l^hfyFXD1|HEjqCVz)8jccr)HYkHzHWu&q`qnW1)wD0wa>?j_uF# zhOH#;Irl8s*^DZ}Y`|zWC*H(}Q7d63d`mLJ}mj@4dvKpuwL1@;!usHn?) zk{T6Bw#`NA4ix%w(%I->JU`mLh!mnddSQSbjeZeo=QD!+C`jhS7a+EVZ>H!Q|(Za`F%VbGeO#}(oMp5>9;E) zm0aVh&$qrjD(Rxi#;J9laiHeva$UxW%IZgEl_>^^_+kI^a_)8Q!UvE~%^TP-jKUzw z<*aX^y9&v6E)i${T7JX6o0Y#uSAUmY&}a9O#2BbeP<$bM*m7O6EO9y>$xT$UB6LC7 zHN|GSjf@9Y6mYiIcU1(ltt;~5(qAWizIVnxvlTst+Nq$V&jMkDK{KGL&=7I!L!jcE z3hBKgqUx+loiYB+jfUqA{zU^id=wQ}xaN(1L(a792RQ@_Mv2nDVf^%D@mF=iPeO?n3!UwmmE5??>vwvzz!X9&?poK8A`l{ z_uQ@TrMGj_K053)vXv$?OA5hw1|K{A`Os4x9f(S#84VZ0;{6O?@0(eQ;M|Y(S<(lErRSLW@Ige~_S`4^}WL z8IG*L8G9H9(f3^(smzHJHhOwQzU1)R^NtTRS!%pN{VrtpD!#kr>HOS9AFsj9`D0t0 zDL**s2y$(6l$65bBOK)w?rc+T&n2(g=Nx(TnkjikUx4!T)Hp8<8NUQCbzNP+VZSTk zP_3L?Nb}(}Pi^Vt6ifA*iFo!1VZFk%j-wa9ZrtX26+_;rd_BXmPURv$qo0^|i40*PaGa(B?o+Z2i>fvXdf+cqv#(i(`~?!(BpcDWPK;?FN-i^^TD2UDt!@qp_?UMhAN5V6&e^|YApDtTpO`B0- z1mtiF;nmltmGgO9dJh#&W(87^90M%aVWoOjJShckR15alpQ&?4j7q81V-Xu+rca zvZ>dY6&~7@IaY$d`!*-g3+zMrnJ|@vd*T^ZoMJY#GF)B~vB~l=;yEKky!OQ&SlGl4 z*dto)7$<=Xbt^0;sPWqv+0K~1W9U3I>7C8@>05Vou1{b*kk{p-x`-%wZhBpX5-~pYnV$5NS#LBVuOaFN zZ|u?1HF0}}wRX?bR(0*-YbtC9kp?qLVs6?{B0~vYcc!yS!*Kf{Mjh{NxzaM@V$t=i zpjPd}%|nbj#v##bo)e%yZ|mJeo%i6E6*t-+=w{H?C zZWvU1zLx0e^VPfbQzx4+u(pX;YnDaAc~kx7%lL{ucroOD4*q~gJoJ5ipC8wZ|^?mt~w$d z+pM0~6tCOpZ3CEE5+y^^#g_~v?uYB&W8THMn(hg1 zq4)P-`^*I}n~#|rrxu~x8>lTF9S$H3v_V-!QM|nqJcOo4GjC2Vg5Re{7C?SxL_e|ft)?V-0 z`&(!4Ywz#;IX`k4lQ8Eq$1|Qb?)x62IY8xdSj+y;CEw;#8xEq=xs6$8si}Uvd;c@D zv))!)%#dBF`GHtv554p}?>qnK9mjKDYWB3#hImsC7|<}FgiQBhEkiGY38J@VE~c-K z`B|V+)l2)#q$pm<&Wk_s9>+yEhq5a{n`jUNRK$pqJ!9xgPv?Zi$eQz^b49k9wmgdR ze3`rvBQ$5|h0`&wlOVyJgpGAE4KsLFE?MYctU3Qhx z&O!wEMzr9wG-^Itp_Ofw{!FoK#Bls-VM8j`Y{o!wt!E8`z`69v>;=PH~M zVr1voEzn@<*Xp?e9Of$OHtwC>-aV4Bt5|V$Sdkw8&5(K2e2ZhVhy|iZEKr(NV*r#3UtF)_Zvqs-ryNG-b z{c?lb!P|%P+mreh(+s9Ps}e*_1fP|92I{T!)r^)nSC!y72TbA7Tc!^lQGD&~ zEhwzLdh+3zyw2$5&+t95QrO6NV8V~%6Qv z<8ub_YYqg@Duvj=@4@?TbDqz&DPb+xfXYXXd~u6Ro(LK|p$9X&X~h7?##LvrrOJdp zc0{EnX58&|O$>d%qvAwR_h;m$(_KhDBC6<5@qAO{Hb{f9o#m?vZG$K~nVsR615})N zj?gLhKX*yLk3%{cN;bzX1uSTQR~9sJg=dAz5*6TA_*{+e0*#o4-HeN$aQlxqZ6`-w zoWIs86ZCxO<-GytvZuy1A8$8^XkbAPYbV{@*5Ef_P;f$24*6IQ-d`u`aIbNzcHWsY z%feEl>cVh-x7pRvOCnM{{e7FrwjWRzYrc8F=Xw;YGfJFV>2`))U1bs^!G+08C=>D2 zN3=Qt`O*=kxEi@MOH=tDXIF=TNBHVa6*OhdiNY9-&V<%ytFAx7G{)GKTWgoj>xhkP zzcPO!%lFhV$Z5 zcSp_3vuc^YOzJJpl$4!HrWJ_YW0y(QBx`Y&ntcD5{8#C)p}}1m;A3rdGI6um2Ei-; ztFI`B;e60l31E7#$U2!x3INzBNm~-9z$RtHxSAOF2U%iA#Mx{2bt`quA7muWQusCy zfs?ev;vcu>zARa&)&a;zi5&@N-U)w@sj*D|r%xDOqx^h&CGey%_;!8n>8S7gGO0h11e<%*x;Q9^uN&G3J6lD9y&0=5$y4i`_ zm#@&Nj{HG3eEY_K`TIiE9)M7$JhNZ0BL_Vgg^G}!z)4KLfS~hHD+qG|0Efz;%feZm z8J^H3;FQ&8JXZC>?&oa~b(m`<&xl7k6WqTOxC<1o{R@DAEoaX5;Y1@o%zF#ycR2vN zwI+#oCKBj!i3iqS6MxLo*Hn=O01+T6Wk3U5Y{`Hp2f(hU&~5{O(|UIfMp%a8TTj*g z){?)s>=Og9a4g?w2CnZ4K+N#pn%(#MbB|j2Ff2g(DmEGZX3#Ra)aclH=L`RK3-y6B z3OD#(81NIoyzg?Ls0r}|;yEb3{8VBm4YDRnIbO)h8d~WLr6xP+0iGGU!S>s#0MN~% zN&IK4{?}G21#XeQLJDrOKJEsd$?GuUhYO%`$|OAv3`dZBVZZM3$ph814M46^8_+Mm z{Q~G~z|0Z9ALF-~|M3{5f3w$HRri0ssOSI0Q2&RHNcblQ)L!2!w&eTY_Qe0&BmBkm zpnvMez-u@z(8(G+_3wWEm~s^0PyWSu68_oSt+oDUP0hbs_uK*WpZn?)K0gR)_iujq zFRq_540u}`jPMKah5tc=gh@QV`|$U8h5er$<1b@)3~=_pc;fcIJL~_lmxXij^}|3k zpUfKIsQ%YRiXaLy{XzC!e4BIv{6WgUm}U(A)*WO4i~rp0-vj8s@q2NE}wLrfAEB^XV%R>dHUWIA_s!B-OPWha}Ewj6l$NG7oubq*9 zn+0l)Xp|gbE*Y08){X!WJ(Fx79tGc*HG$5s0v#Hrr@B(kmuWdXbjH4DdG{fqm;_W$&34urg8L>`m!Tj^~Pllbzg_bqro6yNcha% z?{CD@OCHrNSR@>|ZGO$q!K;8LHz?%I#tvbOPHa|uGp@<|{iniBIaJ24wYlF`h|({G z++#U8#w3uaGzqi;jQA)pR`W{`gWV(mvnml(mD+}Ot15%Wl7wfMQ)l@H1p+=j=Oi5T zW};!?${-(<=%nxUx~L+rSi3>1FCL=-$N8km9PXJFxlGoCK%erg@V6%SU;4O43fR+g z7n3IuO%Ye0A0*j+6%VYo-Tlj8umF&$Oht%pLuB@oH6V@Y*aRSNrhq+w`)vxKl0#B@- z6*fdQxIPpb6L%4Fal2KJ@GX*~h>bB_^8HWhmVvK+&qyr}ERd3m$@VEkl|t z4uh}UZm$bdkK=vQz%THbE9$%-t%E|9E;FtG1CRRBglSADb@oZ5^dAP>X@VWc8d(M8 zriTc5R04*-EaQw!t1@5(LBo6(JozpU!+to`?j>5dG=Zb6ruiDk1tssB+uC*AK~h?Y z?1ckhiT*oYwz0i>6@LBn!AY6Lov7X>CaqD2wClGmqsZJ{Y(6Pe`Xi7I-E!n$LY4Gm z-J86S>u|~7D|K@>o%kudiEm5JzolaN3Q53yYInWp4}cSR_s8+(PA)4s=7slonp?f* z+9?;(;%dpbZS9jwc#=i8Sri++{7QC`Frr2?1v9(#Wol(jQg_p(s_M~>WKqSDx3xL$ za(`C22nIblOX$304M`v|ZG&&3_iWk~v)i5C+^z>2Ucc?et=XoWa~o`f+Uv``0?{;5 zlz1nmzA(b+(V42;n3`Rf^fJomY3O8)!j34w`Ch5A=?}Wn+1~EB+hERN#qs=dN1pcG z^Zb=z(d#OHFVh8{H8NBhksN;XO_CTPb^VR{081d~YK+C0@Qn%6q7RMYW1j&jx17fG zW5~88eH})6IX#lg#Px}u6py#L_MQiSf@I~x5BijGZEVHT@u}v^?(szH70|`4*6EfP zR}@p@(7(!&y@d4Jl17H>97F8iD62*L4j1EdnOtNuu3O4?Tsg=JoEzvOZ9ocNBGMad$@S4o8zearKoEvTc1M5OqzHYb+xQ z30WtPfzC24iB-4IH#ijOaLzqSmqdz<cVLWX*dqoBpWB%gtPNqE$8JrD=KKmymYp@G458spy7IJ5m{NDuhe}T-rBY&n-)n#>pnt0-F?VYk-)BOUHc7;fp`8WIii1yW*vV+cQlZS}WfL zT`zs9=WlF`DOp*6rz*Z>Z1yaS`?Ibq)4a%_LHi(gBDahE0Dr0rieHyzVJ z&vt)wBje`$)v$>4BUy6KLu`7|u|srI@7b6w@-HnB%&WgIslK*xou`P6oeax3`o*$; zwue3!=vuMW=;xNMT7G3dFoa9p@TXC7u=2N&uhb`n<-tP~(N)WEWazz=FE}J3N=%qD zXE0#SG4Z0!Eg{zpn!qogR#Upz3yQi&PK%>YvY}23)GFfsa|_Im8!}~^(ryUtPZfr5 z$PFyOofF=#d$6Nwjd2Z_hJ|;2IZ63jKGUS9QX^QAmlE}NqOSbv*Y=2)x9(!}X)xQ_^YQ{h-DPNRw?tqPb`{NPJ7vmG{fVIyRocfvJRXDFM z`T%$AOcBn$$|7j0=NIxuZ$#5VPtTE(Qug2i0xe%soF^EU5PoD{#AK;{C6b@&X01Y& zn=K{Hi~#L~1ROYP^p&a=IkkGt@A=YiI|yFU7QJt0^uro@FXYEu&S7-T5gp3`+dHV^ zY{0#uA2K=IlY(vjCc<#m!Roa9m1|TdwX=jD7KwLMQ@=qRaMcr4?V`LjSguFSHA$#U zEny=AmZ4~CQO1y2?%Mqy+-unx!auGUe@(M)XbSbZ6yntStibnml#+!Sd13MSMrz9# zQCEI2t*fx?h7~#f*YaK@FVkeZr2|-{p))P+R_QPH+6#-RH%uIO?p+O?j=8N;9F0F6 zz!h}lTDG=i^(ZFb1pI6{6H{JNy$qWT)w#NOti?e__hU4WVI_fOG@mFx+3u8=np(BP zyGy?EOF?%yY35?en1%QBfR}neh7Cb)!09~JS<&)m$s4!2d0m{s6cd-D+^+pR5iQ&# zJl-0}jLXLR!yu=8=Qf9>ReJlU#OW8pm&Et8eB3vQ<{mlHdLyhesr=HRvFYRuq>BMA_^g%O$kT*i;u{B>M&x&k z!RZShO&^*ByNa$BXvgbK4EQlM%i3(W-pEf30Ww}Qqz9=28!W3HQj7cn?D}7+bTCUi z;kOKp;dFKJTYC&}vi+Zt=&Z441<)BM(4lGNIbaWW8NNc$0GQn4(2Y71mVRxFaSxQq z+!5O39v5%{6fZm-w2)`Is9E^aiofXNnp3Fed78K^8*2Rvk*k@6>2``9-dkrM+I6x1 z1``219?Jwck0~X=VfLM-fi7Is?YZ(dg=ecP9sXxznizPT8W14`HirX1g`YiS7HWN` z1GDk~%hrAFxqAawOFR7f=qBLsI zaITLturrVQ!F$scQ}VR)+_v1dOse56HTBL$1vj3g-^xMM419R8^(;@((_vV+ZU?FW zROjp==$V>3tvpG%8@=~1&T1E_Rb=Wl;E$`9Gy%{_(d##Cj=$+YGUh-5S>1)vG$?)K zRmg_3UtoI>OC#3b9OAq<%G~SO{5Ep&Q-JDO+XR_UA5^QB$b&cc@UZg-MaZmW=_VC5 zym5Kg#n021xbjP2-y_}$w5(6OrR%reN6~}y!KH54<*e_FozzltnMm6R^M~f-w^P~v zm=!3B_LH3e3YtkR6TdoXnDmc3q32*kijxz33&9E!flJ5ptyo8iR*1a^(aY}9HG~62 zpGMEyi|*AmEan*M#+P+WhA-beV%Y)q2vFjc;T7Q!pc0Ij@N!d^sHLzWX0T?$J!nd~ z20fX)Z!NAbWS_xy=^Q|oNL!lOS~g`&KECH zOxIMB*aB#=&$5fQaAv#-flkHMo|^?BH$O)t)x^yZ5BYa`KOp70aW z#r>h0d00BLQ=8?Su{{tjJJ_4!Te$)V0HJmX>;cAgHau(DMT59JUz;}~=qTgK^yicv zL2M*MZc{Fr88d*hA0x3t;72&wrKFXpCz{#(s?cDQ_r~7 zN{M&yMa33QjWevAM@8*G94cx~P&%ufHnKOs{XAXn2M8EDJ_dMHq1G^2dKz=E2E)NxxdUyMpEN=>yYAcd*8bnBD*@h*d&PP z&SfTz^9p0WmE}QVdNXB^o@sQh()EUSpK4fXwa=Wmh6dsLuQ1VjST|)RgpwE*7B_=< zrd(v2TE@MzRgqdNi|+LS#e&MkWGjxPz!u>xAoP;~&t>aqVye?!Js=4zJp*9Q`Z9^1 z&#nbMU+CI4tJGC8Gf=v@-Yov0;)Un0hhM+qa%F#JKg*56O90SDmoC(K8*x!6b!i($ z=ggU%1FM)-ZK7)*-#nf^b&Z%)yPyA9%|TM~=NCpx_a6O(nOtrV_!2O>5d(e+?*wYT zw}Z-obvVr@e0<_b8jkX_uJ}oHxwf z@y$7N>1)_HkosoS#L)bjfxQYAx!4FoL#qL{8Z>6F-7+6ne-VqcQoYlHoqnzxUhuWwr%Y2GbZe`X>BbS`&a5;3I zp7I1K$nGH}aD_m=!9f4zy&gg~lQrFMfHJ5lAZYYflVYevl#T#x?FDsr2@$QA(m&yf zg=h678PXIGc?lB0`}Z5Cjf!Ugv1h!FiyKi=wyzRt^uxiZw#DwX*#jgyZ205lXYhOk z{d|Cgs&L16y9~fw=xaCV@nLDvSGk_BD;jnZ@)klFoY{*JioocKH=re!7mD8tvWd~x z@Fc6})-yI&E>kXwd`X;Nnp9)HbQWh6|47^?ERU5`wkJpoLyEk95d)aO!-DWNkPzghu#aZlOf?cEb> z^9>Fjk7(BG*&Q3!`8>C_&zCir)2{D+m25-qZf;Il;16&Y@pS-<7K90$=>sCrGkyx+ zVY}|GhXhd?U;Z4vT8nn2!lZ>zH>zavSk5ypLU%KaGT~BJAt34rd~d2Tx^L#nSRpz5 zs-0Y0;55bZ!}ED&3oqLux$&BVllbc_Sm`po%y;JFqWK%}r35ni_YGlQ)tk@c8&3n# zBL)_hX_p`DQVc$|3n^P&dhIdZbdDvX=Y?b8d}o7cHM)J-ZTv>!p+zj|={aX$S3n*u zs!Bu9DJu&3X_U0&nkeElFjKI2Yx z=@G?@?uf5Uu2XzVh-@ry^*ZRH8qrCz5{dxc>HHRdQRFwv%{*>s->B7Cp{)wJbjrER zw+!n!v6JSJQ*9Zz2HpFJYLweLLnoXa!dG;fOaR>=u(ouj12}7k150?eOQW~sEkNfse2W?T-cX9qcR~j{}l2G9AR1|i^{Uk#OEyf3%LO+#wh+|H+Uoy7ZA_7D_^k`dY|Iup-O zQ@M`=AKqDcWgG2uah&ZH|8pzyL=Dj?9H2e>do#JbpeH!@-)(=Z43v1LZ)hRM@KUWHt zZGu+LY`x1N0r;<0Q`92UcVPAX1Q;!{4$;i$e+F&N50drx8L3*uo1 zitlX>4VLA=Qri~_1|m=P@^Tp6My~MsfwXa2uX7q6Z`J+0W&iW#?|V}OV`sYOpq!BM z87np^a}Af#)Ul|MH!jbZ`ZszM?4J8!?o}mF5~aohczn)^Y@kq;-V|+**9W?7XekAn zRx2{4r*zE}EEBH447ffE-zx$Ha&muK2>R#yyKnfHb3*A;JPMtT(;Gc3e_B}S;(Wd9 zRKBT^-zBu%p{RkW#4ORpC*=QtsNJ6uFC2f_9^$*y_Pocn&G+q9BM$pl^3u$G{;I!w z@ozo_MB4x6Q;u9dcYrdy*D($WvSTPZ&quwB#624x90k(bMkcGmi)R)_Hq3a?8RIKfWH0d-ZFoE2%ndJyO72Tf@FZ~^wH+g z!hP^Gn>_P;NAvqjP4i`@pa}0v%C=Z!;|iW(Sv`cpw`|MDn01EHLfu1#P?#`e82#3U zORk18_TxTy!lQyWt?C4Z|E^J~h-_MeuV_`aD!sLD3>$lEt-EepsEM;{0S^|&0u)s{&Ut9ZcCjYmw zb3VtnJb?RqfT>+6C{9RfaqG4D=&k8b{bgdMy{?>%JI}p_u1+fh)gwd1j08TzCtdAq z9jkwZ2PXJ%sqQB~e@?d`w?dXEI*r@@_u4@w94-6y^}1%@J9T>Li0m_xhw*bl?i?c*dIiBgIN)uZ$z#@_QRHjF55k zOGh8k{U63?{*LCyEo*Wj2eim3(=~N!H%mO-RV?4aOy}1K20^N^SPE_4hYTu5ugWaW z?rG_BR_6s>c6!Dsj1x=Lv~TuIyo|V}>_(PqDBUI0G4orcstQ0zffD$!zfMK;I|qD> zK?o8BR;KaTnAx&RrSjRBy1;ANum)P@kRt7##Mg92n8lrK%yEyR?sSZU>}rjr%!QHK zUvHbyYmp@Vr@K=z%d>&u2-L z$~iNk%(lWn#gBxjnZ`Tr3P{iElxrMI4~cpyrH%2!J z-=%gz`?NKU)WT47RjLa)GD6w|L7Cl|bJS%<0?;ga7g;S?C7KF+SbLdbw-A?nWssGg zu`=wu1NTR2+}Xd|UHdQh_^wnpv;%i=zu<(R{Ncr8c%vZxhJBp)ZE^nKCXL$XwC^?~ zLxV$&W%&TKdbzXe(=5dMM4WR`KiuT%+4{|Ot=io`$RLU#3~s5LZGV}`{yq)s0UhgT zP2SGGGUD&$Ubj z7AvYw@Vv(VWAOg_N-lG03;2o;SbhWkvFQF~l#^j{6AXPb8-o8JD;6Ve4+Zf75sxFb zvschH(eWUevkHP90`2kP4>Hdm=hxviFuA`*L8`Z)&x8X$53Y(zI+ zwod-XPl|Re^!5H({r80hj-?@i{+@s*7!dw_%(>8ng(dt!<{ATI!|#2`EQyeTQK|cv zKwfVGd|(||JzAbEWdzoo@h~h}rJc6sj&e}k%m}9gTAmwT&kd~`hzhvlTV(aK$IGL{ zQU;^X)B7yTr%sbQPT*Q7dAK@Ps~4179En5@JpKILSl z<@*J$@FZ8B6+)LbpM~-Ma%q4S5LO&2KTU$_$NbEi_`o9`y%Bk!rJ$vNjrgE zwCYj=w=}DuPac#9$y%thF7L;lqT1UB#M4Am(kjB*yp#hLMRVkn?$_siB_W=im`rvm zl4e`ed!jrCX4>uK-|osrqSt2Plc9|sf}t{rC%k%l!e~f>Px==HgkQq4L%#$Pu>|dQ zkNBWnZPI}$h$6My`|_O6zIEybjtamrb+tO2NU zIP=@$6oT$mpVp+Vjo_$#y1%6_5IE~>!Ajt~r=d>z7X!{?7I0apDuboz0A;bm6V7oH z(lFDgfcWKJTZZWWHvPYUkrnUiiJzIPbFC-co&)L^s$J4Q6qnEk=)6tEQQ&x&! z=KEb+cP>Kt+BE7Vxy%3hL25OH5g+YS8t@oTZj5guo-p%ko>`@XnNjCF6-Nx98B6 z5GC%$F1}95-2TqiJ0Yvu6MA0F+56;n51Vw%&7ob55eKp;SVAuQ z5#ootb|-cgYmQHz>oXAW=*&EgcJ`jGdobQ|am@5Nwdu;wNJ98I1z2^&fPUo9J7@Kk zuI;)oe8oMCy?}*-G@Y4%dcEMdT{!Ytkp3gqtOi z#fvgpz4XwSBH#3Akkj5=N;jum*bMPYSi3&Z#Mfyy@|?n{KMoy--wD=qlS=d;4kJW!pOD@8^bu+BH!Ok)#Wb+sp6- zUjD|2$99mN`fLp(v*%W8)^)nDbJw`hf)VUp%Er3N4$@6^9fz7#^eWxzL#S6tX<0)h zf{vwC7T(*9JH%eRb?G)AHQZH&5(Vl5(OYe%lT`3fJJvjZo01^`L$C;8%`{WMPLt-0 z=-C&5UFJh_t!N}*99F!uFyZ=47T`rpqPo9LnSS07-S#FE7i2y2_V??$GT=3r^K92N zFTx8^V)kC9_tX0CDvZ8#J}nMjMsprmP5$KaS7OfrN9mClI?_n%L28KWG+I3-4xNHis~1!oMHI zIZt#S>z&#auALwMC^bJqAy8;_QOTiO`dm0oU!ZU`5lHkA621keSC*{Y{CQ)BcSUE+ zOH93}W@0|D)!ZL%(-gg=>lSZ5WdDtkCb*3qw#m7Tis(_0$qMw-eKxMcH9R%(GE-c*2o3@JeH07N*9a<(!-Z*_)4l=Z}m&1OBW}YGY%xdp3FV#>Oy3qJKXc1 zO{vI$Qu&zii?~6o13ETGur;BVjdTOkw-}Z6Xu@tHL#Dz+J($2ea64ACzNF?&O223$ zUJ_eCqNYUU&Q|oNv;E|s<}yh>=)ue>ndsmM9M!wzR%j+2BodDhUNAIW>GamvLrP8FP{CN_B6^-&K~`H4=8o?t(N#znY! zX#a<}59CA%mx*_cJENSnX;z;YldL?m7iKZ3B6q$T2I@1P<$J|xKENB4I-42c@{0Aj z)0W+2+Mo@V;+sz|*YJLdXUB2lVA-AW7DRhKMu#aPPx)5bw4ZEzipPbb_PbqgZXMrB zp;9%}-#sk_iNCS-=Zbk*@+OZ0#!sGF^7c8abyf*~Zjm38`a?zNW=BA?n!07>iC5<-Z+SREs*PZ*jcvxS@vTXSM%HXU$q45*kJ;(6D-ROxmO z$$Vq(F0F1L7?b;K(ukXas$Q2Z4k5Bthe+8*p-An~c5A9VLIsB&2zrAI3sF za|YlThA^T7K{cqG#0BV^vjUBKMi|gTK zXT~{Hyzh&1@z?J47;^P@l?g`0 z>DieYne%h7WCN8nN=Vdn%ZM-%f9{h6?T*PtNYI}4WHs7#+2mW5Lez5FC2=7k{$}=7 z0ZFpeCsQ5dnn$@>f`)x8sTqDS4{I7o3Cg%19+F!pn?k&grBA6M-c185i0>_h?%>i^ z9)A!Sc|PAO;Ovnc^itaTDkOJBz8@5t%MoDt!m0WmD$d3*U2Ouu%R?k_o*9C#15&O= z4)fw5}Ofb15xo#e*??qO9vwNAH- z+EgLCFFiQ;;{PgH_llvSDBxw;YToE4fH^qfj(|!G*|!Y6ydCk7)vr3jGre}M>&myL zZdfxgP#O*09m)-QZP_MM29raNS&VxwqfoW=4jO3nO}fyj7nZKZA0QQ&kAy!A8Wj z8`)H-p=c~MPCN+;Y0QpRf=aI|b;>b?pT8{|ahB`fw@aUlZbxq8`6^@#)J@mI{zJL& zzm^XF@4V*||Cd~It2XR0pfCKLm@C_t4cKe{BYo+>^8KyA=v?m>F(2R;pd%#cjMmr; z_`ixzwpA~50x;sCkr7iW0|p~yc$VX@7Hfi)3$KPqUrh|D8u4&blKE^m!2 zAl5CUvNPr)y2@)h5W*8s2MM0Vpvgw-dQfbGF4gt%s~wGvoR%?NP@fCaQ(Ak%PV9=k zY$D{bpDCjW3fdeb$y4K%fe@%mTW%y@V+D~JL&_`Wqfxghy`PkEt~1MUVl~R{xpZo* zyX|9RvCp4ZSWbD?KvimGuA_NxV;eK}pfvRE4Hx+ijwB9XuX_Au`r*{=24$uQf0r!p z%KdZw{%7EM=(5yw!UB~(lAmwq6jrl+$Nizy&(zgLOolTlh6LpVElW+Eu@OnKR^uu? z1jVwGKgfWJJIZ)zZ2AgiL;w$EPaN-YZ>vgpfzr03MlR%*eRI4P&o%ek?Y<_zMEZQ* zY+9!%vh7F{AQ12M7dp0Cc_qI>yKmA#eaMhnXee8--uyMuBQITd3rZ!0z?O>WuJ^2_nvAZ>+K|taXSSm^v6yx_VGwnps9r)h_qXfN9s+)!F5POI7`X|8BS!|h;mO}(Ic{m=mSs;+WV z)43mx*ClphijwK%bPQq!Z4cb8?AT(}X@$cpVXU!BlbwJB!=*Ct#;o2Bwj&?{0GkPim>5>5|6Xr1ME6P4VrK*9r!wI&+O z`&ydi>=hEFwW@@)p5Gg0?t?7$A;K3M9QqgMY&7r(82fSm+>7F{BHb4iPBU6!LKBSC z^BF!5*%ME=Sd}kJfsc$=B+&ertffOg_2YgOHNA;+lXe{%X>Yc*v?pIqT5oKPemB+z z6Yd8nHeu;Xf-8^CuF2{&PlNqgawJ9jS6Lf=Qx^SnqRc>McenCz zEU3vLpjqQ}9<4yR*=3(+V~aqb@(W13lOt#lbfsMv14pF;P8LI=oyzLV{8e1c5V2-biV?Hr*O%T5AO@VC%L>sTm|cq-2!-+B7_@zeUrYg1fL z48S%8F}f+62scw*GebQe4Zh zI&n)B{H{WBv9R|@QRpMZPL5FGVQ@ur+tVM05Uv=LXQA@Teb#tgRpaKVs;r5c?KydY8L(G8p zY1q-1Hf!O>6QFwAW(MZUs;g8qWLx*;AZzV2D2W{yL38ueK6|-JzQ?b>$<@K3!UWio{NZf7(X4?dDcF`)S!maHk9t&}FN@m|#xA8}?vZX&ow zrsGo9#g88wlO?|SrZD=(>grit5HtS%UbmlhY{Q(&^@IMzN~DXtUQOH0gprflAS(sR zwpY@c^=hYaYRm57)^$z&9elW{@2Ub2LN_vQYC5iR+oy>nl6)jkm#g1aFNy5CqWa?1 zFR#xy-OhRq^k!iW*~(VIS7H*Xz`LbYTJ*>B(_i zWZ83PAQAi-3}nxMY(pInz^EX5O9OG{Jvn^iMHf$p>{Hm-qaXJs-irVNO&c03ZNj@V zp#kD}LBg}ypgA_a%MEel$2#Kzis%j^R+sIEaJWg$%dd|RGT(a1`^L!SUR?-^`$?LB z)5=T~)2a2D$$;jZ<4Pi0V*|@9mLEaozfmnQ{%nae#&zStMFD1?@i$sKvcGls^Gw$E z&_=FJiSZwBf0MUUebTQEa*P73cmPGE?`+!8)q@7m4n2!xodOW+ds7WDSt|T`@w;M%>M8mm3)PR3 zACAlRzA5^u9@=Iba__Br&}R^u3KP-yldcu}w3QT5>L`~Sx!&r8N=Dw4y3G^ALYI7- ziZa)4w_Olxt%HpZri={W2y`ghOd-G4Qg4^cN;B~FtJVtpO7Ttq2l64MzUkdiYDn4& zt`?tx6$i4w(Fysh@M|~vvN^V8j_3#^e^Pl$l}h0w5-7SOm*}dnZ7mH#vn>f49|UL@ z-G~xS8fv-MAQnGsLY%*Zp!cJgZkI6%toN{jq4swl7@pDV&dg>bi;%5^0?Br0`uOv%iFm^P&lc?GI@ob&y<<-$)S zM)%KsPZ=*mZ3?^Dy)o7mcJqQh*}B@Sz+WZOqyWnW(sh=oVR5mY*D!Krc9kYdSIlGX zu$ml87_?|}@TR8t5*|Rf9${mx>0v~*qI)PR?5|D4tC-hwwZ@FBbb}n+Z=%O#^8_Jn z1&&MWH_Fs2q&Gj4ZQc{`+cP9j*3?a%{*&O_rq6 zAYkiqu|6wiJ5ayhkFGt_ofue{o&-P|vj@MzC)$1iVVEl&`3$9#s;vVAP?gflnIRBn z+M4oP7#NkbB1XH}G{FT1=lQaw-Wr}_X?pR&>ng7(13(RFWaxoj3efx>#5}(>-4t{U zdtt0Gy!+>aWR&zT<*vd6?_c*LUwKSM2aQoqmMri&zFjZt6GqHs;_H?{XfI$iVZGay zRFob~dIs9`44-e3%PfK=T?<)%6>ZdW*{D(OT#sL{8Jr2^Bxb%`5=XqY9H_4ij^Shd z*_hdcZ4Gw!eB3J9uZOB;Y2jfo&{SlbEH}@}!(B8Vk8LXQ1rdcZfeb%?Qp1imLCexp z@L6IU@3>Iz?3BLgu%AKNAq+S07zqw|~2lJW`Sy8fJlzK+fX#ncQ6V ztpP%AI&cKYV2e7US#Zz~d0zCWq{J#bxio{h>uGeG)PI&${ih(xjx|+3^pENPmncfX z?;1@`KaL6}Cz5=)pZqDd^5E+Sp>t8AHUo=I)_rvT*7nJk!jCO^$4szv4YhQ6ffT%f z+q3O-nEO4(cuKMCsniO5gmq)CX>Cg~WO|K#2eG?s5<_|2lLl@rnVl=Q5t3lv#}z z_04D;rS5JsxPQc@$=>I8D9om-fpb)xU&LreHzY(Xa(40&wJ>usW;t0XF7~99U-t2+ zd)$#8lPoq#)(e-E-mBg=A%}93^Z+A>tK<`xn_ZeK>u3_NW))G?ZeR zM_kLTiXXj{Q4o@G|IjGe2Q_)Oo{8$y6ZeTs>wR;NrB}lJb;yIHhph^bawBio8G(%z0shk@F7pEd0@x9UD+Wq*d z`Ean>sO6c1>oVxa3eFJ27U`vb1+TQc8(iYd*=soWbCmA=i{j|lk0K%cGs0^Wp+8IU zJ~*MXBxSzkxy4Hmo8``6yW%bR+dnPM`)s3A^xfuA-t4RW^CfmFqUp6~<+2@SKM7CA z+vTcWE>^lf7!M4&HI}k*Hm5t5k2LebXa!T=N|xfuv0f z?`(o%0M*!``69hjC-cPh+DY%2(swjb?RD?P=2KM|+@^lX@zoDRiQ6`gJ7C5&%eIEW zLfMyEFUp&D;H6X-6HC<+DW2K45VRq~&&C=$gu4})gzEBUEpgL|xw7%HMyy1O$(@Zm>@@iAa%{;B?3&`uu1DTTZ+6h@IV4)tI zKc1rqAGFuq3Jvr8Q9pOA?I!k)rq(!?`0fv~RzE-EQDaa;XTh721t(7L?5hxTag#YV zxqFvgC;evK^ZPw~kTcP0%pzJ-9``;I6n$9Z#M4oj91|rlC$L9-QSfo;GkSe4lUxI% zuWghK*~bp;eHi^^T2(P?UiIY;Ww1_MQwZbQy4(Ev47WqINNzZZB7ha+6A1(gB`{54 zhi9Ot!%1GWBFSYbd(VUW{exp?J~%?Tlu!bT$m)6>MfIGb+0%e%_B z1EoGO?}FCL$M1Ib70d!0kOvx)*P~MPi(b4t3gfKa0e(8)UKffu}O>Ct(Hk|3kbItpgMs>8v|71}9 zW>Nn4U;kh0Ft$4-f6QAKr(9?r&iE00sAi=DuwsjW1Psa%YoPv)MHJ(8peXU+A7p8N z>M{nU-fUWkQ|)>g^yz){HA+aE!v$d8Ku8m)$nP!_y{vKv$R3}|Pm^q#MQqQDQ!qW{ z>1Cdo?%*OZS~?y@2H6n72MJ4F(#j6g zyRW_daRxZRc1sjM5sW~HEy0$MEh-t-@CfTCii9q6e}}IxKt-M`qiKO85f_N1IDH_w zLj8-`98nzvK;Ee71O<5EnF-Q(@0ngWYjs$xV%V3)hIoY>-;(zsbA}2%($C5DE|RUz zL^|_f9!vayJ(_M;${#{qNYlS^&-Kj<0q^m44bc`_1L%@V@cDGQw+K1#GSn0-r1UA zr=8_@F<5Ug+vtbwDm4bqOX`6)(5HGWXIVaZ^j%rA5}YH^Hs$ujc4AYmM)jlE0Fp}g zi<=ewrG@A-8;m;|jWI{T(3ZudQETd|i!knKAZz^x5lv((c{bklv8NUUEt6 z0;f-o8=%QjL>1)r;Ae#oO%GjXXX_6;PXpKc)dYsHpHq59+mz(}D|W{Th_&1vYm7ES zR3{5|J*;7_{5)flkbS+SN#0_METM|*d!lb^YGQ{t9pTDB|S)yMAdKYGex0; zx0{`APM8NE9BvKnkI+s%lv$WA-^GEXIt7TV_zA53lKVTcfEPj$r2+RaYk4m!EYhFp zO0A)0>#kozev90KDCw)H2LPEVY;Yhv@DD#Oc)U|oKd@+^XcJkTUS8D)S(2Vjb|W11pTRLPdQ$eb*`hVci0FD0j3!B z-8if$N-wJzA0(!v-Z@@{zSUFpYpAVVp4at<-Q&u)WMpE=y{n$EA~+ZtirnjkF+hC! zR4G3P>i6<8&fJm(n;X1Y6&O>K%9x<-7P8?*=R8+3PrSDV*EH|RRPzdk0xP?wjO6qM zP?+$=g|G2)nGu2+2aOHI2vjb$mE!?xO}ar{G806M=HWZO)>jYLOO;nbtpO1cW>-HB z2(X6l9=bDvB5rZ^=zOo=W|r|}do00ehl)2d?fSz|V<@FLXoGIqwfh!>WilH) z*~1q>BGrDzIglotG>~U^5g9EJV|?0}`tAbB4Mn3B z<_(>z?|Ut+&np-fz3KO#*;*v>w}OZSiC=ow^o~Fvd!Y8|zEo$E-t;714zaQi=H*wV z=B2}`w2g|I#mvg=r#T1h9$a(dM<~_&KkU7CSW{cKFN}gBMUbl0s5F(PAkvA7bO8|r zsZr^KB0bbdm)-=VMx>(<>77Uyr1u^=NKL2#lK3t6e)qfg+3z{`ocn$EyU)GPbN=9Y zl10{9bB;O2oO6u%8^1A>rq`7rO$e|T)0`M<2FMcyIa4`H=6&>Cy#iIZOGC6?>?SHz z2YHY1^-LE9?9n8g%D7x)36@E~7l7wE256NTeHp#(RWg>uB()~vK3SiVP1BxFr?YiQ zmwP#XI3&0r+T&SSC1R3VX_jHWM~T>Z?e6v!DK`e5L%=V4t1TF7E7jEZZ|+NKw>Byk zk*5+qiNgGRpS`yu5fE&;{!rEL4gXOVk*)|t^oa+?5`~HU0ovO}0A5yC+d-IYG7d2Z z8Q0V;!6_8ts9ITd6JEN0vhn2T8CO@_cpAKZkyppLZi}*x>Q+qthv=u!{gW2W!TnV8 zFN1;~%c>qP+_>_y%pr^SdI&IqClnn+P} zdfx<=*E+DyIvVU^SR~zAX<&Hsy%FM%l)nF&e5 zE*2PhG}e8r>Mfn9NZhDHnM4|N>;d*}NTfhxvlh@>*DSF|ZF(t>I-aoV)CPUlbH9|6 z(4IB{wrpm&E>3p-hI86VxeUOmM0SWP$=N{DFC>>gn2%W1r`mxU%lZ_kQp_ ze(JT3cUQ!sy9WPJE6iP~mld!~VW8N1{!f9 z3@IzRi8+i=x-IBAZp50Y@-(>9P#fJWb;agVi#AHYMQ;QVgrI=WWi;|&XoF-7=hYQ2 zN)}hhl0WI+JV+R}U-b%Xi0MqWGvhS6y2LzbwEd&a$7>Oo!t+$Hw9Px@cv(zORPw7v z_7NAaA9~-Y7&`J~Ebf00o_$@-(ousPK;RVj9gdF-dW?82+(V6nhFG z#L8W_fs~tNNDM6vgamKbtL5R6kwy|DFQ6C5z^0)OH+R$CIM=^mX49}aEIXy=&BEwv zh9n-IsII%q@zjn96&tXBF6ndG+p?H^UOD(-$@DtPm^|dJ@bO%EKugM%jk81@C%J`_ z5#eRay$*L^EL*S@d51c4)>7Tfm2uT07F7CDv6Fr+>}+g4VG*2eYpGtca{()1#UzXx)V zbiRS1p8r@I1#D#c@LvoN7CX*LQ6a*D>Cuc)5{nAK*MhXl%~t)kJ#vu1svGDa5BU82 z$4{eatV};s!YNHUlL(mrug72aLf}6(MY8dm ze|+HV3^|OD7H!K%S_6V|eh9>pT=DsT`FQvk{A*t*sNkiE=SsPZKSeGpdrM|!#N5E& z_{aZ*bzMfL76c{WL%IMVjk+h01I=Y{^#>(UEY;(qbz;(?=u~rIvq=_V=ozb>=&koS zRY9JbRmk6~RXyIjA51~12>PW(o8v7rgg zQKjQoIcJf@FTKzrzYX4PcEldRT5jyJ!`{i5oXeJjEU-^+jK)2MTS9$f;b==df5JBT z{i92z?_RTLlHHzLseiS1=taml;BY6>rz?FuVVq3d0)iG^7arF&I9Ev`m5F^o9pBs9#-n z(TKV7c%#I6K>cEM=P>{dtxYsQiQ0CJ) zzNQ8xjgZIH1HN7as*3K$TUX zlu^?am&DR?4+Ni~A2tw7zn4 zN_@5=lH#w1Nou)#F3-6T({n8jED-lme5UqxcG@|vB2UeKc0LJcHvoT!903Url;mzs zi6F{GHtXAhjp@0cuX@~1hy{}16CbB7&BbYWuBMH;6<`eKH7e}P?R;|aDYn86cFR57 z=GSAE<8M8<1?2r2qyPEjUt>4;yR6UNDW@gHxwkmmsOO!(WMj>!I3*D#u@Iribot9w z=N%oF=pgjPeX2EALB7XPEJb5x_McmWZg3rdzuqzarC2{n9{(l=#Ka^z`}d~0zi?y* z;_SZ61~zWB6&deJ)Ge1iUYflQY$JXyU4@Dq3Q#az4sWFL=EnAgGPKR!8sw@SW_TgO zY)*fn_la`h!)ooJ*FZut*kEfJj#k3o1piamZ)VlrYn{FERqGA;hde^D5RmhA@b7E7 z6sV$w2q(Dw56$7ffAr@6Y!L{d|D*AhpS!L~adKcr-SXP74tf?KoAFaD2C%X=oPK!@eB|dPvB&XSFIRIZADTU z{y0$&Wgc~Gp(B2;hxT-ZHy;Ou#Ynj#$F7bWy~;RS!dpK%p-W$+@+?i5FUv9k!ri1- zaBIXmkN5M$vE`{OfIt*ange%0X~Rw1lME_TKPnX}y z_dM^SuDN^s8I{ zTmE!;KLG{6+#m;2C#+L{f>`gKS%Uwk+X5G4Annio|G|mNzfjvfOd>Dx)rU99gXglI z_;xz!dkf;sU(z%z5==mH61=vC&%eU<@;YQ^v^7HKC) z7u>rRZr?B))bS5TWG`lcMv84pb1T#PX{{fI(miGE(MZ zL7RK=53FI=khQ61xmj$UG3tgMhlumkECYH;TVoP5=0`0x5HN^}*f|StQUu%WP(WZK zcabb;{CzBU2InYpbF@{#Bd>#}{8U%pj{1(#^ZGmSZ>MiNiH5cJ|0JHi;kt>kHZ-h*MnHW4lyI4`>UrfAfL%cS$ z&jD6WFIu>5uwJI=aYF<(kpqAgBGdh@#oUFCr7YgnWb$pzpv7L^;znS!AvB$Zc!jYF zxB9^sjg`&?5bLMy!Gp5*?$ah7FD|{%IhfPom-U3=sEMf9I34;{d43Xkng`^W=hFiq zoto`HjhLfF_cucI>K~rtj#@$FnHWC*eKvH6FJoP#kdW)A@b^tHdxJ-@#b)GmrJv4< z_NXr+C%q1LM{S7$c;}=AUgUggbnxU@P#oxDiv#WW_&St)^5Z)ZmJ8>4&u`yKJS4A} zAiSKiG4R>nGZ>#%x?8zbYNkXz5Z`;{tQ!I;=1vZb41~`6F>VaQw*bU#)P?6Y+c+Rf z*y1`YSIejhV<+S1QK^_`UPytCy>l~PUIcwz9c@@Wj3#7(ZD=P>JJ1Y3GS;WX#JXHq z>U>c~%q;m3Z+U2HTbZ$)waGI&5ZJ3ky(IPvWdbH|TGG{W|Iqi2H=nT!&bVGJ_oA}N zMVTp|La>DK7J6x`*Sn{Fs~t!ox>xsjt=2w7gZe>~G zL`Z*Un-LChrp}QACi7;4IpaFkwJ$1Vo4C=!dA)I@Jk&DGdjC`E)pm+&m1?d~d4`v6 zU0e0+5&cPZj!uW*vMB;k62w%$LhbF=$dpa;^BWdT5-c4OWQ&u9*0WdpUA+=329Ymo z5+w$8pQqiS>r5|tqj@ok){_VmE`nQ+qs-yKjY7D9MLVw!15~)nDps(kg~|}NWi&~0 zE$aH4E%~dGeCZvH{Ojk3WkDOQFbAxq>ZDt2CwL&}lH)oyB zncqr`4>29g^ViN{DG+qnEjbkqNOS+(z@n_JMCKa;8jR-Ix=yg(t%+%3*F0ArFTx1&hC4Mn}dc=ndG*d41WCrzEKW8xl&y5Z@=ezB{2*&UW0cWMgm)i?4Kk97GL<`3zzY5 zEA+vnCV?4xwz^a9@eonYTO;}~xr~6otIeH4p=uj!4H_J(Q(C9;JVj-<_P5Kbm6bvMbX8|NsBPupj;N>v`RcXT0qiOG5*!y`7Dl+O`92D~3=W9d zT-eMIX^2-UL5=RLSYK@2@R3$}-&OEnIlp&R!uEw;cv#=-YENSOC-;3kEu!5~h?Xi8 zX45m{TA7hiix_&y+|i>!awLiD=$oi&g9AZ>RtW9}xOLnc{zGS9d-gnBr#6QPc4bw|EsLo9pPVpp^ zb@$YhCez#w7;T6E_z+X_6z|zp6sOt~?pi)}PJ!rV+;Vh`Ff=GKPA@-3WX+u;ZMepx zGiND=U-br#^Zj$ZZ7WlO1J&jc%y7mn=bW|ZqID4#))jp*6YBhDGG9uT7^)*@&Uwm3 zo~jZD!54|VcrV-*Hbk$&ffh#de7^^*#?WQQm0}h&M;KJ73EyE$m7G>4WslA&Xddr+ z`nteuE4Q|;JfYEcF0TzH*`!KQF{WPLn73oK%DJD7^u$wRLhwxJ_M=92aT5VdTV&)x z`fQcCYoi5F-!AdtwqR!agLg4Gnp_oLc}<{5PH`;lR=|gKDa2cQ(;*oj%%SilrH?by zH_QBqD%a1vI45sPw&di|ny;;v%%YC#jr`WdGU;Zv#2qa>Cn_w}evC!a3qTFZ|1IqbzIn^EaTz9g0r_0dGEs{o&hHi?IWCf+($VwbR zfP96C14lrL;I;X5k-ioKj^Oxwn=**ex2kVq5)m0jj)hDDfiIT)v?J&1Etn*AR7dTP z)>8CNXMVBG zF>XPDvy&b#!mhm9SB#M^~0*mS#oJv@6qT(molLhq2rGk!W zCh}JFG3#gWMmT)!VIJtUp6Wje)BjoMmVXU(77xbkc{6JUPA1GEXiy7NlCFWlubL0+x!680 z%9lr$Dt=a;mb5t~CsG2-2iZ>&pfoVzt@^1hv3JsORM=i{koMAAiD_@m^I-agOTK%B znD4`5^R9i72jRw!f)&yi?a_vB3I*u(r>U~du27HMQp8)z*HN{o_kJk<`+VyPa8WcygBHiP)28_r%v_F` zG(7YhSOtKlAu`}=^#kQ~BUA2P9uXAF@?F<0Z?VOBY(a)7xZ~6vU#%-@*FUi3bsVfo z7i}`39uQMG=wVPUDQ&3fOO;{9b_gUB_ip(+9~8nb;h)Y@VeaKER7^BBpHJ|f-kkZ$ zR_Xs*g+meS7=|{IjUVQkBY!xkb4&jHV%hQ)jefe?xft`TAUZ`M}jy1XB zRT3)F{sUy#{?26h0&kIZKJ+$ktljxgDA`^Umw2+9$-~Gcc1#}2Qy{5$t)mUeiiYJw zIXP-8N~^GJ(^NNI?>Urq*yY{mq|El-tuaj_45UCEK}PFxbeP-<`1yj*)^15jx~O%F z48}O+Q~c*H<<BTNn6k-yBVi(MUK(||u zs2I5H?VV`(qC_8VlFxYN1=R}|n>6Kbc$()dw`F$I_faZiGf-T&xt)J#rndNUR$o55 zs#y`gWs8(sdlIVe=zk2lbL9$Oj(0eyy)Qf^xPm!>VeRlX+GKXpV7iz612YI#)h%Z& zO#&lH!ET@?FSk2EV_}Otfa$&z*I5Y8pQi zpzH>|4}cE$v;C#D>@I~dO|aS;=c8swuaJ)G#92?e4Ef|5T4mgSK>dVacYl>-QN~lR z#T{G@ZkOJo0n(J1SzVZO4{R5M%6PuYJ&%1abU+*RUOUYhqP7O2Pu0PRpcwHv845#7 z^;UD#OtWI#h1)GOijquEx7oY*4I3B~hCe`!6}u=FV~^?CS%N>P&%nhmF?^K)`4WG|l!&1pF9Je9NXsdh={$@Fro z2+Zzg8T)P|O0#4d|F!88p5~l4U8c7s?z@?g?V#F4Rc&}-*XhWSg2O8&dZXX0(udEKv1Uz6YWwJ8sl;n$ot-%V_GL_Z@nU1Rf+Jle< zjdb(8AD>VvVDtlChM>y1_Z z5@+B-lT?APimvu9pl{0hZK-y5pLB)c9OlW}(40T2SS`{QFUo5U+g1qbJt?(|XkMS5 zN^-dK{oYw>(<^gyok(>;mW*D3m6Tj$fmM=F$#nX3qyM6R`yr?}k1!QMrcsP&a*X_r}h{h|*dAwnwTJdP2T>|@U`eT&Fe5DUz? zwQPOTMQhf2^2M;gEYBocx8jQ+_dC+62a8-4l7d}O9Unh`sX@J!qfKjIa%kkjzB{pu z5L1g(R990~SB@?(YQ0nAlzp3$TA0|b{1rLKS>M0-3c#}!{AX$1q|4}NfF|b)5It4L zZ+vU~3)Rk;uN?fFNyonu4Hx6^H;gq)w7182ihpqtcM$7LAB>tnq*s(3zs$CTYGuGFVZKUB>NGv z7m;WBVrvV6OqgqA!CgF+fjKW!907q$D^FKcxS5EW<6X^Utzz(~%JMcpn@V(Y!UOw* z9i9KwTO$4Ddkas8)5fA6g}1<&%h|w}oWi# z?#`v|DKX6NoP`PBAFBW};k-1fDu!JXBhb^WZ)95@)-ia|s63mq{IF1i4nvd4(c>Kk zul5rKaK0U__Y&idF>PLyT_v6V;zDz;Un>L2vbvGjfWrbD(;S)}C<`Zrz;oZWxec5A zNuoYjEYQiU$LjWxnVDY5ELQbfch>~j89$?*qph4%l{E-i;^}j2dxE=9{`wA6a7A8^ z9XDMEQ*wr~1CNzVw$tK~Rcw+&t;b4L_KYMSxkYW!MIJ@^@W41nui}tRj=s(0Q?c)# ztWxmAi-YITAzWb`_Z-TuSJXaqX3gw4Lp#F}t-5vK;18m3oe?z|aE+#YZfpq4991{C zc}>@_;~6FE6Q%Bl`6L-ICY*S&?a9&T&w!vSKx_zaBATI9?bc$69Z$mdE3#qrl;~Z6yvX)E-O-O^A7;b zVtaELB?UOI=fm}P^3*-%6?6txyj+FNVi#>%$GiOe-q7$b^)UcpuFfK$Ry5fxDb}E( zy&`Ycc-E$5{M_a9v-E4aEaclQ_e5wVkb>oeyvDn;-VX+@){R^*&v5TwRHxnikctyt z)UBO6<|3_UDGO~uwz3;S z!Dt&Cd_l7V&4SZz@#OYp!Np%(4jPsUYJs*7itF1K#fdUyT(bRcZ~B#b{Od|p2lny^ zQZ>uI)2*RWbqCV^E#jUUYmtt>>ef-kVB-|XX#=1bgM5WE;va=C^ft_^-`i-7@vG8` zJ12_&;Fs90LNdoNStblOhfnlr_gi4vfI4smwnBEVN)t(KgIH(DMHB-~uPD80=}#N$ z< zt&@;2gg%xj_5bWgfz_dCbYOlsE9|^OjZJ%cp1IS?;2CtR`%}_8Ke2 zxzD5hWo~|+g%a6@1UDTV7K7Q6KSuC>OI+9Gc_n%6Omo!8F+gg{0=F(wYpRU@LA?3J z+ID}&^eMDQj=Ns1eATUz8EF8+H5zUE`S4FdMu3Z zfq5s2i$?I()zajrk|cipbS4K1UVJRA;&1AO8CgGCA3m8<`P|M`7kk~Pi%F(p`ogtJ zB*`U3{zZoXI7XxI4V+2_ya1+!x;f&)K#WFH)5bY%<+mToeWPrqm!M;`n{G`ri(ex_ z_EX*I)$ffR)E?ql-hes zuvc^=Y%7nPH>c~cW+Jlx#1YAufm+?mIenFZSUo_ltihX{>Q!6#zA|rQ zz!!fZWDDbopy&lTH0>Pd5Rb;&H^2`dcL0D4Bz6}WCE{>Qz=@uKPhT8>RO^{D{A9rP)I|AJwo(nx`rUUy~=DGC~9jWsLIR?i1hU{%*vHXgGa2HNQ5L}j&NEN-n38b_9A(r1RfKK=h z0S}!WkUHYz(?8yb8jDCJ!hNZUL69aQd8$shfe&vF^6CS2Z4YH*Iz^I;Q6%g%uuqpc z*)T!N`9O&#J9EERyASWG>UH(Hy@)WCSsX=WKybd|Z#D7XF2U!V;n-TuUti&Ch^C(; ze!xDXea)NyA8-3fG8TdO?R9}W-aK=W+G?zvIoT6E7RBb5WNw+x!rxNA_E~>9-$(u_ zJ3MD{JMv+{ZqggZe9|aC6_7ln4}=GUTEYAO9BzJilVklu@CpLp?)dH1;1Q$W2d;(S z(Fx!xj^_H-^pr74{@!vA`u9_%6_u<>j2LW~tApKw%UU}DtxodFq z4qWPn7RZ@2zM6W!*S7+H1aH}ukw5oL#P{-}IyEL{}ksxHJo~#lM!R_>BXc)X7;2elq=Na zawui8)OoHe-`Fj_#LusW2=3_a_AVSwa&wt~7N<_^%8LAW)h!U<`^@n@^Q(_4K#emp z&~JT=#`!9R!q@Hx{G$N?Wbc_M`1s%${vH@V@88uWz!Y=2WsWk|Ddyx_61zPkE@@g4wufvT1yvQs03v;QqJe zX!QZx7y4KYKhdr_u03CD&Fo(Fze+u*h zFoKuo`0A>L4HZj8C;5`7gBb-`op%GG$c>(j%Yf(kRdk_tQlsM0FLj>}Gu=6RnVj8@ z%f7sre9GnMcUEAZj)!~yKIAg5l zU9DTHoi|#%zgqI4#A@#fUxb@auI=f!2o|MW$c%bML-%m&YcD(`x*e4cz~s(-!~Rua z`r&gmoY#P(^?$UW5VBqj#1nyPD@??f|D4a1IK$_&BVUF!Pv24=EPOk5R`H79rt;jW zjwh$zye3t43CvQX@{3BRH5pyud9E>l0Uw~V2Q=d?YVA*Jn?L5f{*&Y*+~FUV{^KV} zVNDYL6#oQ{l>B}2rCu|+f^iSZsjk6{CRyiox=pP>VTt!*02-ol>XaXit3{?QVUE#wz|5xGkG_xt`X!ar7;UlSJUxA_V<;Q|(F9k;K(H^Yw0>VHCfB`sAr7)1idN6R<2IMdkYl*MH|IUrTf*MW?{bOm$ zBItCZR?!Qn?mwkW{C$X&eizZk@z>v0;lJMW_dfn#DjPX&!1+H*``gY!>F?^ep8FRY zTKa8Ium$eWW3V|?8f3t4boqi1xZ;<<215{d2<5Tqp$DPlfOZO`G%TZ*Z)KgC&S_qG zA)X~*hwX@=!ZGSSvQQ4Rw+I82BmlmqX2kSmsHJnTu!yHtF8o|XPIwOMJ`YSb`Ht&XmSk2!VfWzPy8rgB^76j&rp&Bh!i=BsE z-a6;CVX-Y6erSI2a@8;i)C*c*t`LOJyY^~)XSY~!nw9W5@4S5k3|~=vs{&UKPd63|6}_L z4}N5bLe8$6oFg<=Fk_O!6blwMQq!rF`jvN&rWBlCp9B>3O}^-)-hf8mzQf0!0c~wt z*^ab+s$8j&bJX3XJSK56xj+Y2gjjXKbov^LB%Jq<(l=M0(3zB3%J*I0MmB^b`s7fQXhA^$V z*=-q-cPl=3z9`OXs=L?cva+bs>(MXC*V#->uXNGg_tH(hRr~H`jPuN=eN)Ce)E++}Zc4hoqSraiJ>T&0&`h>vu!#8;_&e{Gerylq zV`ZtR=+=JEy~%6m%IQ9m+<$hTguL>WQfayMQ@7B^u@U@sERf7Cy&G8xH1i6K+L!+S zLc9HcMz{Sc+`5FEawe*$w!;r85yyI?6}x&{H9tvsdltc`=QQ!3#(=4ZgW138_sx@$UpGj(`>1qHxu<}%=4m^!x93&G*_W__1Kip(aN zd?6A@BgA%8+KUuos4aLd1zwty>qiLombHCd=YFiLx$*#9>Ojv_?R%y(p8BL$78)k z5~Qc9=auSOa1@`yn>R)2}7LUU5+L^{cyyfm$4*DAo z%=$u&{jD+Il3$QGq;i~lZIN7LBxtU2)21A)=LP<{U-~#P@m_er&AY=D`;|XQJi%!Z zaikd;)os$W86kPE9}u4rG;xiPiOc$!onWM#0OH~gRsCj;k|mgh^?M~YeO7xtX3d7T-?SFTkfc(4jdnzj)}sz8 z%2BU(kR~1FI68hHH@7$)NPO%1qR1t|#o2LyENo;UwjwIX+iA}sTfrej#*96c*X=CH zgQ5}|jZf>&!@q)T2*rdXxm(`%aDAAtRU=%I`MfOe!r{uXm~@>>`J><)BZ+jbcK0UE zZjrtW4Ha9SmB7s8ZSf)~@m`qA3l^#KnzT61?(ubxdgeIm!LO?>ourr8JTW!v(y?Z+th3WzU3= z@zdy8Rv2OWfNU|O@(7Uwe-Go2v#Y;W^y6f5UEP(P_V%N`iNLt3?vNo_XM;xGxLO@U zXkTa5(06&JrY|-ku)z2!we3OlY5^V#i=JNvxLiK|Fu9HuN|H^8s-Z(@rsy;qDN2hii%p@ZQ};7sjG1ip*1 zm@?L?Q8HBx}+l3IZ5ZBq{MQ^*$E5a?B} zOt*cn#E*!v-uGu7Jn^*$Y;6%T%#LORoFXwCh!9|h9FL?TUINa+JkHL`%#%;5>>kF~ z!ISV3Jr1}k9YVYy{L6>hGQcgta|LJ*(F8d0m7dW#vtp;*k)qAA2YALMd2M2^CO;`O z80ZdZj-)?>T@TD+(JD?1t=mAx;@e^TUpepKLh_BQGpN4A5f^3|oNrw{E#W`Mm*$vA ziv5hdgmX8*t%(uG|j~+Cg_Urz934*>_vHgp= zqCGAUjAkUc3NW1huIi=`Lp86X(apu`;AOj)wZ^jdg*J~mtg5)@1FeiQ0(G&yc0sUY z1#!2}h~#FRj~W|0H}{~;R%410{>{4h3+(VA(+_&@Yq&_}B*)Lj)=!)49P-)<%eo#~ z^y*%S%a@q`tRaD%0<*47iU%D)HqjHi5ORaHC+jKo8G@|HiJS<2=_}%-$&VF9WHKpE zXA=;`ctxDg;tV-pu0l2`f~z6m`AdWI=5M|hm+@>utnY`1G6FtpVAN%a9izUteD~6& zJi*eay6$bjHOM^2^R&3YIu`+t#odzZAhSF;d3x^F*W2xio~B{MAQx%GIYZpmww$cm zJl`OAo+}8?EGXBdcPgXAioR^gUV0a&42 zNb|myf|q4i(0`FH7E}$#sDh9A8gKq2`4R{@5keUgL5_=W;lH6@P}jk8@8G+d-r7G& zUS2@$8~fII1MY6@Ea*3|4DwrbG~on!&`(U7Lmo3ck!#beGfJ%cRbmu$vIQar^B4X7 z!dEYZ-oM}?Z=u_)cZyP#6Pt8ZWDZHd^6$WrPOre6h}6y3&cq>jkYk+7T|MwJ?uh6; zho8dV^hSbckDUYd955d){u`7dL>y)V;>0;YlNZXXV*0pL{JZberMVP$5a|(b;rlee zs@Rwc?3F*zzW7)V|J%i^zkUDjAN{wS{##Z4+gkpYPZ)pZ5Q(iqFz@j4KS@5=RT1{l z^J-8eta;C9XzKuawLAE^sEXhZE^(~hqGkLxG?JC0ag$L9A% z;1y4RaBPAn4s;aeo4?qNn&F2B5g!u;;I>zO@^psP0(#04^ZkN4ASjBbbyfi+4@N*II)HWkg#g z1QgGwtZKb`mSR6zvWBYi=vUh8T!3uNG-^(mx9=RWqJnl7rt6~|_mLBtxEs-U#thIT zb0=_sds`^wrbLFXj`9b>$d4GuPH>Q~7|nV9ZJ3fkQDBRzYeG$}o6?HhRRD(Wc8d|S zz0Ouq0W^&2@r6QXzb)gV7FrqufVPSzcK-VT?ZuJitWPS-!CIYcUmRoZe3eAj)T>~) zzOtIX!Sede59OmPN{>C2Qn^*QJla?=9o@%zlpTBN$9dmT(X$`kwev(=WFV76Vy>V0W+i^);J^Lt?NXTwkDF8u_ zS6bEPcKA+xIw)i9|J-r|^6?N(F2{k!dG@tQ(FTFbd-KHJq>$CTPK-5r#Hy>EmYx@* zsc}$ZetHkjlPaGw{K4wJe!O;+u9J4(1t+}X?c}aE%IoTC-9H3}@MNWr<#A@wJ$LA9 z1k1&T(tNDLZQ>;#Mcmu|YAJVcqCOuT;(KQBK=##8+sSQAMyl-R!yfSrUh5YsSyWdQ zzu%N>a%^G`!@|$QEQapm>K5u;OQL$!`86}tZs=-?-G7zOVUz)PYbzUSfKoTpH)NH( z+pUdRuCF3i%E>1VFrH78p*}F*zA2Mqx+3B)8iBwf8|36*mIhd4$YNbZS?y5q$A;Te z)}`u^JTlXPX!g|c zbhrbv!F`4^YMt>lo#Y>w5Qk}k-3$9@Q>D0PtIJOfwpM&?uEZ=QkgYNnkvyRiCV%5N zh3DUQe~5$3A;@uP6$MPIyMYUXfq+3#8~VF5_qsbN%RFZKrDIit_!FGne35obq9@|; z!iX5ubvH?Y;oYS+o^C(%^6}dzK#k8{b-lv`X}lBzA^cg9S+O^0ZigM$H$Q`~&3jW} z*uc5svb&VntIbfmD#4@tjXa0*4i+6jyl&D_2s?dNJ1TTlQ%F*nTck9PkEG-q%NE2E zmo@LulM!!L^;9!&UC%n-=R;EDmeJdO>Mi^CGR~8Y?l`tN0;o+Y3dviLm#(|s z-c&5Gzq@kH`QGxCZ%cFZuca0WnescOx>$=V^+XDSTOV}L_GRt4J;szULOkBF%H&ts zQ;K->N{_86A^_SweDH;3%=WqcJ*C3ijc7tt!4-2!6R9-(v25)qGDL;}P~|RmPO7wf>d5p`S(Prv>p19t0wtDj#oeH{llHWnMX9;= z`9sdi$U>b98`HTz<;go?6;@=_U?qy5qwC}A1cyIN1sHJ~IJA5hrd6A7@KO$5TMM<6 zHl#?Vvv<7-hEb8$)K?!OO)eBhnV&~qDdmalrC)wGC`XmecNV2|7aag06Wh|oDdbT> zHp9P9DHn}ezMu6;f0FrvX4m(X@?%S;1`kZqd__;7$tBEoIO7+g!Z>3VbF-AIqx0P! z$EjraOwYrO9{HZD={3)lt`&|PCnY5xM={3Mk&`yaDK7=#YX)KvJ3`=e-wYcRxeQYl z&gNM~xgm#~-j`vdRuxHsJ+DY%D1~GChZk{90B3dvd%xVB9|l5o3$mONMLRCmmUb_B zciZZ}b9rbboYpT1bMZ-TJ!2mfe#SxR!M!;qva;!GtzG%${(eyD>_KxuN!y*SOMZ zNG$tDY43(8qgsd*W7JW_1)ZQIm|f0c8m)~gK>+75?{IPL<1mzyEkq+@cUM?cEoHS= z!M!T!V!)oz>)W4ISWfghK-BejKElEmIZz=o`c|*LBzn}J`n26Eod=K>`PBo2w>zt`LJ89Pj)3;nPh2bCRx=t zrE8_)jrTjm7FdzZh!DO7i-36_kh1k%r_Ne+l~3K2{H?GXxi5U@fz-AeKS`D{aCyXL zI`~>G!42p0lZ2}t{M$Yd5)1yj>)r^0f7_uYI64q6=q(v35ea%HYj8D;9zHbRyYIgO z$Hj22jL%GCjul*#+0~V|Pi=K8V!V{*T&9FUCCR(w|ej)JealB zz}7RctRmv0*kHP8gXQGwtCq*Qj|qd*7S)}yqEtp>VR)r%oOFvjQD6-5y<|vmxhB1N zo1a}(KZ=}>gcY9<(t^Thy~GU6W7$t4YBL)n>+cEJ3yeLfjNm#?oJdI8EL9j<4x+Mb zgl@`uq89}bn|cfU4wL5>HEXdpFs~=4-nFW=24%;ZRWE#fw?)S@-cXX9d}=0M9jt#j zzX4)e(_GQFxvk_(%5=*>QgK;ACL&<4RzMJj-ULuQ+-yy#!*eA-dM3Zg_xltLYM0B0-$p+z~-CxgoNOr-0E5e@tuN2a? zdd=j&mEBrGOgW+!ui!0zlDzm7y$mtbi}g0ca3)~2o2pP3D+coh zQs$CN)5{7*@I3F?OtF*`i7yCFm#`mF8|}c9f#{-hfO~)f;jL0Vb;9*TBkS801OQ9k5(Tz^oUnKU zKY|0Ax~Kzhi3G^iqEA?4{=8HS+)9p@|2$QC+PB;uM$AIZx1-C%3Dk|iEvQ&Hwh;W+ z3o*Z7bl@?WsyaU6wRXD+pVi%^x|r<;0qYkZI|v7a%KV@(n%kCS+358eJ756H7~dl# zqt?u@mkIcQU+^K|Veqos;9Ve$58xgE==TU{Bg%M&(1xTb3#t;Hg$tQyliDjo9%G;0 z-D~XM6+L&wDDJf^xvcD`lMpaQUUMRk7z_d8;^^^T_hJ_R?FHe3?}FRJ9o+SwByT+c zpVWN^oXm~YKwS==YPNRz{%VMj{b4To-d3-tU(}t!66Te8od@hupVlbaX-%Y@XHoe8 z%*3%{6Ts@p3%^C}EP?PgK#!X)qAW~*l86ewh3{;F@iw_KFB6XmZSYpvUXw#WYz@nC zCI(8Tk@ayfj+!k4A_z+Z@FuFbMzWeRHD@Ws@12dJERAuxaCI&KG6bCY`LhwbSBVx7 zI@(j{uQAP|#a%;f_5)GFQ16HEt!&_}sf*OLqwZB7l0uT3y(b~VL?aVu=zaItC<*p> zzctx&qRt1Mi$Hq;2a-&jkb+vX06>NKkY6GO1`t)INuZwnHGsd37knca5OFJzF)Z10 z3Mj}+7g;ZD%nH(>_{Y=t+jd4O4C39SG$G_s(vG9~(=#(B#wuRUTzAXvxI1~gno&Wn zgNW?VQ&E6f?~j)}0nY`a%Otts&1wsv)6-v_06b?Srztd~x@vyq^`OS+0XRvawpL*Z z5O2)uD^W`F2YCWVj{aP+V~(Bw4}0$&)#SGBje?-4G?8AT0;1BCBAtjz7Z5>u5m9LZ z(mSCjAXPv>X^{?6BE1tjB1kV%13{%jLXD8bJ8`YOw`+fApMB0fXWTLF7~dZZ^_Q~!6y@0yS?bFv4IdU^nJfmt4 z@C$u9)Frz_d~{FxD*2(sd;#m^$1bUYLV6LmKl(y0Q) zjRHLp+90A~Xf7+JCb$>Ac4~ThVp`eF?!4*+nOD*86+U*jPF6=Zn3lA^vXg!uUu54% z+WP8CrveEZ@l8Me%=n(oI$G-t{7?DC;Lan~255VJJ^E#)*|;`AhXX=KSKHb*A#;%Y zeGHmJTX9E1sqE@mKRkW^_&7Fu`X|XOl=%La$sx;?oB%q2aF{Zo;+LVoj;v1kPcwW4 z%n-JkcqBw9O*ssR(De3D=d7)i9!CLr5N+wI%HxD?p*3}9uT{7aF$)klwP!5{YHC6b ze;mms7fc3G&?nJIOx)jQ4WQ{J&KsK>5d5v)g(KVlyz!(pG&XwhMK>SWfcI&;9>2tuqSXZJ%I=**pZZ6Q8*{$ z+RzLj8%!Mbf6Q1Vh8`aKw8ZnX&+38fHyk!u)f%?0KG6LZb1oI$m$jX15P5#eqEnxb z!*wACrVYm|m``MZ8G;Um`UvC0Cgr$=~K@*b~d~_Fq%)FU#fbWVNl=KMXR1Sc#~rO~O2hk6`osSPDEh|2(Ply%sCG zST>Ar7pZE$$pcHq0G?N8ZqZfeRl>ACgL&aPA(>X|EG~jbYy-J7ejiN{xw*49h^SB zk@I6FCcWdmk)J+Z52$BUx;7qchMc4Q!Nm>PX#v-t=EqYWE~A}95nA(!U26?e0RW{` zyG^fJL_>52I(z=t0wpVf~kooAWJV^=ngJEWi!FT z3B>d=t8Was_}Y9Q@Ej{fTB`Ve`~1JW{l7Z&U$T{dU>Do`)u!G@(G>W&kSD2f*ikzE zFesI!8$K2wi})ws4di98{FM(NpjG22pf$P95)=3flP7Id$<2-wte5dW#uZKW@_-xN zj`m;;6o{M9mb2a!d;P1pMD2O)w;8nGlJ5FvHZ17Xj?0>&tuWA#JUbP^5xLzV!Y=i` zwj9gB_)R2P1Nr&(fqt=>MH_f;e~B~2vI@=n@U1y<03&j)a!_0*sc}gB#8&b5*WXnh zani*+^I_ZN9t)7v3J0~i#4*A1O|@8^&J&754RVjg2@@|RKAsO$zjhz&(K~z>3Wzi2 z$HWjP@B-MG-s&tZT$|f*cxYI_rj3y0HvMN1t%30OLg*6mi0pO{R;U$(6MqTwLvch_ zF~i)zn3ZN^JMU!z8RX`d6Ug*UGGA^&Ws}qryxe1L9F2U=h6tX+LEQF=9Ziw7F9kOI zyBr2O1x;DsM&_|d{%}bj8Qc5@R@3ULbgP{~3p9dqC25?^EaAP8$@IkHI^8W1nU0uE z5>@jq#^ZUBc+Px7`K&zKJ)Nm`qHbK5vo`etxb)>$s-nLHFjI&dPaUiXra()v3!BG&Bo0J5YKfSg z{lGVA*_+LACfMV1(6tVKH@q`AIn@w9A&>d&;!lUeyCDU@wrdn;N%f;eC zmEl(9?yR1dok&Ngy0{~ zUU@G*;|dk4K#lk-?=WWIb#YE;KQcw^_1NMsjWJ=x3$??Kyhf>e?*)AN$P(mCZ9n7L z*2<*6pwci}^sYWm>+<=yd8V5L_jNw0y;bubk9FuF3vpC>Gs@Rqq8q+o~xbyXBx)k&$kuf z^c<;Hx<$RpDHTW>5~oAvo*j0#NWOQkDbDF%7Hx)9(l#T)<*#7@ZYwLA-7ZS2#iKCK z_T&1uFb58Y(>Wj5qgP|ia+{>pu&xh>cf3+czld(TESq;DJ3&INekcFt zODF@LZhrImWaxyf;R1?gWp8pc&|uz=!Jawx6k}TfdHL0@g3li2mCWG8g9ctlUc45D zw#_{FAT<0umNzlh9y4qido;DaeXIN<*Rc}HauSd4nSx>|EA)d){_|SE7YHGw z2okR%o5xe`5@%vMxLZ2>dwoj_D&##)3D=(zg^dpHL6|+2zHe-_qVAU``ax6P47m!P zm9%BZ_Pa^^IQReM-~_$Z~dit2>0 zgZy4Ttq9#Qaf3(Ub}?l!<#oNc>)GyHz2~%bS@tK1(d#e7#$mA`0d}kj> zv8)<=au8CRWrOM;IO=qt}2+W$+MwJ||T2HzC93qS> zP1UW7`5?f1eJzjRj&j-UTWD|Ms;mgTTRS3{74&sIL_gs^M|z;)Bw;38iRWU>1 z;*Pb5+6N++VnN{I*KoW6F6t19R~y}U>Q*e#;vJGO|8mXoUHPCzxS*1{>i2}VhM5T? zHy+MBSoDDfL(G`n1F=Isps8_J{LS6Vtts zl-Ibwuj;HrER}7z)fB zY|!eai$6*FL7EOyohUx2tvR?xAw_7!LWwYDA_0K|w-b&>wfNzsKS}(P@OGJ*N%dc7 zJV2|CctXtK4sty+2#YO{`Jk5KS{Q6$o+L#XVP!|nKCl0bN!o9sL!lX$o$r3 zHs}l_+Cd}0Aja`_S(z~&A2=2P;Xg@!;LQ*BkPGU+y$vXEk9i=40u&&(_n@1A2T^># zzii6M(D=`c)cT#?I_dv_57xhr7>J7N-;C0yF<=q)yLiN4|0If|QEdLk{`mik41wb-bhv6MSzwC%&e^I@q{H*_qn0_B%%ei*`YTghU5^-< z`WG9q`HSX(iQ$OGdz6AMIwMJXSn?*j%ykaZn9T5%rOfyTuwTF&|Ehl9KR{21?xp9( z)uy8*9bXJ}*`xazY{ntjt#LaExjRp@?0upXOKqRmn1^_*{>(`d zuFAzai4eDXf(wzJmc2J__Ci9?N#v+;!D{5LqxX(9$>ny5TV{S(wVx!0!%bXv5=8cB zFUO(LUjC<|*B1!W!TtUrO%#}}u%^o@{kga@*cs*dkp^Lbz0y15EY`a3sFrvxJ(__h zv3A)~Jn>I3vGsN&uQc~h#I+`HQ>+l#m*=}XL~zHmnIfZ1+kiK`0a+Ck*B5P?wJwoer179nugTVh-`c5KIT-3xN!+^s zvV^@SQk1muW8VqyRGQc8N_+hp6%xsjJ&shKR9l?yMQ%XeN+S9+YN;K-qZnaGv?OkT`jxu5`}(l~X?L^W!ku zS0||IpLx6Hj=uPE5Pt{D7rOg)c31^jU7L6q+%%}`KryoG?Iug`4cJqp$F3iRyGADHkY4dVoNIKseAQfga*PtW@MY3HTd@7go{~url)&9 zxT6EJ4kNB^taWuQ$;iHFNF{JlM2&NwoPy`o$shWGif>|`)nFZ8tU2-wBgEOQ7hgzp z)2qE-Y09<=9I6m@vlrF~mq}CmF3J6Bo=utLT8pd|X9(;xj$U^d&yUs$ldjw-$eOku zV>)YY@^-NzA-5?}#XwZH!#(?)-$-{iS&j#nz_71nkuNny?8B6XOMYw9qm;X~<~xQr z6FK(J`T1AKA(pNe`Gw}K7`Yd)YvfETJBLphW<6-;dUsZ4F8WF$+-`oNGG$#$E&4*fUM`DEBJbCvekjawCH&}~FN}eB3T?d}s>JwRnC-OOdzE|Y^)IWX>DaELW9KYBlDK|mviv?kfK)V= zBg3W*K9wu6C5t=BnZvO0@0)E&;{Q#f_MKM>4oZ&ce<9jlC4@9s?UaQSt@S!dJ z2ODf&JY3G}(IWEqS+0B~k#_lPW4C7}gN=DE-U!u+Z;!KcX>s4L>Sk5H8a~&`{c!{7 zdQo-r2CvJGx4N-UO+(=e!@D5Dg}QA^oQmmsVx(fWDvkHr-CFz$Ppg*=mgV#0dr;a< z{JN9tuCYPd$SfI_Rf)z4PEMN-4@xIqDVnU!Q;B7h~|C_nx!Y0qf#My+Bj z@3V5TFoqDA0G=3{+=c0S-Xu6-O`U}^S~aThyE1&QX3O{rPXj$%;Bg2GgVbG`Q=9r$ zBg#vOS%o%rVs_UHT{z36uH@=Xo+3#X@gaq`iMwCUs13BLdbWHaMBnTd*+B3#8-4^! zleB<5d(&Rbpt4v;>3Jc)t@hQo4#{I~Z-nj}KT+H3TnIGecRN&GK8Q?Aj5D9=wpVkCHY`#$_G2P<#S4R% zL51rxz7%MJWAnbKEo8DTGMT#aRk*Sa??{q|NS9!HY{|6$`m=YWozxF;a8um-M15(; z7ui^0dr}eq$${#OsJhS#f;W||# z6?>x_yR2(_#SI@Cu7TZ~6;$-H4!iIh(f!~JbfeXr<4b?OFNP~v&z4>Gk0tZb{Ei~0 z-exvDa>joQzxkDF&YmJ8cfkVklu$J=nW&(G?zSmT@H^fl3v zEl-@EF)B;(eK>{`*=UehuqV^2z|z$Fp>5oZQPd&PKCVyrw1qk@_!Yd+j@?R^)9`!c zd&_M>>-oX=STSe$a!U)|w6(`4KMw|+Wgd^8iX0e=O59g2GqCk`FQ8Y=)l51aN@e+= znS(4i8q{CEvPbRjYHh}fLwE@s==2oYxVw+(yR=tjb)%dZuKqZemRvIu^)*F)(d{YC`3j@KvSCm|<^0OGe(5TY`|_@L_k=!hYU885TU1Ops*@KCD% z-igZw0{t_7!ums%Jv<{7#`y?A)J6|w=q+53qP2cEs+1U0vV^4F<@eL>L zz+|``WlU-2=FQ~k2|Iz5EfrcGTrt*C75DgfSdIC0HzG zOHJp;#2Q_6^?cHptdd7UCK+d_9>t=*S$25skpW7c2z88kb3ZALQom`u!mSPC58-bx@d9hOzd%bAE*zO+}W`mCS9k?kpU#dcc51J1k> zQ4MMN-Qg|LaaaZ9`MSK|Eldb{=$pgFlS5e#3aiA&TfOz}8{5|^ASn*h*yQbE{k^yG zz;%0eSD4x}k(7{lfJ^G{wBMP0Bi`Fc#rkoRsN6VL0m?*RtP_vRL?`N$+o7Q0Xt6d`zug+fT^ zzMhA^gg%z1;L35ja|z*y*$3vaAMdJgB!@dr#LtVBF26E1Hkryzvgdqrrmtu57QN&B z*9(H%E~!Dz&R!*kVdBrE_)Mm1Nj$76T zTTh3GLrZJ-bh^q>Us$&3^8Wta4#7Hm#ptz9->*L8#bj|qrOc%AW#tYH)E8pH4)lWO z`E`jsBNwY)^se|W&1zMgVwhW(w7x<9Oj&%bu77P2Q*HF2^g}~+8m!!Yp{g>L_kxNZ z-!|RrEr}Bw3Jc+d7Kh?^!C_&G5qs|XLlYUbJ}Y^P$J_D`VU365vJb4d67uBO?ep!v zfTF*i2sB@yEUj>)FNJvIlaKky{2$Y`M0?#7Dhh?Btz;L)7lZe*h8pbl*MhDWnE#YdGD5V-U9TDR!80ULN5m9bl${n#`T2P9rjOFnjQLXmoS{L=)AES-WQ)cn$73` z0(Qp#3yKym0Cw`B8pz7gxj5b0;cU910RgoVlel>nMz<>raV~*F^}=CLh^ynVp3Id9 zhNMY%#DjgOE^@E*dq%u54k~1X2OlqF)q+fV#+hIzXSWkgvERH98r>42r|#cRKyj3e z-X$T4bo%T8Dm==}X)*TXsuoRsL`~40v=36zw>_amvM41Ldl!n?rV#IVTh@xgH1CyKyX*6ddDxCH`O1k7IgoqS~d+GHmjB%9Z6_ z2VE23C%L(%NhrFya^s%CA`8N!9^@Jv&M@l^2wiwJxv~#)sAccFGoka!srgehe-u^% z$hoIOI(2e%$K$Sp-e%46E7jn%7%#@JIVY-G3F1n3zOs6QUNKdtcT14oePvKc5TK(Q=ORb~%W_UffB zx7E1(T8Zu^$=h#AC!AJ4YnVS7uk{HW8B}EK{dae5|I`1c_yr)9G{&>Fu{JgIi0C$= zFI?OiZ#L0((Y@gl4Gpc)>H}}prl;vP^3$kAP|iseXeIG25k=TTEhqzgS*t_X{uC_A zxv|;2TH>g3k@ntqaM?tBuLZEX`}cm5Y=Wz7Ht0NL7&-+KWT)^pBuEFx?VltoS?ixc z#Ux!gCT1DF4z9=SiDIE`2L{BSBmgk7Gl0P?c3=@txD2b9ex~|a^pFgMgE#{4NpR3VtUwRv%Q7FqWl{DgF-|E>I2F&cC)|2fb^|X*OCUu5u5}-16wvV@(=mu6DOI zMN?ukxEDJbPd{#u5SSBP55`$e6h9}kKJ$8xCRog`vC#(k4=SJ^#E?gclzLTf$=i8P7yJqYcx-#%c872XC0J_W>rjt0m8 z&00UiMn^c67|`+mUg#4XT0GIU-VE_t9K&>kJPr=H2 z5xYFt;bg0Syz~zal03SY@J`W(ki+=m{q&+o>Uo8Wo2Fm-{I-)Pi9;^ai>r73i32}L zs)54;j(taQG<5&juEzh6u}2c))DWH`{3J0aR{s79P$i3HI%Eb+rF% zs4g&YFMJ>JhdE~d&bVxO$WRy1z+W1>ZPmpee7*3YOXN*hnwKN+_Ws}kp+3I=4@0}C zVPmcAn%r#I^*xKk{7xxu=R&4xXe#bSVToN@V@uK>=EI`2!oYSl!f^IONmRm7^w zsn{V!T2`vOny)&ApAfEZn;2L3f?5qB3M1KP#56ma`bGU_vbQViEGxZ>NxWbncru*H zoLrvPGi8CMz;?fCmUY-c{IVeWoNR$Z&Zh!Nl2`l-AZqJ0?_3)Fe19{DuG{wX#}*SM zXQvDey1rksqjzCWW_zf4Iia7P0KpO4&>PM3K-!z^R5_LoXZUithpzohWMp&gnFc|HiRkY_?b)8EDsc% zon{Nnenn5@f#`|#uIDg2t%=aCy1l%4a96i~djzp#os+!B;>c}Dbr;KBEjjtz_w#^9 z(P!GdUP63>^1LzFd|SilTq)DIRg-0mdny}aJ_Q+S(wV*_^?=l`P9jqqDTybshgK_; zXhi6wM#Q8Vh4m-vdq}zr-)6w+E_8u<=7p=W!rz`?ys~8&?#n;ROrftWw zZ*~X93cLQu^!%pSa_vo3>XsMc24-^&e05xu5VPy}5(TX4Q8BbF{lcL9#T8}4igAQP zNA>|HVd#ox=gjMu2`Yjt9M9xmC&BKeOnvo7s2|!9d%Vrk=2H+Xp2K%AyWCcsh&fcQWPBmXd()f$OS_F|c=4`$(^8L#6La!@ETJtZ;PM4eywcu5nS-Q|AXKOiF!KAq-zfuEefA1?@MR;dEM~ml{ z`0So8VNOo?pbm+%vU76T3lN11JF={rTiQS>7uTv0D+k{LGx0YDHW0Gn4Dl;Y%3iE? z)){DJe@|VgXLQ;sCd3@av%h{1$!vUIJ>pg_tkpC5)5^tVu)sYq6<&Md2Ws%}EIx7R zv}={;fVD6KFi2`7Htzd6CW@9ZG@UxUGW;8Iiw$^LAI>iI*!c20pZ5ojB#(-ek=8ZqryFfJ&dUMlm-yVuqV%naZ%TE}rV@LtI-#mGxe# zLFvuI6hje@t2bzFpg+9M&f&Ee&R81ExapcXwO?Ftpit=RhLgy&t(N9OpiSjxw}wQ; zu(GR7mqy5HLp)h5f>GjBP>BC&6Pz3##vCs8eK0frqYpyLw=(H4&82>-*q77(kim0N z8N*fWNX{gkSXGxE<7dwUstMDiFsKcv;1l#7KP8JDh}ALo??bY05`i1H?G~(6Jnxnh zQ}OX3oQX+Bv_WR|Ro3JivIr<2e{3X8ZAPDZ20yLBI`rdV-d)1Grjs_(G;nm3a)*(t zw|~A$MOvZJKPH_v&%05gi#B*~_DXPbxo2XFTg0neen%;fDr~LORP0CAudayC zC{AKGm=k5y5gphQawmo+HPl-7KKVhE8>0sWquPrvlsAN}Uc{i9E|Ky$fhgQAIJ@j+ zw4ey8RoXP0lHtH*+DvX`+EAUd!ZzmnRBwp6_>IXJRx_#W_nIJS0(L*cF-B(x*$QEm zXYvH4SnDvTpxr}3HDWKl*cmm}k;^TT8=@`Tjdq?Wv~r+4>+;JYkW*bfWS`?G$n~u? z#G%IQ>q6>j{2IVBk4M9rg~O_vu41pp6B6cAC_%NexgdptjW{ndzAvrHdtsS#iH0oE zL5+M1qt#JOvMXF%jksHR)27DOans@l8jwA=f$d>imdCY`0kstVgY}$O8neD`uRX$y z5D-_AYNroi2EZmU`ZtC_{EZ1#GtJSau;ft6$c<7O=B4#cPD>3q%t76#kUB(IWy~qh zd!Du0w<4L!RUrQI>F-N=%9)$|K@f$V7QDjCH}tT!29ub8R*z_8vS(5^ z?x}FCl=m$YNO@y{j(x=5I$yJF7W>}67sYgOwDPm`u=?=3ijfUh%8I&**SEu5v21-2 ztUrRHa+1=$?=8YDl|$P)DnG+y;I@-T+L`Yevfo<8b#eIXi0e-5hW*%MLAH+G=i7L) zP0Kv*`ni}$_-TKh6$xpr0N-1W3r&r#G?Y%MaVF3zEmSx9KSQn+V7u;NLLxA^ezbQ! zgtl%LXeNKvKmBBc?fd0>ViQrH9*K}$c8TU+(RvOi-Q6U?EwnV9v*TA+_k*;Csx(}+ zC!gL>>SCF0pikzOlCpiQ7j;r`>(k~pg00^RMFzdlbOvojl7IK(TaVo)-rR%kb_29) z=D%$IHoK0BoWjO065YO<|F-EvL0(W6>|ODjbQ70fzvWuqSRSEAd5ywCPQtyv^08f6 zT*#90@UW0Ie_>7+e8i`P31i;Wj9{zv0JlI4A|oCg(E+;LIRn`r zg1zAS>;aKk>pKXagMILI0q0_H5C9diA-^>k^Q1l;qz72}{pv>&lxqn9$Gv#`CBTs` z0yza?2hde++SPY>L@or73mdorL#YxOV88V_Q8NF(`NA)btRRoL{)-{I=9sLB5;St( z5T$KG3m!t3&OtZ9k>ND-gRj$15(QGQJ>vVtcfc|~MX&vTh)Wo!142WO-uiR&fGLze zN!);Z|7(2vt$o1!n1hqFhs)4bz_-x9v-bbDuK-K{2(}OQ6>t+IilD9kQ0yfJeX`$& z`kT;!&iQVZ%dGGR{-z(A#AblY2z0pMmr|M#k5r%bH+vuiF2sP#8G;V}66nE4>!QbN zeTv^6{`Gsgym*;U{K3CH1g5h1_AN{~up$jlTK7e;l0(Q}i zMS`({RH;8q&;&JeWTdb!T)=paj1=g`8ZE~WaKy?Vrn4^lc2@h}P8BDYxFn(5X8?~b zgEKw0SpzxAcVy2we@-U(MQLZ-^vWtMicBJ2Qa<+Lpmio;EY`kIXY%t1hvT0jKsMex zz5fC^cna^UgWt>ao>;NDtfixB((kOvJYV_ACS4TE73j9rFWx%S1vUud9Nu%|wfYgB zS*@2#KGPIiJ{vPi$U8`Ra}Wuq0Ij{DVA{(k%+xB|x#6kcZRX~VTs=|p2I6>j~l9{Q!}2Mf6;cMw4h*D!79 zT=+9AE~V`tVLx>)SJ-=RwyzuUsL*fgpE_B<&NV$ z?1`vsEj!1269Gp*$*KS=nQtxjS)3SZwhd$!&Pv1H+&Jw)wf=1ZuO6w>??}6OUh&Uq zD9@qV?O{r#!@hJmC{Lpe*7ZrBo|FtJo4CtNs`n|clM0-`C`c`LcrQk{Hac|8^F4=E zxQ>6Y7rj>{G4}a`^D|n;wV3a4ACB=c>oTpgSD!?gOU^{UZ9yc+(|LMy5s!^dF5CeL8h#hq z#Y61a3oGEgbzZQs8>%E13V6~eW zr3#*Et@u}qHvZS(^W@_nrTgMbOg!N_SlVb=38!3ZBa4RG%4j;)m){aE>er<0J3e{( z>I@atxH7_%w#$35MeBr(kuR-$h9%RF4=skG_E!*m93cMEUzdoU z)$~UR%s#5+dU*Vt>(lGXjMqVA!jqi$Hg$55lZge=3did<6J`QVHsuZ6_o4Ps8Re}B zZ=HX1y`(@`lJw09GC3Lrig4VCg?Z*^-&^xh`by&s5`OZPPSgt~wj#5!)O}lQ47xP8 zIG&wgcDO=VY=b~JEf8)nS`^CDH<51n+04@fp6l2m2Y;tmkt}{2psLCf{~+cYQog~BJ@Wm6 zcz`QJEQ1U`d)FS}6Q|sI)cL>FjO-lhU+s~r8oNs><4nfL>p?ZDcAajQB=&x2FDcX` z9jRqhP+*(vpYZs4M!_`C)v5Dw%I+i=XjJ8cn#e|o%y^|FdA-2=m%!`hdQY4hHKAD+ zH)}I3)k2P$_N~oD5&LH)YB6ns9jV(ZM$e5}%@b>%s(v5n7}xQ<~s?UR-)@_h~pT--IS7HFy;A#y)s%|P_ELtVOuPTzO(;(37bNEP-9RW;>zWxg9dt9>;5+cB+3N_p|g z8NcT?`g(iYjWe0uqL;P=5x!}?6mPygdyjXJ6d%Pc&Iv~anXhnhhAd~X)d|Nk6dmr2 zJik)pSiS$;(tvb7iKvpdWkQOJGrv~OA}>TIB6{*aXKmK5Fb`o{^J4D!2^!* z7HNuR`dIBtG$brxcN!Ro6Bx{u^CS0e_>|T-3DzfJbXJ`{bkcj&ck=7p#X*XvY}tfgf_QRTlwFA%^*wu~OB*q7F1&`9F9^L8y0%qv ziM+)B1&z|im(R|V6j2R==vZ!RiI+~_^4+1XBnAkb=oLjTSPR&N(=U6Io74JQ*g0_$ zQ>^2~%BtU7@9QrU{P81MoaDOQq8tS%>MirxMQzwu%j)W&V!MVLn+e0caEDVAcE_Ae zMJSB?o-$c2aqWC$4>8`@9$#KH^I3pKz^I9wD@=9zQI!#X(&&AHni@)!YC*nD_7T>c zLLFnd@M)!rQh3U@5O!I>>@qq030+^W$F&6a@3JnHWs(5uw9p?ESitr)Ma-L1|0J>Y ztLi?lp*E?q@RnD(I~pd+8bH{59i)=YWHllU>!b}aLPP;v!CX7N;ni!ADY~$fz&O$+ z6^>WZ`dQ=O5g=|N5XIyQ;aFmWgozotvBB3Q@y%=NLnZ>(ZA4JQ-c%Y}L zX)~oBruL_g0wVN#wt_O|kf>aPTnz>=WoEVi>QL;_HUFo>BN%u*bj1s|bF9a`-@kLQ zBad6>WBrm-3is7Bsdm3*&od=vjp&u5*u&!B5`kil5kwx0V38Ta=w{qU4g36}B-=-? z+u6IX6!}{Wm+-HzD=(m08X=udzS1KNw`@+7%Uqze^1t;_B){w36HbO#b|twdiY1;j zZE}BVU91tf?RaX!Yq@DEy;14ZvKcelanf!M)MdZrHV-n9GC%bZ`>oS2!fHN8^1D;H z?7JkR;0vLx#-`l5<0ay&y5)loOnnD8Q3CX}q}q+ArlHbpE4!|~2%Qp1JXnCk32sy4 z!#bnZi1VZJP(0fJ-jX>$+>y>mp-}T?5G7d06WF z(X7|a1BsGn^SfjGuWxo?7R5$S$5@xjy0gkiNBB7SXfST)tsNe!d-CnQu=hr_ej4a` zhw6T^w0QCMtrxE$N^8=if_!^vI3Fvf9Eo;QV~rubsr$9V_6_yH!pUQEXW0X*ZqQ!t zyOPfI-a$xc)fM2}o?h6&AGMI_$QWb`&6fMK<=L{31u73Nf?Bl!Vg2PVzBy-7* z#|;%#TUKGs$zFY@bzXDdH#HtMZPaqe4CjBnb2I$XI{Z&Zu!J@k9meFHJE(E6|*5N2Fp3f0F$18RXBe zt;Bak3ZhMmLf==PBQh)$bWMEVzjes00?w1acp}pr6mSU~z?7sVR#gev$XUh=zy(-; z-96aDWhfwn6i|DBzq0H@cKkLWiP^T)4%OVon+BpcM#SKkkBWq~1V zIs{|ho&K8;wbprmlB6dbQU5ntdQ@wH=E30j_K`+f>;Ei;_@S9gK#r-f*{nlN=;nPe zGz$a}82Lt~TP5M)F|B0Iao;Lo+ZIFG3M(rP4&@Hu?ya*}w3T@l` z!39#ge!0T)x{THBqhT< z-pd>i$^Q1n;!Q`d)i9#bdeyu%se>IJCOwldnz>RZ5hng+H{RQg+u;>ep-2O%dPQtP z>zOZ|{JYWNJFrT-+4a0ya0#;#O?s*Ga(0{%%(xuuvlohkVjbtrTcHq~zbRXn?!a!b zKj%Y1^Ut*IP8@Bkw*%ZI+p|ZnY%HTGaY^~Y z6|cvc*J9I9!sJ-UST-~<<{h&(lN|YWH&UGAu7RELOA<0K2H?#6uVZ| zA+21tEZfaXLpvzpTy~Q_lR}70&v?C1-9uwrsFnJ&6jj6XCrxKg<6jt)d+X~!*SfKw z7{EaKIgCbBRqSJ-hUBQ3NwZT$C4!+;W@GoC7$;-YR1j9S`t zS#4dRs>xyTJ1-I>{obQobq}8%w1_~9dZt(>+$>4gjSM8L!RvMLI)?(jPwUID`mJ&o zyEIZ1vHD@1AbjQ&dHIXls>qLJB3=g5k4)?D21l|Hlw~8e?-TO$_RD~G&83O4RScb? zkJ>$79oAyc*`)r%n%QZ!xl={4dn^ zYp}t;UxTUSCR17)`6SUP1q<{(BiX-L!-p%x5O}vVGxJg%POHIC23@PV^y-ka4R&t1 zD|a+wGZXZlpC#X}mVD}VT1LORZJuzJ-Mm!M=5$BoQ@WCCJ00hweB^HS=u{bhme)<^ zJ1hykP^_QinRGjJJ}=B(R`DGz|D6#&W1o7bR&M0!6&aVY#@h>(B%b=~a#(Lrwwrcs zb3rSr&NR-JS)OUAM4V+k=i$rCFI*}Wt zd}+^EOXCAk9OG!_FytJ-L#$-(Kv2Le@RnFqDBEIN6B!o;X2HhY<#x#R1Rk4>eX989 z&AQ|sxg}}v*vv{$b4tY#IhPMmZYZ9+t#db<)8W^XkT$+>Gdl;gC(ggij0*>%NRA0N7|4ya?JG|CD zj%#2wIWB^8I=pLBrxnt0|Ld~9^q6p^%EQ5@zCBr-C22A@`QEmod7srD$DCR=jp;z) zEGo28??bvk0zANPmeB>AednhT^Jf6!4rqTc~2HOHTY zqC?lzvHdEzZg(MRxmO|G?4QkM%`iti>^3w$mCYmY8^~Yc&(8n4+bEtJ4tj=CQ{o#&jv7d(c9HgUsRF34ZC1Cfhq)$N<4p4G~jy$G&?JkylJOB?oX?qy|)%9V+d zU#3hPDPyiH)R383&VkBth$v8E<44g(CE@gb+obE{=h+0WbB*>|pGOvAxed8R2+7x2 z;}<>0g($>Smtoq4rhKIb%=TayVT1t0PK2M`Ev#E-2IJRGO2w)VwXqwf^u6()?!I+m zBWy{U?JhzYfxTy&(>0ytHwMtw{Yo}PZM8h7fwC;Nid+94LIQHM*&z_~SuBQ((LHdY@-ihVm1FI@M>8lAma zAp1%xcinx1CoSH5EN_g94VZ1THH=oC(#Gr>p}IlJ2h-ItKKY_EG5KV;`Z9vI@>_1X z!Rv+(j6Z@GNZg8JKm4QKg|s ziWw?LT5aNZl%xD9@d}vD7&j=B%|X#vIs_{iU6jeJ7_W_`D(06xtw2fTQ#F?wI~kpB zsVdn22nmMK?cd7;{Hi-KA=forJm&q3TgyE2J>xF%TA$@vbZCA%_2F!PD!*@D@{Tah zXMBwj`obP>p6glXbEv)=8uVH4sSt1a(*MKQdxtgIZ0+J8Dkx2q-l781LAunSymT-E zN{2|3CcU==ML>EJkluTfF1>?*fPl166PlDj0s;X--t+kFefHkp`JM0joj<~ri|ffV zGizqntXb<`_Zob!&d$^8?7OZj)%rdcn~pOC#(N)bCr{GHes@xiVO{>ZdU2raj2v+V z`B(0F?CxE4p7f>CZ+zc#!`O(|)6Y5r2)72XLp`p6jM(k{W0d^0(LpGAAg}O;1CE(0 z>m;qV_nWlpd}Q5T@sGcK+s-S_4n`M6gAlR=@>>OgPkz>TQNKgjgh#hOk-HgaWm9^N zW=u;#3r2H2!{<74)gRwnr#q?2!PBmvD%WANBQW&?1n$_O{?>FOWjAJJjs?WZ>ce*L zDbpKAQz}bD`mZ5$=Mi8$5aFf_58lLtg|BBR7}dzp`5-UTw%;r3m99EmBdF87Wcxz( zN_Ayt!2By9$@{*o;OH}j2jS2khj_utJ!V)7%w+)C@jgKLDW|J4Ynd}LO*HQQQt(vN z?04NGuxcvdcElwQF5@}Y6neX{Meb=C?zyz`5)I<{mqKjUr-$|$P885)IS;eAcK~o! zIF$J;9AGNp`C6ZHsM9*VFIZJo{59p*B9Z#5TZyjl;hGybVEB_ippW;I`-9NeV34}gX521}Iq%qFS} zPQH$Bt$eNv6>+=l5)40-vT_!6&?Y_Y#Szyi1-Q|FIZZG`006QypX>3Qv)^28KD54j zxDkANn={TB8%F{gG@i{Wb!csl@rrVcs=2e{UsQE$Jor*op@KIdnkAg9Al6mA8Uom) zB?E^Mt&$l9ftqu_zcTb9^bGALN_y9Zg>VZtU-gNc`ZbssI1=px)K5Wmy(=TeJ}tjv zn$aN`(e-DobL@nzn+++9+LfnCsy-a1*DPszU&c)Dw7{t z{P6w$`&o6N2PSV8c~d0JCO^nYu8Ek7VL_+HxH)Xf_#&WZD}HUioN^I#7Qd8zmBO#0 zW@R0(F6xvc#F)?=+RZ38mjfmAvdcrM`I3E1LWyUgU@|ca^!YO~a8(MdB1l zavY~_hxXf7GKQK$_5i-k4DzL_%VG7s!HPt9w?6Zy`W0<~7q@h8G0$tuxWr0+qKw=x zymPC@8rvKrCyP1mW5^c4It?v&UUDr9WN0QN5)mtMrf?Dw)l59NWW$?J%9)kmnkbz| zP)-T~vSlay76LLcDC0qrUQEb_hIJ3|YCL5S3D&5SBhVcOhhw(;WF(7_CZiLADHpi= z!DLycgJUcVI`>(8c)m^071{`ynCRX9WOv+`XnqJ4?w*Z1?Z&Zjhi}iNU+hXXw`-Ev za1~bg&)pR|Q4VoF707wqy<;j_bm@$jX~in1h6REs&eY*W(AB82`)M5SO@t`iW714n z4-dYc(IEjuc_cv$Cp+jKs68nmNYAFfsvD)#(DbGyo#ZoRd%`ehMxnH+XqVjSwGQ~J ztISTZz0`DAOXXgx=|yxptk$A5^j&_0o?Z`xlV^LBk61{wFG*)ir@$6M&d@Qrs(fjI zXZm6$tA!ORynBiwR~OoB3R8cJHs2>rS*qDh&&VPfd7|PG zM#o>~xQDyC0NGD!0RB$C331@cK=gn6ocpXF;zRerdr5GaBjNDBiH_uz|8bo?S&i#D zV)*ihXb!*ktrPS&(YF%@fOT_=zY~0$L2v)%WkXGy)msklClgvz+{;C8ZbzdhpK|}= zXZSkuOIUhX>x#DoJyfQFlR^UZc4|&v<7(Eg_>o)hB&+P*YRt`cE^L-hvm_d0HfItn z#C4wUa=bCC8VoR)Cqb3;krbHv#ssPt!)+0o8%w5F<={uW9x;`RUs&dk^-1kFmrq6r zDlw@!E5=(+u=_Zwqn|6rd)}hGA35#sBAK3v%rj=LQ7+leMS_v9ao2YlTGi*ov0lYP z+hzl&A6Bmi`KXB{Lp{{_i6>F}>-Nt(!&m<%s)Fcw22}Z0O`v%(kLHHhS#h3nIu;5Q zs7Y7P&v~EJgcL@IlPFqVsHk2)a-4jG3tf|i({O)q_8PrDQz)xDTulQ68{|~8hGK!- zfAMP1b+lD0OeH=4OkNMHbO+rc$d8LemQKmKS^kDQhz3B!1_Rb!yC8fW%<5YKX`23B@zF_W z`H_(^Q#Gq9vrHc6-66IoyZ(A42uAbRBGPR_5YMU)VZglrrP|jbv^lM3Ha*sVhrG=4 zQo}_}?OQ^s^zEnP4n-vcE}@8+-^}`1C~YCs*6+Hfv_5Y2BO|WQf)^~QEfl9(5MMeb zUQYbDgrDqcnOziVD=YcXPzhb>7U%@cmo(q3(t&)wJ>Vh|KYY#%{oVBvUp_#0|JB2@ z7RWc?Cp)1oqe8tI@F=3K>S@m82N5NokUB;Yr#ea6ZSPFUzq=1BUcSDp0>O0%0S0|j zu$3-qad5b?LH{btuhy{ClD*+_)1C5nLY&#t8Y&5!7EH2I=8ACPr(bc}`2bWr zyqBja@z5L_TDSVtiAizxbgZ6Qa*J`|^H-fjzwUB1d((@TjOCbUQ6*HLukg_0XDa|ZuGq#7$tThTH@nxO&7M0 z;JWpW2b_3+y(T5Yj%ZC6 zYg?$oON;oCwBhU5RAdcO@rqYvu-m@ZX6=O<+k!N9SB?-Pj@k;!*;`CP#U@@t!J9AD zx<%0174Hr|x3d|6IUoaDz9MH6(BmC*O-#jlDqy8XWnZhq#pEqT@w04yjpXd)rzl+1 zz_joU6>mI|AMl2(PmpOBJNP%HmOh20Yq`r$nW)vtz2RDVS)Qo$+LcG6&tXXI2J+zZ z1+yzd)&iIV`WVlBRSP2rG?y3n?!1|L!45*ZC=@+5UVNiLlf8&35tR0I`Q3Y2cK#9! z7_E!}51HSo!wyt;*;?3qs4WL|IRfFb=g>ds-Ys`Endwlq4Arq@;&T<#=&mm zPOK_+*~v6N#3{GNj>8*NH@DR9$F9+xuyC1PZWuIC`Ib8LISeQYL-ZjqO4%#Hw%nSu zP6pT<=r%#ncWWI9&^^;1@VD7{-P#EF-2OFLd^D$SEJcob#a&)iVuu&Iy_SLVc445V zw+AnHA4k~>g--eLi~I_$j~V*1_j0D+--CP=&>ix;MlRrXU?P#uFrh&H`q}+J2_KZa zq`a!$Ujee-El)Z3ct&VVH$y1UC)JMKz_m`b2mTSU{ZUS24Y(c|tw4P(eL{31tcmmO zX3R3K1}H?AiBX>swfjWN*}r%zg~L@K&eV|O^rOB@MLapPT<3iSk;#D%dR6sHG{V>#-=qk2>*NPn~D0@ ztNp)7g|w#oGQi5rW!GF{%~`PyxQa{5+4a7Xp1I-)9hoFfyMocXmGAm!HtQa9Jdya( zJShAj!B+zel%sVL5m(O~OdWH7PwIw$aQwb6TP&UVYb-8mdNN54a0}%adoNBLa&I_p zMnM*()>ewJ=8MQjX@UbY=uNzTpp=ek>*PktO!Z8ET2I`F(y`|R-EXe5SUhF1qL2ie z!ysAO?BhcZMzh0irtzB)l9jM(QuU_e890ZQPQdt7=Mw064=NStepRW!1e<8hDo$Is zZcD52T+GsaR39~_@_uGrb(oatk#hIpSip#HSMQOGqA+^)&8MfE4UwR6-mSNT9&NT` zanJ2Ey5Cx!T>>gI^^YL@oUn07!PBJDy;<0!X|B2{7N_5P?%8H-*3oJUy+_ouX=QjD zoMr*e8z`^V9PxY9i4O?&*tDf=((~5NS=}Wb%FW}a8}YvvRG%s8#kfZZvX@+i`++&k zEvf_Ea5{O9^2qm6d<eysZ`+O~k9soXcsCOv#vQzM>FI&FmxDO1vHJ-kXkt^h}`l6g^+ zFXLAF2AJQrN<{6qbZCBh+`r8#YfF@g&2Ah9f+uI)Y+{2lr0)P%+-nKYy*{qN^a>v9 z>?arTeX;)3dYO6}eRik&=0q^-abI9L=NP+P+W&fCKy8ne>NUs~oRwpv`w4@EIHxj9 zr9y@1k~sM@H`PeEIf`sRap3FWVX84K1Feu#B`v3cLqx%m+zbLMoSs)jdc^X;Nx3p}ws$QgeW1s=%R1a`2$QDwtveJ!Y z^?NeblOD=h9dbnRrhXTZYRLF+DP zVa(y0U{iwEx^RQ3a&=TwV*uwpA%R@S@L|1J9V(HZShMHJ*n%G8*%D+7d+)P3bG}-_ zRO82Z&e)}at+0e!OQMgTkY@8rxXM4(KWu@#CD9((k|~CTeI=)k?jrMYL30%23N$nA zO09oNnsJc7(tAI(hR>yW4^c9QBdHP1YpT(n+Isz`um^QbQw<%jetQJC$#C9VdRUOd zdmP5-Dz*zqB#5LH6Nk)=`i@>oL-$ncAELN}ol+oTM)j-r3RNVsq?kC(eg)g6cx|d; zsgjR{L%N*c*8(A!>W-Q~(J2W^{q1K{9JAR|FPf?Zs5xtq=Fe!KJZ|Zc7tx~rg7ugA zloxvDo|CX=y4|-Rji;#J?0=;|m_E>Ztit(yN=lqW<1L;2gEG)|(60?L-? zaF=}45+0-0M|>b+eryg#L2uie^MukLdm7xy!c5RCa%%4u>R;Od(W0QWeW)i0_H3)g z5Fv$@LHKP&Gh9~yeJR5By+B-=kB=8?WkF)XUq18-X=t+_jHniB3Y_FnU)^x2ra)@* zF<_~-WNt3b`%_z(1rezV)IMc_$X<`Rx%KABE0WnSV5A5Je(Ep%&){W|(|6iCn(a`)yJiktpjNm@fRPL^b87mRNnSZQUusT!@%tX6 zdrdpr>fJk!7ci2wy47-f`{1{{#~4Yy!U%x#ty)WKOlu$~ul4bB6o0JE3YHwqbbjVH zxa1{YQ39pM>8xj4|3n)Jn!NqaWvUXyxE+a`g)CGI3eBaQzOYYsSxoQMlP{oq+(1*O zR!(IYY;D2z4j+%GlFU~;APwAeLnAGs)ED<(y4ND!ssf4^~_rTX|<(g zj*I$x>4>WD(i|?I4ew1%yqCExH#n1aCV1GNb8}(I$fPfbZDR3&Fqo}$>)Obx49fT3 z!L%n8*$=Qo;epb*!XKTt?=FrCxDHyJj}CJRI|%pj7)0IUv(ZcSD4jl5s)u94s_%7dvJYVY-3fnhNTID#5U zh^bn(OTC6ppWOT~5-%OP73wq0tnk?ESvMAM%6PC6LXp<_5iJ8P_vBysZ%7PcgViwhV&T3-NaND>@8Ed_s68no6 z?K08K0I_&R)JOcs-g7gtFb+1i=Bhs=yOM#5Gy4r_**;!-*ZW`o@+(TPNR(CEO z9cIx&rH5=^3@F$Nm@MLbyH9GOfo;+C(V!K6D!7$eh!8bhH5-PrZjZN^B-9Xm3Om{7jWsAg4q5X%fqZPn;0w!&! z?Upckc2xTpyZdIw507EGEEMP?ffUmi1Au)Uys^cZc?U0L>IZL;B$LWRiURf4K??zc zXq%!P7){-DK`cO+{K(TQqH~(!y*g7AhnVxw4UNnbiKahFB)XBB66&k}H<8+8x*pxS zQ1QMwYD+Vm>fP6M#yf8Mo~aQP{mEG^r6-R+_E*pIcBrjy?yQQ-4>zSMwB-zB(>J!p z4hCt=aD66W7B6Rd$MkJGGu9FGXS1}EqMStKp_(&J2&O{c`1(+R$*e*mzqQD7slL^^ z*^ZK5a|sT^79OP~F;`WY zlbI-!wD$h^;G0ydpRx-YDGgPB!nkoQYc3Q!@w?M2f9weGmUjA8uhJkuhvUNQ|I9Rhl}+vQMa?E^-Nu%MUdxe zpfV;VyTGbM5T)gUN7bs2GQP+W|GkYhwtG7X zD!2=+Uukqh28{7*zaL+yLRUHo2)^qV<)o+^XN}GFcwcxNFX~~+5C^x-iRct+j<;`B zh$|X$WBXyEY4q$|RI`DQ!q!*#Iu*?G*@H!@?!AYq zS<50VLkh_|+UwM}hDuZ`n#vpmi!7sr)7!|Y3gpKE#VUbvZ+B0$Wz?->d+klrm~Rz7 zl6qulTEOc0P!!B(8`<>+s8y1E-*I%0g;I2I^+k#|v*+DXO-rnR#>n?jKR%mv3{wds!(5N0OuISNkd9l#Lzz>N4j?e4>>F ze1`W1RW;5T`anc54tsBO@h-wV!AE{5S@`tRk=TUO=Hj^u=OFdUFOTNy8wLVhbv1E7 zB(o%}chQlrUdg*zbo}m)4GrUpT%D-69c;}arerqN6|7j(*m1Xa*o%Mkt3|V0a>CMe zX{NPoYPwMzKcK8S?;8njht+U=ZaQ3cW`9k#=x!iQlrZ4y)Z9zWdK?&*w zmwpCwmP@**1%yN5Ds)V6KTyr$YiNP;a&)#^!VkSg*XKhElfF59sm#_F%T;(WgmJi- zCXhRRjUqGt`Qsabn@*S3f%jVLvv*~q1`_1D9^PznlbHIhQK0yBwBn8*oxxgj4?uVD zWKvF<>*t-I3f-ny{s1E`qX&KupS5N3Jq+#-_T`LiJYLDT6vYQPX)F#gpL8a<0ZzA5 z@^9Ri>NIk$iS&pky`hm3`kYpB(~d8kw|_|iN`W0`i*gCe!@7LfvUlPV$Z6M&jSZ)$ zEQufSy+3DV&W#~Ou5@8myN`CV`4Sm^9v)VEk-sB;^kil8Y+qOL8%Z>(qps-Setsk` zk&ZI$pAYfT|CC+1_dm012f}EDO6CD55!Vf*?~uOk&7c7w3zMAeXIsL%amZ7{jzKtB z#sE*#HsmiH8Ym{2fapAFUj7C%z)X(Z7IRZ3&SU9r561Qw_`^s(15o68> zWb4@J?rgTYj+DK=^sIyAa{E+B-ioQFP*R1m1;v;8rP6oT+L)9|=ePNfMdapw2R2J? zf@jMnI_|dsPR7xvK=Rf}*-?HAWJ`5z0)J2QwEriJ+H@!Vr7@_Fp~fb42u|-A%I+8 z;UO*(O1`V>t7JAK^rp#EkW_f-efOiJRL5;pq?%TcFbx#6J1t~V`%xq2WXo#&{QME6PYN1YvA7ltrEY%lse{Pcg zJ0~g!qYjN@m%7T8fP#EAfXs7$m0)MUfAtOBY$E4v;7w^yLCO5=xs|1;R*~AT{I0xv zUT@peh)RO;S1;F(X|F@NGe9_w?3#jp=XNQ8p=j4Fj!dEvT`sEaA{j~6l_*JeyJOIu zY;$5|z)v^~@QOu38O2vgeCwaiN|@dLn@G2%F^o+TwX4n*dtoO$dpO<(;qn$y7D?2K zOOacTBqYHWT&}R^ahTj?6RJ95y^)Yl1h>W-9Ea_Ylh5Fa2$r^WD~<+xU8cQhj>c3Y zHqjwvMXkYZ_6}@<+_mtV%8###j`MgOU`DdBu}RpoZZM4kX$fEy7x_A@Do0`mk2ZF` z8?WCHe_J_~s4-H*V!c@pZ3S%iM#2Ta8sz|KG6ArsFe^L{Fu5E1-I=jrDHRzNHXGk= z2qOR>z;-^t(>?A}c4W=A(%(e#q+8(LRJ4Bg##dVR2>ztW7gzbKZE@fAU<(ZR-yk4q z&^T7-D1|=_n-l8U#pbK0gYj76_*OOp$@w^3n38OfhiRDePJvChZL%hGCUjt1O8Dt?1Bivz7y7&o{%d<$W zkS(jW``9tRu?YY+mw2`Y0kjmUBfU9G7ZwN<>P|U66>CF4jSw8F;oct`p6~k5-R^$8 z>-hUGQ$_gZKL)tkxCo!n`7_7rrufm+Q#LFG;6u&)n~1G3gPc+qxaht5GE47KI^iOj zC6P(akj#3EN&N*K*DX&*%iD7^V8D&Bk41KU=%nkKJ_+L2`ug*P(n|N|c5Cc1(*{E- zM8?_MtiL>&lyfas#$dAeXr3Y!^tnj0G(e5#W@TU=cJ5RivpR@|JpXwE&n)2Y>2mj3 zx>LtU7P>uQi?}(_BernsYa9iv@8VVXU=%2tz%}>r>m-&fD?7>|-Bhf<>`Tzsyhpzh zhAFPa&YYIK0Md<*&8N(C+Ywdb@<#bhGlIgNQ32=s0#ybtIvpDw zebheJl{!VYy~w;q#ecf=Z$Tox-Y#>JVnIkn=RkWbc#X6lC;>QyZRhZ@ammAl_lo)& z6Vz=IocF&iZ)#H!-*umVkOuKThjxQ85K12<+>Lcm7z08-rex25Jga2EcsZ!a>DjG~ z={lVa^@mVSR&0Y9(GVx9%XDD5c0-MNQ=8!q=-dtrESqZ%Lz}ikkok}yFf-x49sF+K z)BIn}B$rh3%zqQ9#_48{&yE#jj&7N>zesx6j1~GRO>(nYfu1l3Aj%jnm3BHsX3>H2 zZpbY5OY?Sya;6iLpR=DVnUdELx*SJG=oZEG$Sc`P?XI(-9i5CekI8Pl9f%hR1xn>a zWE0`!%N?Ng@Nl#jHNB=_s}bVdA--+&VS&2PR2QFW;&bXM2B|Xy_h#`1In1Ism?*SD*!QIXfAAQ@dpzF78PAA7pr0HYfDb z6-e>9tG{4;ztlv{odl)Y>jJQO@*X_|s#F3E{Q9Cp=j|50^q0wS8oK@- zTOf-h474VqJYynLUcSEMAc`d#=U?`OF3b&FkVX>t=XXwxIsHL#{d1Dd2_bCzdK1p^ z;-dGXsRcd>ewE(%UDJTrU1T~|EWWB2aDhldi6z})a^SJ4s`@SA~hwK&y$UkB87 zFJRu-Y-N=yZ_F=cR6y%9q6?jk)nbh_h158$@0lm%!zQ5j2&_`QEH$LdI~Ntc7zp!I#co_n|v2YYpDsX2s5?qEot#f4~6MslN0O<{9XHm82jL zs9TTATdR^e);1#g;8KGbhYdqs9+O>_LP)*`3vg)j9fN9<5fCnJW? zmAB)qW8Vp2#y$XXNl4;>_H(A%ThVu>26H=Iz0tQtvbAAxSH-{pslV$6)%`h+Ku9g= z=f-En_QG4)pkdfZ%Am3&d7RR#a%h*0cPU#@s}Th1a?)F zJh?{LM6baG;Os7u@7r~YXr#3)`3$u0QTyGvb~GP-NPCMvCmKc!m~laYUYO40Do2@!A8)!+4S#rLI6d0k zHEH876aVCu>}>rw7b^bMdXeeXeYb(2C=}!!m_`E5f`5W*wm=?|_mulO2|G2)i{EY9 zp*+McetW>#Zf$+7{1$gnP~&M7{4nnO%Qq;X9YIpSX*HY6TzkHXH97Ubp|Mg!t2D4N zd*l`OGi*)x++UjW)m%~;c>>sB@n?5f+?*< zNP-i655=sAs!Pf6o9MRnSE90Cz0XyMSQGhA7|l&+vQSy46@Qw3p=Tf`y9V#60EfXz z@$$fYK^yB@yCy5AW=hm%!Yl=>_zaziNdh}W5S@;3r_{}p&Jr;uedz$oVXK1n%l=Ps ze*3B!TWQPPBCXGC#P@BJpt&ml9!;T?{#79fHuqC?;NqnmY=l61l@rL~hLm+2t)aQ9 z+pOLQdLfX|d(dX&lz+dH#wzBc+ex(*YP$~_jhGn9xsE$V&c-0m#p5WrzPoFCxns;} z+amI;mDLQdD=P6U5zD*Gp)uJ}R1vL4`RQX1MTP-4pD4i2@|I%6HSKyd_6*X$%pL?nW_NZ`{w8zr zGKpexszM8oY`}}`s;BOy z#_2$b@nV<}?X5jX?MHK$tOM{=+S61=G1mKULtpj2`(fE}kSq0=t~< zeJ-5oPadUx<^O67^7eJL`^nnuIc@6}UQuJ~V77?bBRRlRIE zSZ|~~hs?H?Z#BBI=+)`>K&6SILgBB%Mk0*g|9iD@;KUw|M zf%7mDQf~~T?QjA+RuyN!zeMGD`3BIl+`vT575w{ab?W|X*YPm;Fo8fDls-rB7L|ZD&Z=c-7?xa7hG7ia+fFG9c5dQUGQ2GSHujJ~8hvYN!41jG< zDLbDYYzBTPuXvHZqcCQV5C>yuRDs?Oh5)_&_fu0q<>ZAw<^piI?R5Uf`=;B~z-teK zrQcO8QYDsNq(jkd;KR5-vu`H#=QY3x3jR5y7o-AS6~J{w(BQZX+$;#*&IN?rbulw_ zl|J2I2VZ*_S8oJ}9=MElDie7?7gKVMf588Y6oPJhEwWXz4ZIN;ej@6qRXu=xmQN*I{E-kqlKS7?{Lk_J`*Bgka=lj?Tn6Z<2;Sc{5T9SQU7~Q6Mz4Y2?sX;n2ydrJLdoCahL!9L3)rFH-e4;x%vF}P4a&q-~ZmF z|FK`Y{)cXl!QTQ$`(J+ymf!#W3e;8o*B*`g57E3JmAI-0ZnEtq&Q&?w z0U*Jz=mD|F`PJYeiQitsdSej(nlMfP zGL*xl?uBHD;qLQh4xKG3Ko~jtg!ziMX$I*t*@~Km93um(%6$b4t#7kvQU6*RBpUCD z)GoW4gpNbQ0WU?--$X0|aK|d@r?a5vEk6RSEb@((cH=cU32akaDUP3443~J^&rIkz zmP04>27){;o#6m^DK}vh)Zh|MV6pSpPj*9QR5(f>I@{W&>;)|kCEih{H@c~?j(%+t z5*e5aYd^Q&d5$Q_k0iKyy5Iy#&|D}%u>s?zX89C;rH?&2{)#k-UQf>= zBE*f{K*ry8<{dA1`n}h$(iao-VT^w&^ERx zKlq*l+!M&`jn8NA)+^1u`AKR1w$DOJBoA@6vA@pdptKDrS)tSKs=Ez&Gaj-X~&i$@Sbvte(X_RrfITFuxl@8>aLKiuD zLG=@O0cv`?W`cywV42{T8DRn2W`JN2edn(?DLnXv%~(}^m*rv-TTX+grLcK+g`Cq~ z46N;DRZzLFn7X#C;w<;{+fD7es7s@moN=Gmfz1(Pt@*V}B$+cYvY=*jJ%8$v!g7IxjcH?PIN zGCZI=W&o1F>~rE2#4+G-PnRfvbag}tF589DA?!@ac6zI^zN_;wghXrLD-W^okgka4 zC+g+iNUGbBwkg@k=QnZ#-LcN8mooOuvjwPME)AoQkNkzkPzRT$ZQaTBE<>vX8bR&b0POUfF!yJyOI1R@AO@!HfUtp3tB`XN^OB@(vPoYhKaQ6jY{7@x!kqVID=Kh%$2ZGgR8W1UI5xEI-3mB75$r%{Y)vq z(M)LTRytF|p^SvL<_;qbYvSE!q9F};{3E3mFTV|ZK~95=U4WI3GqC{B_IenG51tdD zt2Z0MwY{|+2t&H9vyFz0QHDj0jq1H7%fp;Ht(sq7GZC9gF#+5;ai?{-$s)WB1{9{i zp1nK61N1-YNsV3f^M?D*+(Wo}H{&-1s8+5AHrS2gVcd3Xk# z7wP-Pv73W?`jaQxN-ut%NCsqB34JCfx4GIvaxQ#Z>MxHa2DaH;7q2`ok~Z@?-MQ`B zDq`X^7z^)bqc%)j)M~&~9Teo+r^>j6L7GWto&Fj}Smi3}#)fzS|1 zz5Q0x?Lq`YfEpOOw1&J~GjKh^C!lbw-d$ zOzgoMq|o=c(e>rR;a-=F&BV?N8UJ5%i#UIoA}}p}4_=S@=E2j~8=`=|N(#!PZSw88@W!Z=Lqgx4A!o>rK=6L9X{FoS4A+9JxLIKBb;K-UlNE&kh#tXh+h#~2v>Zc zZOVVyqAx`H-Nd~#I;NnCwJ@iIVDRMVZz2tgmuxQ$j*~Gg>m>+w}|QkLJ87r`nDhM)H)NbkwAU$vbY{>-_xIRlo;851<@Y@E>7(d zR5fJ|h|~+CpPTmWUG+T=>mJyp-aew(Y#9=Fe|HgA>z4ICIiJk+8*vSA<6I|2yId;H z2L|CH%6dQ%;&xT-Ox19!9ZHLbCVf{~0uIgPo43_DgIn~6iRjq0gMfI=^;Yb5zc8b( z$Kb4j;H1%BK%5)WlkV6l^&gR#sWZic8HSGl}NuBuA7o(NvZPrd%#?B-g#FjGyc0uSM5 zS0l9F1+muyCYK`(^2;?=OW}Ue6r$W}*Q_zcMN9U_3^pZHp`cX1 z^f;Ltm-G*==)O&Cn%&tzb>6|H$<^Zyb?%7-)j1KJ5>ee?oh3QQ@XO7n%U(`ixA|tX zaVKck_=x(w$C%W69cxSEBd-@hPimm$@u2^se(5Jdsy(=`q@tfCSx1#guTCxOP3ZBy|$0JSHq)1jeI9a2A(91ELmg3@2!Xc~m zwy^|$oaPAOC*~mBuhiIYv=b~zHY#-T?c2AFH(la*n@f10J!Y=EX2BNa5JlI5>nL4# zijwO#`s?l@Q{iKw{k(7MNziIA4gLlYsg2B`Zkz}+7tjw9>zCBqIkTXeeZ2HQ1>x7z zvvx7J0q+GE+1V?A1B(`SO*rCjB1VZWMjROVGD#aLPi3O!L>N2>6Sse4+K{c=Jen}C z7jr;>Vl=#)SG>EZy4LEUb#whJAR1rbAoWql9K5p%fFT-ZS~L7OYT<%&WCQC786S+U zrA*L`F2H--x~zX=z#ru-P=fsCQ`;EKmvn7O6VHH_Dlf@}>yvz9H+5l0+pgc%(~o`O zYoTB&IVDt#iy^LPy>0o;qTWD@NPC17glH*6tq>hJd#1bJ`Y696A60NakI@L*uSDtBSK-Mt+^7jdE zhZJ+Q`&5-0+n3)Jtyfc0<+#tcPhu<2U)Tk-poW(Nf+{2^gT5g00V!`8mwrt&{l4(R z%vhvdz6h)1F}0X)v~?y;y1!}8cWe*~fn2-9S9TzWE@OS-U1Jtd8iEWfSp2Sd$$q)+sa$-Po zfBRK@yEeS6yUBkhE2}93NaVFy!j#6n3eg(Q`9|D)vztpPR6v?e8*miFfXU1yP9HEzm8xH_#9D)dBCYZyXR{dI}GPX8DEl2(5?7)#Jo_y(L*XkW|&9|a2y#bM&9p_ZxFlEwxoqp0(=&7X%33ssA zq5cWLMJ0?pjD+3u1tFa~{GIi>FN9A87+k0)L_f|x-f$*%rOkvlnn#oohF7TDCjo%f zB}0#;n7y80EX^qWFt)ITEjPt=6bhrEC5Y63Pl)_t6 zCoJTbi=V#vT9zE)}gf4HgzQmX*G%f0Z_OWuEU~SzB9w8VAXE!&EV*1v{!W*3)hwSVQQ8`^ZU%YyeiLvzrc+d7o#Uz`%o6};e+mBn>VnJ% zkbSlZx!E)8SMLtiV={T3^=h}%v^n2e7hhIA^~Z&x;P)J0a#QW9;P(e|&*N3A3=w>0 z&X?ek8j5p0mO7%swYdy)SdR-hdL8?cUC{E2!;!<}`7E#Cw0K@}LE>7|sbb}`cftI; zGFdcLPmoTBojDPks~AKVeWm3OmujbbIsntcJj|)Fkfr$3?k$l7E0*BvpG<9Y$AYB5 z=v1U*km&0b))~Nm?LW&Pqx6vThg#XzfzKP757zf9ocp}1`7TeHVw}XMffI**X=e^$ zaB9)qqUq%h(z<(tOY?R3F%=S#HwU(8TfOTrH0Zw_&3x7`#ZYH%KIUPWxG>Jl70R$b z&_vjI`Ia-2HT$=M=Oz%~epi`IrSGB*zE|6P)znU1z2onlx28>Mh`rvNLRq$Cvhb{m zE2~aK#a^`gUW*}LwWd|%AjSn9kq-bpXYr)voXvAFr4M&fBx`BhQyw9tt<$}%j>^SY zlj5F^S>m`)A7Vj$+MXfz+4K;jDX5E|#hp#K2Y!`WsUDD$G zSNoHE&y?nztK`(Y$b?WcO{6U}s<(SM@7{&`CYEn(7qFtTwjC4RK6F>V03XY)z5~LJ z;7|qGJyClY+msi%nwFq^$IsnjrUZ}$i2ojoZB{igM`I8e${NUil?X=a<8|UtUWBfz zJhvN#O?L4MMFm>*kDbmQiA5BezGf@v2#PacIl5fTG)&e+z_wrKNAkr2e|U)g`{%L$ zkN>lV9_i@+jIgWzPew@P|HFZ*BM+(7JD7?m>tQPVQ|-!plhrCv3g?ONWY)yNwI#jl z+JAIAJv_=!(K__f{;D6C)lc;Nx&NHB3x;FOD?7mpxd*=SOUM4K2R8k-)svhyPt?GF zzt4%AKi<{fpaMvXrJ{$1u2OK`gtd@V<0bakp76vqa#}`Z~psI;$!vgD(9zbaW{-t z2H^Gu02{{jDbpc7lR>6OIak(^Zt;hcpWRij&*><$_5vls3jaUEiKV;Du$*#)L|D~z zpBL&eSgm)HU))6tX%?erc8{Ua%+&okw1JW{4WN*VeFbJLTffQMM*fcq)2!5k>Tz-# z*3??tq;xvW22zb(G&l~VcL?1{G`8-Su7EodIgZlKw)Y! z;q)lgZqodDvshlJ z=@*_yk8+BayDOVl9n_Y1gzr;n1&2K&D!+LEi?UO=i!*bo-0kGUbfy-mmYK;e?izT1 z`Rh?~>WwK|otBRTE=$LpI-CiHda#qGHf*T(g1#UxJRr(2<^!cOyHZ#JO_H5}Dknvz zK|gQ5Ic>$`9iDM}TjgHeizG?6A9RJwqbUX&u8 zh=>FU2_2*g2q*%Pj?$!t9(ob!O*#opN+6*I65@H>zrD}?zwbGp&llFpLssUQnY+(5 z*A37qr0mTYdU^35#7^gT)M4`3m_=8LO?DSsL)2pVE~)Xxa@Ip ziH)V@%7m3@dF_V?Mxh(@j9dCND?wk_%1In>KC<+P&-KP<(=^EtzXFSo0*xHy;@>T= z2-@{%0+w30=tX+jrT_HJE_N{b-3rF`leD#35pn6&lEf?wuGV+U_zMafGethNC|)DrMz zaOeU{6_|DbTGWYP_Gvo%qaA~b5A)pe!0yWNKYkn*&7Grbrg)L6N?%uq?bib}`-8U# z;AnvcE)2CaNZf0mRzu~qvo@!TRD_$^$F{VFS?hnf!W8(TxEJq>ajCBxD<&)FPup5g z%SGE*PIt2R1f{;{OfY?U2L3=MkQ#oUd}kQp%zOz3B0l!cfhIR&Z>E>iDo zFQ`cXgzG0XXvUOkOoQJ3rdW4v_2Uw42N^ATJuksp(6?=26CmI+Tu3ZJzV z@orZVlx9@FKG<5|hkxjpM715^_|@E*E1zbp#FbLd@y5QY=eZ1 z{+L{b#DZaM6G`@wRoheT-xhZoB7Q81Wk#@%SwqFzI49WFIqOwF9HJfyHxB7}#w50L z9Sb^M3D+9@k^AgTC;TN$op^@8+=i|SB32hzZXAC7M(lgwf8drXUzXdO|E*(?X-A5p z#t!#rKrvO%YhfUl;(u)dAgx2%7|Md`cJA={>Zwt~jiz2lH@CRR7{y3%1Nag<+Xf^O z%%XOV$ZIpS58MrSo0(ML8n&0K^VXiN2%K~?oH{9dCb`?{b(sc)7HVWRGPPeMqPyny z;qh5^^W1@TP?tiDk>%IkvVN)Q%9aI|VzsNz>Z}wx=gh0fu5Rt>(d6b%nw(s#wu*3) zDoO9Bc!c=KSAPG=6sQOWj8mZP-r*pocAuc4B}xmDEJP3KwNs7Len2Cu&75S8EpryT zf`wl$om(6d+JYD9;7u3DE?;iI$D%^3ocD_+_dMN4eq214$P~9;>GJ$nLV}fA1m1X& zw%wYoU5x>GZ}bIa&`(0v35|;KTk_*xlkV6GEmgcC38I=t-+B#+Kvyv!E8>bUj5_xT z!WsSHO>V*&9S>~u{E9R$J*%s)aUm0Pe0d#qms{0ua+Uc^R)eG7K7!E`n2Hu{SsC4Q z#UxQQscSYC(=)vgA&*PBbxhbhF}}eYGW`H)=AHO9WVm6e4e2O2lc;SGwd|C>O!!%S2Ng9`a3w(eJMS}Hr~XR z0paS8WFh8>zXnop^G#Fv%fg1157O2t?f!?K)UhVwns!A(E-0Ftc{f|@uF{=ip0*HOeIXz%P^q807~A6WC1*cwuocc)p4PT! zJmQW?HHe&er_ zBR7mSRqFzeiZJOmad43{9L5IVA{1*rKW(sv&kN~Rb9t8jT=;$TX>P5b9!H;EB&mFX zVQ|!hD2ER>zEBWk+xAx3IiYt=IH)3Gt4QRi!}1M~_qlNwlfd+_OO1pj%>ox5WoT;q z1io~+IvV%p&F(f!m`6i`uF3QnekQS9!AC?F!iXWGCvUrr0wltt*j4IzR;TaHiL5>G z1c}@a$C)n!ts&2fySdNBR--Y4!2lj!B!Z#}b;2TJo;8o{iy4Zw%TokKaY9qx0e%eL zIYy3mRK}}(P12;62K>6N161!8!xS)#m1NX}nPb)%9uEiw58w_ zCku?R2wZ)mA>XNRf05yw=Nz>a0Llw-L7hks7sI>1H8gEqz6XEW*8{S@foo6c77h|= zf_u6w(5OJ3lMI|~xf-8hVs+i#u7yZ!tu&50C0F6pEu&W*)8vx+bi?5ftMav=-EFpE z0P=MNO5e?6rG$v8`b;XLl}je4C66l4LqGhSDHT_co^Ckbt`pk&fRe}kK zV+lKh$i;_2T<;}UG}I$*pG6C!UCO2+fWDf@*38R9^FnBeig;SUsOv44ey?xyrIlAA zwPe25#VHwq!Q@SDO)V*_`sxz3Gr?mXvBNx#O70ITRJ)8%4m88YtPD^?*zeTt%0a&6-jt>EP`OtSu)UNoLjmS=qh@l zKoW<7o>AI63Mfj&m!e1<#O~HKvJE3py)b@&KMe^$o5#)5zp2q~eJ;Mi>G_h0I~;nu z>?blDToKXTBzU-5NdU+0yVY&UO27jw7|k!yi|&&?Q-?p;P5PAY$8Kj9PZyYZurC$) z2lPUn4R#M`xPH^s<{Ey#rdgaA=Iib4kvE;>A^YYKSyvHytfiFw=|WPlZTgVxR=`pY zQTY%-L}3_ttw;75*{p^=>;X6SxH{&R7Q-{(9uBp`F^vvB=z;kLvNAu55VfW?3bf`b zRq=E4eB={%`}0Fx=^vH$Q0oF-z29E8Y3emnZOHf&@k|bU+16>+X7Iw@VO)RMM22wZ zXh7BdaNT@wC86g}I2HtY6Ly29>wx?D0;k`axya@Of1;b#L^bc65vfBdmSh!~J>rS; z{L-H|GkfD*Soh~@Ch!%i_cYhfZNbakz>El|em1R2{0kJOiH1?(F}lAgrsjd4j7{yp zN=*LfRS@~tz>TeDS|abajTHFV+M(B$(P*ZQ)RYuMCpO;eb8(aJE?`xEGK<9}6a6vB zQ1vRug|O`s;Jnka^Q0i$L&YG=^`TjdNOkkYT-K7EsrEr342NM*`4y?LGikF;L{XBV z&R6HRojVaQbEznYp%M>S>pS!X7hQJqbA-zCvw!@u=l}ZfYSPOtoq0Kx9v$3HjEW(C zu-zh82D-Z1HnHokjFi}J+mZJI?Ztc_OaW1M8(Zv^QIkzhQ(zMKl}1A#QMABsCt+mk zZ+_a!7qpW$YnYj~KMLb7|vfS_%4@^yu{C>@S^%8K@J_sKWeT}0)zQZd@%ly0MHX+B_}X4EWJ8t2S#_&M(QKIFDN>DR zJ(F=%^7#;1J-aQX2IqZK3xx3d6+6(8X#7gAw0Tko--J7X)^tsbxP2XcWs@zayP~!$75yYFF3rme=G{5x|qMc@ztT1-|fgfJ$?AN9iG-IzJ9-0^fr!3vn=a(?s&^`BOB&59ubi}3{3W11F8tDzv-O) zwIS%w5I_N)Kv2tio-51KTy)EFdZwpLJdvd^idiUW$kf_QO&GtOfGy$J)R_2UP-M`P z#-07%(^Q8G;5rJiR+_nk>HAsN{9+5iuEwn!?A)l8uY|r5U3-F9c!I=NsqrF)S_=@1 zPY~p%aHUNI{vP^Q-;;5XvFGLE5-Gk?%dKxWd7LVOnP|WCzmOuc933j0LkgOM4=D>| z! zRJ#54z&<6^BphB9dGA2d5BLMR@1&jwe+njEUEA_bRLOW2cZ>#p{4;P@QsFe_B;d0t zP^yk!{oAAvfL~Iy01~bio>m9jeRg&78N{a(SA;tx&{U~&H9j92ZT#_T=_Rv6 z{f6kT5_{BLTuk29U1cOa7-$G*arBfBm&{CCxbA9OLdXL9u`n=_(rHY$L4dvb z0U6jb1qz=(iD!wK<~tnK53oWE_r*|j|E}tVlQ`h`O7q`4SX@RjrVO4hv~)3EQoUmA z$CbuTdIal@2}visXS5sxa$DxWG}VvIW8~+#trufoFnA`>$O}_`DGyz%Shj)EO9rH9JHjgWT{+}Z?GRJ~{mse~wcT94K*z}ka0_s73E7$>$IVw_DDMSHrKMFRQG=`O$JM_zsM9!&t9BDK z+UiTkXkyx3;F0PnAk}Me!0dx?z)p|;X9aj#mjAba`7a`-i!jI-xh2ddsVLyaiphg} zM-M8Fzspaty(*^#1=B5tnAK0>;_;s~6Soa!HZ`e}XDn5a?h)BN<*D=y%5e9j-(q|2 zfI=bc;mtbz6tH5>GYPQ>rD||zGudY=@Brr$Z``452@NwHppYgEO66V;~;i%Cb^97vl*~-^T zDj_)A4@LisGi2X00RkZSs{qa#HiTFNF5i}?+?1$BkeL7hRJKPXsw2ptlN4ZC{v+Y} zz5okJ%b6mBoZrm?qdNr#W~JjP8*=YPbj}BMmM7DCT~402qKtsgh*uF049d7%q-T21 zXPC{2Tn|0__9WeO*_V8K?NF8ih&AG0=4$DmS7GAZI%%b%AORhJm;GyD`CmrF_E8Vw z_lA%B56v1?4uDJng8qCrm#62D^RN1jrc&s9NjwfoG~d-y|33KNa!wrtXxG1o zJP5HoEkrm$nDnnsz+7@IQ6GoH6t2U4ZVQI|O7lC-M>`D?bp`NW32}*#m9C!Vu}^E6 zb=_A8wn-usIv)~`FKU8$;;&fQ61^t39BXf*CS)enJ^y7U2mhI&S{`5~@Bd>aHyLcJ zIk(o8=W}gjN6wE%a)Q@IcO8}{Cu>WUCJ%oQ>5E*_ng9wMxlMzk5yz;DJXYF_?S@s? zej*!^f&*gV&hf;nlUq)MCu*gDCKmt;+c5$dmB}sF42c7;{bpcXBnk45I+>2W0-s#? zN1d#Vr{fQO-ZZ@`#&J6zuTGjA6t3;B=fH% z$^7H(3Nz_X%ha6)xtvE_#jqLj1I_|6Rx^FCgBG6(@y{+!6v4-lm9Lx=pvjFMxdBlw zDj!mDqJ1a!ie*2fh+czRE|Xi+UH*SS`F~9pV9bK~C|%~*NmDZ9@1O{(2f9z1bZbUE#?)4>f_xp_U7~j>b|u5B{=%SC?XrykjIwA87?`p zRvGv`QS)`6Qo2IfS=>OrU{80%Z`qQ6 zy9Vk5zKDN2T)ULZ!fome#lp6~=myEXe1AI!j8gOZW&1CA_4@M4gel*3)T0t9FRh8@owY_BM0e7cvdVe@Bly=I(M?aBw5lEbOHqJeX7f;Hp|-Us{D89` zc}f#bh^AO~?>L<52&_l_BT=`<(C$(}X}%r4L^q~N>dsk?BXO@U}6GEQA0hx~ew~3@Z5dY6|@2T4~f(e5dL<~&2fSAwk*)=7{#p=a? zl0MIJyN5x+hkXRmHbiv%1G>urtXvRq*@p0x*sQ(?6yMA15q{b6e-q=Bi**{ubR)cmd`{loA zy7kV*kG4%!Zt?TO8=jt?LNdlzY@*BnWa1#muKxO1$M0{N*N>V8U@zE2!{qVfYohy& z?r51USyFa}7JJ=ZtJb9l|No=a|Ksz+K^2bg)%|19mz-}6EZ+#)&};cBHb9YpiQ#R# z1|#Z`ZRp69U2Es*4*1ibUix^&2b#y$bkAO$*+1aQPi{Gm$FAX)@JP%+xnmab&NPJA z_|}4I%kWxgUd8(F3d6b;ACqUrbWerjHEkL&=;@qA^>@`^=HDinSA!QG6IAn>R*{Zg zA6FA3lYYkPs?a*FL2Sg92U!uVvMSWri6NL2cFxt%t?ey!eu0b2bDwiB2hT2aMTR+` zE{039i*u)nsI1ogjcJI)zHdNF1Y{KX`BF6hBWA|=bx!}7$GKUud34Xig}u%ef1z=@ zVJ3aWE2_NOeiO|L|Aju+D4hk3csNw;>_b{$xK)D7_#FHDei1#Wn@(Rja25|OGXO;T z0Ppd7#>0`U=O7^^CpY};b3e847#EIXV~)GeD`>u1we~a`F6fFp12Z5=Zq8pBam2sL zTPq1220ZeYuikGYt&BD_gwFQXG3m9I0)7HfF&VGM3zHcFK!eIQqe83h|6lCT=*kK%#pum-Ncnew=UK{s@@X$zVj<~T&5{%tyen!iSn1Ly%(YAVH= zMRs{0w;s`OebAh(p~Km7!?Xcy_XfBlyB3%{V9Z}OEhIx2YEC|wPMBbcQ}oe?CY*Yo zU{fz1$x_JxCo%f2E*oQiC(@0HqCTmhR4D4FL|ZuKSuPv0;o<%UE~u-kyUXG5UX1T z(SY<4xctun=P@H2##@GHg&&?@bMw%gP|V?|^ka?7GZX*F{mA>hjs*Y?jzN|e#K2`? zG~*O@Xted{v#|xh3gF+bPjbk=7@5`KYr7Y`V%M(d_`^_u+@C&~VvA^1Xw)l)+PCpo zFGOvXls0k~S`njqW~P|0RyTYix7P6@%d_D)yG3N9-`PN;?y?PA{6pK|G|n!6WT?e> zHLmz#K>cl>7jzy@wWH5CIWK01?*VMpdw>wE(8__^rDpcDh@IKQxFyU{uw3+&(#luwvHh z24Z#;hYAki%+=>&+wK@W(97#I+i%|hMwyzC=$i|r!t6vZ50_mXgA4Vqtk+wQC3K2= zF&?Mr^cv<~Gd-8m(`|8tWT8xeK`E#xs>+*3iPcD0H znyTEzix@Xgz%ujDeLLku8 zL|NU!_U4r?BN|=y-6sIU2qNk|RC{+|p`%_n_5iny6q-=-s5(@7+F65iKisIG;}+fn zzfAb?{``aU0+m%rq6lrrDRbMjaXU$!b6q00CfX(2O-lGf>`TJ*eA6n)L}*I{-oi(i ztfn&Ro(2O+08kg0S3_Ele73G0^#L;(z)^>(x5A*=qbt(AqN?(EuB9)6a%&0jx#kN5 zsR)&aOW@FHiNWZqvI{odPQKnQUet~L7H5?8>M={8>sNuk?@R1h3pAOny&Ep6)Et5x zWM41JLgJ2J$5%{M%<0J2lj5h%2m<$LwMbKIc|JpwUhw6Gw#zajFwJjJWs4@l_`WGm zZ1rk}^ymbaM9SRRE6UMd9~`R^kG`qgXDu1eh%JhQ!c?&(Hk0P@CXM*8;#AXVp8^GCyO*)$mLSZ) z$Q)-~nOMzfDn%ChVhuwb5ehTTGsq|3s<~-2iP!gp@aXc)-}(HiFpKx-S>{a{TSZqS z-VoqV5uR++DT0P{bHq)T0)$)T1A=vlSg%5>+zrojiCp9C5AOA{7K-(QGUA6IQ=5k& z!)Rw?X4m?zPx-U!oEE|)7gWk5tB(9sGKX=Z*{2+z8%xRdA+5`%+ytq^5u!9c2g?dm zCCJQuN`y*ymR*eqD9N3?y*pxl`#4VXij(t|^cT6O07Aqm!1NHHZD`1I9bM11_I|AN zzI-^#S$0#rE8#;B-!^Xz#FO@CSF;51lynKEN7(5$G<{rEL(++8)OmT06wqig+UH!s z#SoN;8P4%>^AQvGfA{D~95q$K(bQ=%aK^DxHLRbFY~SU;!*i`eA#G(pC2rcIa13XM(#1ya1V6pS+u(x@Qt;j%q;Q(H0%xDy&zeO? z89RQI@ZDLVuT8isdV$GE^PJbvWH5~Wv|jBjeAt#<4iW~Y-^p!459g%l3C%=iJb$mP zkMvIW7cDhzM}8LxgsB#+-&yFe_}(<)?t!yUl&jW~@?h=YlSa8{zuCs#kL!4{P>$L% zb|YP%-K?Kmdk2B(e09sT=oQ*!`IHe49x#`*s#8)Uqoop>UcVbb&UXhIZxA z@YA2NTaFoQS{@1{{;e-0u4T((gB2%5(#M&}%naiaSBIl)fE!s;>(ZnDiKL_YGfcq( zJw$&0`=RJuAV6Yg{r~&xQ`R0BI!IFDu&? zn$37axvscOFx|pt!;AK*bV%(L`#@tM77c;s?^UNM&1YSvvBXVn{CGan-!oOOW?ZF^ z&z0`08ZmWQd0ayUUft?qi#Lj&if^w^$-r6*bU%1kWe{!9=LSLPd&G7IW9N0^Z@-Cs z8J#H~DBbzsGBZKsaDXsoTZxQTQzKfoKl+`?H^PoIo+!nnoR7Kd(AdmZXKEOnH4Jph;MGH3p#G;#9kcV6rjHw{%Y0 z=r0zOnri%IL|rqxGvB^S%hd@>SOiatEnSPoa{?WDDI!)D#BeD-Ual%Bru7=^)MDLO z{`qs-E3*-2%=}_nHLfJsdRoJ-;-3z7Xc1?;E)ABJrcbNgFInc*WB&NVZlG-@V!q3( z6MBl?0+ZCIps#jXCx$i*a@|<9ZkPu&L$0;yF7FK&Px@|O=-m^w$x!mT<9n_Y22dve zA-0B8749;3)nLR)*lK}mTKgu4!0I^?XlRagX-%T$5v=7gWd8DpM9LJ|MhYqTY znT*JfXiJ?J3}F2OGOvXa#J@h9)E0{N{aE`0M(omL-=`#yz%T}UGmswA4Im2)g`_q8 z3sfqNb`51MDrxIo_|mHqZv~s}DnC^Q{|Z^;__Q=*95d~cvCLB)gWaG@+}3nXRWqK7 zX=B*hV^9}$_l`MO4c`)MA$yaIVK(@(R&W%MA-+a1ofcW(<-f}1S_F&@3wderN$c|d zH0g-CyWPz=Al>(*v&)z+ivWzj^VeAum^-0v) zCYi(rW5+*@f4ARb`4s4J=hZA>!+3{c8TxtP40oW&O28LT`#F#(>@kU*ECR6d>>JZ; zriC|7WU?oSlsk;An&11fqwPCjl|}Vjm70_1jmlk<(^^@aNOygBm_k^YaRg3|_mq|Y znZf0$0|}+s**>~Rr1X<-6-5cbZFTg<#Or*~i>h}!0q#w!dg0UJx7On&u{bjQ;b#wP zZj7Uk5ag`<99Y6ur<2421M0D%-w^M-&F1<7prf>5+skgxMBWM6J&$_huFrH==>4L{V$?2x2$&s{SS#L0hH?;YQQdrV*WsWiT&`kZTVme$vDD7r!_!nWP4H<-#O!| zB={ub`aXXReIEndZ*+j4^&;O_-nONGSnO)N)2p0T&YeyXuVOzISG zq^b|6J%eNRkxOp)LC|vN*LBLc2dd*b{^)Rlv}t@AqVB|NjW8#u#(nmNcwws>4DzBj z?!{dUh^Uj_U=nco5igyZa`^2ndW(uAO-$7_roR?_E%n7wZ=pv0>m9d4gF?GqSYJTI z(S1TS#qScV1ve_()_h?Qk_;n|E;SPdj{f?lZ$JmOqrzFP`^kVKS zYO@bCw`A}D-jT)K=(Q}&y5 zDCcGg?iEPCxwC0?LTR(DjCq@qTB4OVD?oh3E9NZ0vGLID*7~eP6~T$MQSq3&?x6o1 z5)1{r?OpG}^~=)08@D$xLn3AA1RB3PZwu51?_Pzblt%q{Qwf>VflGd&azB`bd;hUkry9Te5X zyUOQyO2QJDc4V${Yrd3DiW+%8P|##h%sij4n4_d8`jh@(c=en&!3M z=U$zi)yUGGx)f-JZBADI4%xyeM2j~ISh%E`m@3`XlxwQ4o-H?jx3#o;^+Oxes6gi~ zjmpw|brs|nY7sDr3uZNywG*D6P5hQ-5tVrNI?5n2}4Qotz(a`pb!A4?zjnpJK*^yw3 zv&|vPMJX$nG4y@2{B4m}ukpyz+^JG;sa7Vn)i3u2J&TdxqmIcriwH8C@1fHej5{B8 zt1-gFLs<)zIXxGicWb~yQr|CS@XD2{bA`&xps0=g_+QT&f($wC&(%v?{| z)Td&GIu9LcZ?3s~yt_-Qvb2z9C#~*g8-EhNb&Nlpu^sZjARmr-TFi6S%{~tjjLl0i zebOi2p?%df#hvMZ;0Sc6BR#>J1~X+55N)kK0cw=h$w%SmQ|2AR!Pnm<&fl?3{=g~| z6XTR%dk^sbdR6{ZBmrnycT7+*-yLKm+J;9inFG^qO=#d|7+A%HV{1i!^ zeCf0r?Z~K%E$cL7ajB0b%}&`~d*`K^uJB$a=TbU1e=fI{3hKFD17id7kt-P08JCL1 zJ!*f9_t=MDE+6xJ9Vv%U6OfcD!BH=2MZdupBd^a{1W!G`9imh1^S5Qx(re5de4tK!`|R%}BMB+9gITEf|-Ta54?=5~=fc zp_fEny7M$bS!I})ePQzQ!G8BvCFvTO39sHV$l!{cqOz==tWp(l`y`h_8M-1|dp+T} zHCVvY7UQwKU4n; DPb$>f literal 0 HcmV?d00001 diff --git a/feature-screenshots/5-open-editor.jpg b/feature-screenshots/5-open-editor.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fb0e9e9177423c4cac14ab06ac33b15a8a2f7187 GIT binary patch literal 113156 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

x0j{&7iu0 z{2q>vTlQM9xfW7kjo$&I~?yY(0_kX#A0Zg^9^tE0Hl>u)>yZ$sie!KDL@AE2b z`u8{dyV+^|e|-9HMN#Cz7l6FF&=D&q+J?YaRHGKLfBot2#Q1N#D}b{v)&^~c+9*9g zm_U%E$#`pyoeommC-uty!_q=2dfdup7rEMD;hxu*@+*(&w%b0frm_FdTBh`}Y*e=?LcyX&eFIn0_$rvAQrQ&flX%*XrgZS0`4cz&E-SKEP9v zj?&Ft;yIVU_B02&rgxk_kpbF5@xd}6^;@0#fmY9gp23qdt_(4Z>^Gjfow`1LUK(p63S7QDL? zxU*ZJr){&vx%$D6FN_K4C)L115DVE9uG*eD0aTNH2)(ti;=M41C5zwG=J5%BQ(czo zpZya4_7_ZwUW|2@;|TsVCRSnK-dZprYhX}P^sSUl)c>h?JLKXtmR~uYBJH$f?SdJEdlhs94IV&J73E~c{;B~63^S)WLAwY0!AN54&$7p9&iv9&E%>^()F11(<27z!`U z$bnG3jEUKBngEJi8R1YSrXfytv0D)kS*o3$87AwRk!d9{&EQxH3%PehBA- zQEK1!WeaK8Nn?sMK)E^4?rP;JKIn2DPc*~hmUd3}dlTUcozn9j(TF0CM!CJV+7p!0 zAdBWC50C7tDlZ7bvbWNW!>k<>Fh^LAD=hEp5D>jPoJ#|a9M)}mY7JkepLHuksia?d zfA6NAD$l5$w3Y3NH{Useiu|oFKRkQ4NQ+zXvimJ=Ep&VzV|NqPru|NGY-+ljQm!6N z;2yaaw5RLC68FFx>xw9$RAJiTp&Bv!w;hC_b7MgQJ};JN$Fe)PtP;p_kIoBv$S58< zhpgXS&VOI6P!%NUJVXU|jEN1n($f?6;kEJedE>;d z5^>#1X(=Jm7u&jdQ4LmbH$UrJxWt!`+DxBQ0Q?1%5SH5%zRuZ;n(LJIB3~w{Hm-z0 z-*-pBj{7kNKgqo&Sy^fas>BEuojiAc??d&gD!CGeOIiZt!m#!p!+C9XvVGpV#e>T} z8r@u0l!{AFrlB;c=`2oxFAqHe3GHwXpV=%Wd_#qTf zKC%=5pFWs_8W%+o5Jr@opCE$AXz+p9$O-nL4fd*dE5E}J$!d>GU7q9a5e% ztWXV>D7Uw_1zm2h4<~S+7tv*|{m?+m+ZZBCfr;Js3nafzHfE)~>rwI$us-XsYFeS= zCA{HW@=>DdCDmeTWr>H%PZOnBQ)To>sQRSjn6W%(ch*gzr|)z<$zcZ{dp`Qwewqzg zxeq}cEy=ZC#N{{d8tZ5u&4P;q#Jy#fX^PP3_&OnQ)eEdF5mx&lX zU9X^fZa!>vscu0Wju&k7?tTCC!6{D;Q4qvJx~E6VdHjRPh0|l#EU&HB%Yaih23!^^ zH=?PHoZoeBt1U&E+I?TSD4%ITt%Xx|Q zV!q(EO-mx`(VV}%Po!KL&3|K1h!8vlNO^+nhHd~C6w1?9(N-d_#HkYoG z0y^_$ViJh2_;Nx8H%@!{kW+AAi9Mf0|L+rH^quW@`^x0v6^#1j4i?LuPF$kGSD zOJiD}(=Icyz!pQgHTnZDn|?^`E^!9Ac7Lnbe$jXz;~D4n!53Z>1pM1yE*uMOqXHqB zs82e@KbZWn>wMNt%exzT;Zv`NQ8oDOT?L2xxzVjAI$o1U301mrY-y*je_+8@)HYjK#53>SDHv>>W~nT^b_|rl{c+<_Mn^C3zz)h$ z$1fim^bSn99^`S4^+}?{=d1kLdNwE3a`spoxXA~f7+)1R?7(}XDfWYULt6k7VzCzZ z-ERC~s$+u=2OwzMEkBr$yH~qo5MsgNNLGry7s;b7i5sU|-N2!8-$=4|w5pBY^QfAy z(={f6xjPFurMQgRepAJ^=|z8jg+g^nr z>%ik0&7cTO!#QATG-V2b*mssv3EYMzyv}I{&I~HpFtZqjNyo%=-Idm8fR@4=vEoP_ zQc@#*2M~KVKW^s(gXRva8KKMZpC7Z|7LlGiEsp(jh8a{jLvXaV#I8KBGbLd_&iTsy zI+o}OsaVH^#oKbS-c;`rZOxKVyN^X@18>1u6jY*?$nsqx(LBHUXfuILvZyQFu`>oL`2 z$KS5*B_K|7Y3BiMw47{%^g*B9r{}f1PHGIrAjRkzb-YO5DiT{#Q?0&@AtBW&h?lI+ z^f%7a|(E7ZfSvO`sw{8BBB`*CwR#=!9BQ z@vBAn<^DCq6H5Fggk_0S$;}fUTnY<=!KSOT z-&ZZ1mZA5-aMCRd)*@0}cDa?S?b+f}=V$ZwYsOU;y|j>>ki#jGy@?+Wtyva-@ag{K zobG%ZKFS(gM$vh9hKw z5!d5AzOxCVDMeJN3FDC*fqO^z@UO6g*EX#}uAUF{CMh-DSFacb|*p4ue{=d%*$r6^J_BQGT& zn#M%X=PHsI*7%~t3js?uN8yo}F$5cschhmsn-#<{v!rLFW*6pe?puf|tO0PYf*d#s}-#e<}7t60zA?s>h}CBQa+ckPbmjBWF; zy``^ve=0w-ZRygfqkk(oX7fjPpviW?RR$|U;dh|_lmfdq_y2k1Z+4RZV<~2#l}DjA zY#+&Ue}zXhdK5164$H<3WLd;7FPq%W7>$ZWM8F`i%k5oaXQUIc9|HAp>{kUG&pJ8y zUJk8iFJSV<{@tGP$%b~366ofi{S{Vrvv+>2w(ONbPtBbDrO)rQB@S@A`N9SL%&m`= zo$X)jEGW5^eEpQaXT_#%$$h=oO3bhS+(h!y_$$Kt+V&RYyYZG~W|PC&I5m*ln>|0^YhYU!2|fQk$hmzR zYKq7c2gmp=N_5%q!_&AU8 zP+~K^xDtU_+v-W!06n!+gMov$X{wGH^+m!8_-(;)l;n;2>jyuW-pl`BTAQOc{a~_E zz-)7%$AUW?f>7Nv=PZV33?EA04<^V{3fm8+(?6#IV$3Z)|M3(012mYn@iJs11L%-f z5%ihG@}G};|27gh3lg{F?jzPY2C*xnD4H$wFPC5U{b1T!XN>=!J_T0zG*1Bv{}!C- ztKfuH1QT}l=kBV_y_pl%iozG9yheOK=q@9H&nr!0F*-Aq4cxF zttVfto)e3<^2I9lYRAiVi9XS|Vh5+EfbBAB>~K7=HhGY$6MGCzpBzxw_t~|Y{{Sw+ zjDLxV_Z8n5)(T5lMKNo*oEoBU8-s78!HmbH=sSF{)b(`Q-E^`zU_;>0x4Qc~|0wBF zg&2d0i_?&ulrWVSTz3^b*fJOk*DDeBEt2U)9!oBgJj0*H@q24d#uPQ*dj>i}h`d*y ziK2roA^a1P1#r;Ce=#{Qvzn$DJ5XPwtN{-j01Vipj3&T^-HFhJi)J9$&qM8Q?Wf0} z+)8U~wKXLs4p%`e ziN1Ub6>8mti_v5ydcmudB|*?(l<@4BnO{>L8@!R@)`O*9>`gE*mKhGl{heLDvokoQ ziF~4SfTUC)JF%A-^*`S#XA?qqX~)hUg8NfGV~Y?=*I-UW^SYUAOZA1Jyn8DP;9E}8 z3uFybjCWEVLY0w~Djv2#AiW8drgObmN5GZ;ZvKM8uq9Af1LlOm8v!OU{Z08WZ7@Cpq3;JmFSp2rqHUw@UM`?y^L3;8+>yf z&NzVvv$FbkitB7uaEi>C{Y$Uom`4Sk@WkU;eX@ju(?WK!9#>Q2fQRRN$6-OFfv^f? zLj5NGnIIMCCz)Y@aeh~|KiTxy52ouNh&9vki%wK@*}fHeA@NH^;z;~mma_o2Tj%w80!T?Y^sO##bzI_UTPKs192`AG>& zRKb1=I;-9a+(DrZJF}J{y}$sm5U|cbkp6AA0P~mt&bhySG>5uo4`$d$4gZ(Uq9^{o z|2)QEwrC5a90v3-k(2S@=aT+L{=Z)Txg6*ISdQUaKOdd_V;d7j{Z&i;_4=<`^Pd?& zYv>7FIkonQEX^hly6ly=xZvZ(s1o8r#scE8Ct%@rsv_Bpo{!|DUR4H%DdaA1kGKi=_UaF&;m&KWIOl;| zojIw>m;+mhD@CnZd%T!wCVqJYL<=S~*?R5=6MqeKLJbL>fJVW@g5c*29edMFN>z&U zi6hpL>5i)>O+F>6bt{iisDz3r&0Ujd7Hi5RVKXY9AxKG?2wLA}e=rr-n!SDFs$BBJ zg9i?ZpSC%Rc*3!Q7|e-)?ef!W!Q5cTB+i(fy0zf%czbFsrnb@PR#76mec{D@Ugt`P zdX2Ed{p(9!%}+>lDXd6QB6Y33(?O^Wb&vjn9pI1S*3y?E{B#+0r17{ zFk(WT2!Joe#b|?;DYyGk8GN-YEf!0jg?^XjjdU(n z#4e7}(HB>1Q!J*u2R9J3U9Rj+H1L-leD3>O7NQhcj&c~Z z712u~AQ}-dFt%!9P8gEKE1!}@+ekQAUG3=X{e4*G>GS8e{cBR2&+V8L7)R|67G->` zP=W4Zuq?p2Y4%Q@|{_Wz`OG`Hs z`=sw&uZf!&V{I^bKPjQyI}0rm0#LJPCV2RI5PM5GK;^1&C&c??DW|yXl=cfLSSOvW z;4=^n!HveK(pUnrQzQ~3L#OgE<%0t!(JvtQT=ZLR6UcoX^?hCC8Nk-tvt zXa=2Xt;ZpI7fxNw;_E)7<9VHH_x02)y)pM`&rq4WZUj|&EaQYTl)uLK73fK6I8mV5 zrV1B0*k7YH@$p4QpX@rvO=HEtt^2G;IS%BGam++93gCnt9~%bCKwrC0Iq6IZZM2IU zm)Jc@%b1YY!DikjE=d_KfbjXb*~S~zatNfIth~h?eqag`KqHf&i!Rh_6e-U>r}rdQ z=`V(mgoDtPbEm-;=(f#sc6D;s(>wA{@45`E`D55`zKFluc5SZ9_+I-nEb*`tC2bke zyj9M2lpudO%2quE;Z+4^!#bgdLrh4ZTSkW)9v!^b(6{8=V?q1lX?J%|ac?ak%3ypH z+i^KI>%$e{-XCQL&h6~qUpQ+$lIL;7WbDIqb|Ee4aHE5o<@kGf&n%H)m2a4Wc=u{V zjt*M6({q39!3mQ4sn{Wx!+|coPtP-adCaa{KL>kOYHF7|^IHY=zbdK!SNwbYPy zChXIQX6W$dgj1AE0aE%k#Y)=Nb?9mx7RA4R(v~>N{`JaKduO<1yF#dmf?|E4q8Wh1 zlv~*L2jb{t{GsQjp=9YX&BP}waff^kn-8nR#lP3zvQIm`A2WywILfj*u|RepF^b6P zJacx?K#fRS_ocywMbD1gtvE}g#=}(+LvB@5Q`O8b@32`B+v=eaR(g@%9{cSmRuh{S zdIoXQOX7sZN!0>jg{?@@gE!*a?JKR!xj-ky?Lb{7Nb!xX7OZ1KQB^N}VX!2bS@S+QYyuO1v+x z2~32;z;aqhMoC!9(@Bk{G&{>BN#P*Ednp!Unfj|u=u;CmTb@o8V#a0O@kk|7KZj%4;PvF|pCSpkoRK@9pjJdr8-vgc zi(%KL43}F$*|zmB5)~dcYah)nHNq_{OPg9&`Q~^j_v0=WF_&S>>YpB&x&|;u(#8h| z0w~BU(tT#f+UL^cV(JGQ2EC=*5)HjwXUD{ckcI(DE8JI&QJ$rrzFRl!vJs|vKim)7E45^gg>&-NNJEuy1 zvWtWHyN`%Px{avCH#jSUc^mD>QlH z>M_uh-R6QNIY*Z|hRo9dwi_CCjPS|cxi$ah#=dg{$SrFKP3V=#l^#^y!GQ$*^?I{PU`X%-ME^W7I=x=;=OSQ#II>$Fl$_; z#$BW-F*#+nPifGzpy~X_3$9ZiBj^Kdu9G&l;R(-N+E;R3%y!=|@-%ACykzUqI|P3j z@TK27=(7Gva5l5*xOGC}>h-lJIWI(lhHM@rXhlq5wS#xi_LmLHB7I24wnTPv)|8b^ z05%M%F8BQUhldk4Vh+6%czPugRpo`q6qlzQB$l)!`ig6kX2R^FEqZ9`udQ?lo8?ut zhDUS8Zqh$UpQhUw0=gU-t*VnqRSsAifxRH$^_W&ZC)+O zA_h75pNf>M3qrsUBUtKTfnY#?D z6oA&KpJ}B)1o71{eE^GbqW*v3uM4{wVc7A=dQ{`VNjWNqHb~xI*qX-7Ix#qawR9-_ zF?R7FJ0ltc(5kkCx(A?M_0UzdoHZJH%=0e>FZJPjZ}iqtU&M+kSKPBvwjY`HG*`GzGxuAl61w+O;H~mTs*il!v`pRc9nWwVs9by$cyV%Sg`OW(^N4j~0^d-JU+Wue?R{?5oO=u1CTImX6 z@#_bu?|n^?Poz!SHh42MDpcGUjh*R*&;n`Fv)!^0TEM;$Arj)>WHiRoQT zkgE7#DtW0@M|BbKvPSct|b5SzE%QUL{@7W{=_2F#%W%lW5`i(t` zWjWz5_LilUmJUUAXF@5P6w~j16fd$qoU}s3ylFpoDk@KOu($oox%O^x)uRUzy5BCv zorc2wVKCrF{OzucU*;W{2GDK;YK%Oyy2aWhN^kYNzb39=mLzdNK$E9mco@v~!Pl+s zUmgJD3#V26PRbxb37xNIZjlAk=pONNwf={l$g1iLthirNO zL1oQ#&fX z6_}KmmJo9SUQqz-dQHSu6cY&{fcm6|+MZ7TIQSWbG*|uiah5{pZk8W?|CuQ$N0DKt zCHMbn2^z`wqngotk*F!N$RA9c@Wgg|!7GlUPj*2=VNvu~44V*_?5^(d)Z}zlZP{f1 zB#XX}UFZ?D++03YkPHIst@(f9vjpSY%H}im+)iJw_OooY< z(i`KN{5!k$j0)321VZ!9Wn^7GhlMJkE<30viU@>;y7JnTuT;dV!J~?_JtpX!rWN&R z1cyk{nEc1?$= z9kiG5zM9r`u`RO{M5N>3{B+~IM#p~fU4(0&ByXAagp-c3ABY`|ng{(=BqpSySKNK% z1pGow`wMRouRWcgzG^4qee`OiP2i0R286=hG$9mqxKBAeQA5Mp<%EOt`8>7@_A)=1 zjz2UWQ*Q~9F9`k&htz0!v6W{8=8mFV=1+dLO1XK?l1529y()V5RmH8F7P$zXGXm<4 zwNuql^+yd8Iflvcr6Mct#!t&2k$Bz>cgK-ttDJ}p!_+e!JI1CBbA_Ezqj#Gz1T$s0 zxZjL*Wp&-4Pc^mDhmF&F&F16uom$ox_8++G*D>!lJchlR=6s|ct{djfm96*jnOwC} zqVhd$K)%=O#D~0eET5(*662dI1XVn=Mp=zil0>e`IP71%ftSR@tqG~;n@e%!_oMd2 zzPRQYOY6gTW46+TUB;A1*>Qnxxh__nO9h=#{=U5}cV>xg-}Z(iAg({KSgJchJ6|%G z(rg}lsDGm0mdo9{;_j~VPy)W%Q@nYoH=eeG;^Y2$gfeZIddXedL@;_!=`j&o$t0PM z$}W{9+seuKmlmF{8C~KWM2o2IP}-SI;qur1IrvW2IxBjt{62>>^ovA)wb{VSiE?{t z3-{LBpLmnyFpq?LO#EOH93E@RwQ?OQGWL)#=8x70kF}t76}$|)J+;?3AZ?*dT%{IU zGqAjovUM9XbP%Lp#Dt*QrZAM9PW;&8v38S!*YkgW-w&~LvyE8hy-|Z2Hj%Ld2?CUQYiA$5NtN}a{*bEaR zjztri`(Ib}iAWimwv~@*plE9`4>Su8c#VVR9Vx6y;uhI;5~HCCH}polB2( zr_#;BHtX2-jA`4t%$Gxz^9Xhr==KcLG<7lW$ZsN0$}S&iTWgM`RlZCO)t`e}wfe_M z##^{li|zfCr+T#gQxqQNIRVeiHyW_y6n%@dZocQDo>s_M?W@;oB#$ zX;F+Y_;@60^(du-fhGK4>hT%(G^Ryo*Ys>^GXG$bh(f_X(r2M}%(>&hai6<`J`GO) zMjnt4((L-+xF7DoSVPSo!9tTRZ;Q^;fb}TRjN14P8dM~I#3rkGZ%u!Q$&R_<=sa*w zh)MLm##1$xS~p5HLoWh24nV}tN%?%`eOfg=rbc~=(U0P(@gQg&C-*f8C%(w}AMCw% zSd`1sFA5@}A|Ocxgb|5?fJ&Ay7|0@`BuOIzA|N0+GYTRZ1Oya;kqiX^0~=7trzw7G}lAxEAZnJZo-n2;@t&Jk>^7bM_Zy zqQlI~12~^CNHwv@#%~yzPb0#hR5h%)()t<-tWj#ra7K_#T<7g)huSZ;zP$C6dLml6 z-uJ}0 zDA6tXl63thn?#N2z391`Xbj{z^f4r0{0vTOa*fV)z9Dkqu7TCv#fpS@`UM@~YY@D< zyyP3E*FvQC1I)>IvXBFde8EsgSqgZ)4s<0cYY4#mw2|a~HQAZ9r=rCYoVXI2UcHKV zjGl*@Dty)vq=rOVO(ixRk=~M`M5o5r?HFgREmapJ6vJh~!1C1ZCW@Urn9gdU(~n5)JLSI;j8)ad za&-nJvOXNAy5164QI_vYUNdyl?1loD!eKsBs9G{ggXy$X07Z{T)rqpT@e00&NaqyO zzM`%2zI%}N_Qyk_R-UWg%&su>Jjjwj>=2p;L092HqSmUlM!cxFd6nv()pM17B5e!v zN^U$HO!_>-Odt-Eop8*2%hjPoeW9UA}P@Gx2GA)|#zD+rdS z-*Kr0-DPy`={9y$!R$eVXNLyq0}>vN^EH?$i`?Qe%bBG6-C4{LV{F{~)Y)CpJbk+O z-F|6`Y4t!D6JGcT2;WF&kw{yB8LWiyDGP+QPex0liYlMY)|uOj8*ISNy9T41S8Vfe ziuxGTGwZ4wM^Gt`_gW1M4DKs&h(m^tvR^7Bzn^-lGQ{K9bcX1@@49vKHRW{^iMa|3 zlXB)N`cn8(Rz2*Z)9Ff$^feDRL_n!Cly*yfa7Pof79d)!*sxcUfljyrp(&mXZO?75 z8h4~F6Tkm9M(o7gjZaJ$P$`y*rs-F4tUnKRIJ+ekS{7#MejVc8pre z6@hy5HmCdx(wJSU{eT05<2~?P{EwrN{xANEk_;R;4igj!7H!b^waLy}c<-%wq9>6T zPp5tRTH|&0=bWPf?-M6=))06J-)6+7#ziOwECaX|Uf{$$iQDv=2#6sgj)Jr5u-@+^ zIlJa~0-i}@(sPBM4;u8HL>QwIL^!~Oo&M0pkq6EuEh}K&S#9F6Vx48N6Db_437>EvaBiFWGT^$Dm_JwJ(Jnkz9389Ga_I zA81VEEePc(>=it(YZ|Fk_gPLS%Kw3k?o%&$Z?GKJ`{RLYU;b1*xcqm(m~QYYK-%fx z6~KV}c-2MC-uf^ny=LwL#@h?(t~uhJiC63*a(Q0=%B9`qlwJ8q_XXeGyCfl|eq>+i zlr~pXt*|%HqAz0wgU$2Co2?|BBSqhqlt-}AgbnI1;`5HUqK z^jiveJOLj48}6&Rw|jj7w<%_m)4@F+E}}WwtGN*pu=BLm${}z3b4+W?sYg)0{92Oz zFxmLKixZ5poL0lC-{LyT-JBjT(oRKQ*N9dp3Bx~c_a6AsM+eX$x`RG)0)Rx35dI{* z*%j;nf=xhV5jp^BfY6#<6&KBjVwqefj0?USfV;up;?fa}L>_r#>$FDX1Xp$91h?p0 zpY+bkFb_wzzVrA8xYUXlajD+ts!!83aX4?#@LoOPIL&ir3ptF$J>3a||Ipck4uu~) zLjQV1>@~jrPI7f0HAzEI?*yQS5g_K+T|@va{yKJ)Q<<&6IVb7J&D`b~Wh3CwQs(I4 zPXCCD#nPyE&0q*&rEXNOD}Ci6U-`Rnm36WN&a+x=PY};aO&50JFY43aN#I1O+Yk(J zII-^Ff{k&5K#R{NVY#*XtyWF*s5&d|!Etmz+p!e7*!du*YI_>GcKfeJBiCcF%Etz^ zB?j8gaKuj|bFcA)RatT7t8wQ#w_A=(nQ%N3JI=s3?^{H=i5xWsGGxO}*am=MN(z*g z6#!5CX>iLJ@AHE{rHI&Tiyj{D^7^9gE8IV^npm+4^cC6*vP~zL+<=|1jLU6rd~uV} zN12javDDL)Af?&usf6?8c}d~R)sJLRCOg#g#g>=%+vUW!0JCJHejqaVrp6N}<_JLa zC5<)wN?#Rsr5GW@HgamC(e!{92^8C zgSG*MvyUR4m7kv2<1P7Pjww07i%snA`{?M!A)Y)3BW^fivOrf^BSosEI(Kj{k$UP$8~NM18t&-#QT^WtC;yA>MSbLV z+e^X&QpgGmM$Nc}6RS|$4!U}czLs(F{jZ~{D-G(f#~z+jW^&?ipP`M2_i@m#`4!G% zvMAhXZ7kFN!8S%Bp$lFmH|Z_8exGu}Hp;aTP?HeM8M0bio@;4R`l>cOnm|Bjj$Mo4#d*Xpb-yT$Wo!*z7t3!_; zYa@3SKT&7Or9{JabNMq+IS2x>S$L}QcZP}`5 z@m?~-^6te3jS+!zN!W#r&u6z-t@bXGSWl-(JY%s#(n*W@g`{wf^{9J~ILg{1C?=D* zL}ne)J4>vmuWf3`d(mzg|GUQg|I_bv?LjOt_X%PdYJ;)-mj?z?bj{z6@^fr|^X}>x z$TCoXbO306el-9JsH52f+o0}ZtG}Kmx+}&TZ*C6rrVN+gXIJ%wb?U4T4sILcqRp^E znuJ8C8B1o-+Oqh*Y$2Nans8dP_RArqk#cw8_(=@^`g%Rc8&~Wp2|pcFgb0@9@JP3B zwdJHA{`_fOx|HQ;=bfuMH=l0A&8c29AohJjwyNW}*YFJB3~u`az#mKrHSs?dnSgw| z6F4J=zm};_A1+Hf=v$AJkO4Q5^6e~!LN+=BCr-(p^*n{?#B;+Kfs2Mxc>`S{?qXeX zS!AU|q%&KbZ2YYQ)@3Roydjvzw^Xma$eX9{;yaC^9#wCm)y;DvA5dcyS;!7soPgpp zXlr)aul&vJ5`waQIv}BofIt&rU7Z!g>J)7iw*+nctH4ku@+G zPMDn^9l&y>f-DjhPl)8MrS%9ZCkTTjvrJybdn((8JEM#A!@*29D5EG4G$Rk}o!^D? zmKosR>lAx(LQ7zc*(g8Mu`Nh|5x;LO+j;D2mT6r2o1L#66)MBoZ$cYKErc65$xUM9 zKesgA4IPW1*gkYJ;+4$O^c(2pdsKl|a}x*VI8C4)hihr)zR)1~r0I18{tMVk zEYBCiB{y(U+sPQ0l>s+QJ($9kz4JA5T9N_9B+u)FQl$4WTpZ*jQ3fl$C$pV4rSD+(#7WX7$JQo&$k8Nm zozrt!GEVe}=sD*P8Z`;uNxpbMhUNqCPLpdCqlz?vTW2mBXVxM8fN_G?Ma(~b18d0Zs7K@=!JruWWbC$*{p2eS_Q-p?=X!D`HGjp3Z~?aJXX}g(!>kca6MDX zKYEii&4BKG44?fKd3z5X=iJdv?c>yOk%=Xh>rkCymVFtH+X(Gm(~~2^P2DXVj+%1H zJcFcBTAPMeDpN0IV|ig!pxH~)eI(0?muw9>Q($5XC?=@ax&SW_d9G{Zutb&M z0uV(Z%QG9BdX?}ww;MZAPlJoskH_!iX$v?^H$^+74$3CEq#Ek#ehYkm?On0Zu`sCk z6WR+e@9IB&tz@6l?Wec)uwSQQZUD0jL6wQ<%-ViJF?!0!Zig%3?|bAaPx1$@-K(du zE8`sSWph`@KjLDq>70A2c)M>eZ7bJU@Nv9EkYGr;ei_IL((xcUh?nHw`9ogCisM61 zA+{QTk+rF}fux6j?y>+54E2rNEc^|X*{**D!mym}Rn$SR?XqzI)Tt05zTa>*zp^N% zJpoP6!45`>L5P|9!>hh}iNEed?8o`4dL7p&7u~~N*O-k}r*_Mgb(r4dQjnSnnj>oh zY12AD#xxD|iaPpiMMnYJ8m?XPvQ_PdUKxEGYg(mn>V;yB>n|VKyyaZC`o@g+2kr`U zydD-2EVSwf4RHBRGUDD}@Lmt+v$!gtXMOEKjGL)~k1i*vfZ1WM&z}sdO!(snuK)I~ zg!;&ZA%S~3zTRIUMW^dKhblj*VNau_3%OF%8FMuBulIC{Y?KU6hl!BCeUnI%v#1p+ zQQkgup07WY_i8k2a(V?I_LMBZBAVpi-7N33-QrzY5txj$ zIA4%oc8QSg)MUacen>*vBxo}bWvgb}054gM+P{RC`O4hNCD-dC=v``<~# zRn{RP-$|J8Oc;(@>uDsbGH)?`y=Cy>NB21sr|J}fQnDVMb9laF#E7NY#^A^?APZ`h zmxEizsFgO#_SCw*MBMPe(;F9;!Xs{+b&-u;>8{t#vQaAa%5mv$`kFeNC6b$sQbkyi zjFaOkcvz%)0(84Wy*u`WKMBl;Gbxjf2+{UQrFrBxd@?9J}xW%vvQ&yEa;wi7?Y zieNz~3pGkZtam|jO>oBWqVVtnw*71%f8*hBS_{f&X@R$1m5;>J->6rUZ_i~!u?B`+ zjml!SSX{G>nI9q}JE11-a;8Zb77r^4$1@0jLVN^E7Uso*SmctdfZ4}4_jB%wR$Ve2 zy+}I$Rx{^*+mli6hnMwEfp6}>UqEO*^|SFzI4(HjTB!BIO8qly(=q&%@7|p|(Ur59 zVHb|erzx@eASruAQ=9#+XLxP}zu}&xLz`r6Q+D#Apjl7*<`(p3)M{7gC@t(=%>f?p z1&&665Cf9WU-xthSvZ}@7o+;Ph#<+fFjE$qdZK`rL4KMi4s%WxY*5>=$=Vdd2FpfT_|%3MYGT9omW5Vw z7?a1ea&sz{O8gf*1Q+jIh9wAreb_a^tM~o*8_5Psg$m=WL5miTtSqG85*uoHPKrTY zKhIpCY>^Q*v|YB_hsp2jS+ZSyr`~PWBQim`*pe~K@@AYe(B$!5!|uj&CqiS+(Oip* zd#i9I;evLSa?|DF5$y?E!`6&9RVHo^~3WdH4M*gt9h>Vf@V zaL4xlx|yB$XM5SS52C{hI_k#6YGa2}&>Dsnf}M_qz5US@gPbVb1Dx%EoH2euwqb zX1llE0+br{7)raiG}TE34yUx5vN)csr}oVH-GHpAOli{Gz0KdBq4&3EBuaXHELsF)^vWvdAyk5uQNS>rxzj~n@7WkTDSM7JDYt^BuexP z_~ll|Q`N{^`I69dX^dF`>KP{G0Lw3~HL`TDm!lxWAAe%kczoH9k#zYz>E3ayP`I~r zpC|cbX0ZVEtbkx%9=hbdA!D6?hxa}oHHEeWGTae1Y>VbDHRFsm;^--AdEz*f7tKcQ zT%C9!Q8eViq^%Z--#kyyJnP#%qbxd}n1By7cSuMG@}wqbc{NHyc+Wu8Rq)&3j+zC6 zY1p7N&}mGsD@H(DRdSQlmvCOn?0S>h&{*`|gD@J=Y_n$z~SXN!7|7lORRQA!E2M=gxBuB4(b0LlD&UN)~hMy9dV6~{QDMu^4 za5vo5j<9~AY&SQw+Zsmp;90Zf4&K7Cth=&ckG$B$cDSm;;cb()EESaPuQaExG2 zbQ3f&dow3xEYMH+YDTD4!mxpK6rFp0%39Dn{f)`JGSWzg_!9u|As4}KTbH#^Nd|5c zyMBY5m6dc2>ePr9rKD8av^tg-vVNUQKk{RdRZPgo%;`BkrO%t~%#cO|3tppZ789}q zv+Q-u;_kIE4Lo__zJ}p}B#HZ6xs>g26uOT<@E?>8 z7oh89h~q_z=khN{yqp(kzBX&a#I&IDMR7rcWLiQZg@kP)+S|bjh?OXcbGgwit&z2K z>bigmli={Ulq21F&gX}oa|pe;oG?O--(=iEHKJIp5@~S;;{q6BL*k7mHBU0{pHm*v zN;8|BBIWe)F4Di2GU%Mtv_-)xv7n-*e^!X~%2h8KOPthQ+{m<)RZQ0dY*@U2z*J>| z=*yx8ox8O~xn+l6jJ32}cNmHDp$SGXd&;NR)a>LBUXxkAYCGsxVt8VE+&IcjvbFTu zZZ~6R_4XwBC$evsZ?6U6CouDkoxyu>AA!}Pc6-W7Ya!*r#5oJ=FOf_DoRg5?>-d7I zeRMjm78iAm02y>f~KsWc)e9pVpW3Z;R+|!8<#fU-TsPKLrclP z)S?ti6IL}2!%WLuXmhBCBp)raP(^6V%Hn)Azt(VDtPh=v@NTqSryIF4@L1fltc5J; zLsTClqX*)V1}u@;zd1ZKkr~sTSMKCsn^{wwp0?~-N}HRw(0|@u|1i1aZoY7bTrQN+ z^9~4sA~dAmD9c{@Ml8!rO0U_;Qb)+P{6@>0U_mYAmg{yQy_@A?{mm1I+lr+kIt_>d zS)`l8dtA7pTl-dV==w!*jdsrdZW}rE*Jf=`U5z7!Vb*;rVkb4^8P9>hY9#;ak8$3J z8+bO7dx&L-d81$>C$#M@vjB7{kmytl4X_xjke$q71s)~8HVTX zS6iWa$^>PRaQ=3#7ScJ|jh4elWR}LWXOKgkQ>6hp-se28;ku@)FIrqh1Ug+dH?b`y zYfQDMZ!7KSfVwx%ZS6K$E$RK6FbK*|aK7Dl+Zlv+oA6=Zsb02Yy`riKbW7@};=YTb zlyd3%9@&aCEYGH1uV1=$*a4Bl(hlF8CM%08j&&!j@ zP;2bRy1hpg)`v#w>jwRFZ;Ew`1Wl40eW;(IuCnL$D$$`EC0Yec6Y?`SiwALt=Z;FI zFgAV5(^oCOt@!dCHH!oQ;niJNb#WV)C(W!&Q8dw0k83RNC@ zizp7lSY;VXn{54Ky$_vkc@TTcFJUFQ@;ZZ$R?6G^M`g=CFH(8BLnq^jv^_b}m!zf8 zECFktG8u3)Wjhxu@^57&SKdAwx^g9jKPvzInR{W+bfR%C#N)7BSJlZ>HV$0#WaXfz zN`D2VzJ4v=tqNZ&OQHdy;>1IeMs}y+M!9Jj{-Gk&NOnWwMNG4gU=<~1{$BNfw1r)! zeqMqT-%v1Yd3iTdI*Kofh4js!pgu>K)nHmswu*GVvys07hhUPP=N98wuE(bA>)1)V zQe2M})>olF?@3F~J=L0g&CuLc^oz=yw{`5VFrArI>aa72UR!P|Aa+(DKEaOSQZzC9 zi}a%gc?A!bSXU}XM@8%1tV5`Ek?NI3Oqdbkah5bsRl@sK*&_?%RDH>%r8QOE2+gD2 z*H~9xn9bckY8ZTKvMYN{(r!oLS`L6t46t!xY?o_5l%vqY?!{{XPD_JNo)~GBo~$cu zJ9|g5m?_mv>Ere6%aSrzuP3O)q$jM|)|({1JT92LZ8dI9BV6w!@)sa%aZMJ{pL*Wcb5{$*c~69k+s(hnR|}|8`{I&IAe^|bo5#i&51?(Hmcr% zQrf{bYnyh4fyqFnGTOkBnaJ!)GMOdYsm_&YCv29dkTu2wSnO$YrD@+up1>4k8l2mV zpYT}Oi;KCGJ9>Q}Ib)cA>nnpEsp7s6;JqfPq`PP;6R|xr~`AA89UaePVkD)#9 zZ(xU#HepfBbzi#l#rWD3A?e(` zj3v0r#c;zmcT7GF7b>J8C$LhruWW0eVkqc|lJt>i<(E7&>BGMa8&cf9>%0A+1k2fj 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 ZWILaG8+aM&e^sjE-}(H%L-u3x{{q^R*FFFM literal 0 HcmV?d00001 diff --git a/feature-screenshots/6-local-variables.jpg b/feature-screenshots/6-local-variables.jpg new file mode 100644 index 0000000000000000000000000000000000000000..0abe97def1a4762878cc207971c5b19be0f19a94 GIT binary patch literal 120658 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 literal 0 HcmV?d00001 From 878c7714fca59eb2748fdc614c374ab457c6c813 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 29 Jul 2017 18:20:02 -0400 Subject: [PATCH 023/160] Add link to wiki for feature screenshots --- README.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 81083f08..429158d5 100644 --- a/README.md +++ b/README.md @@ -6,10 +6,14 @@ Better Errors replaces the standard Rails error page with a much better and more ## Features +For screenshots of these features, [see the wiki](https://github.com/charliesome/better_errors/wiki). + * Full stack trace * Source code inspection for all stack frames (with highlighting) * Local and instance variable inspection -* Live REPL on every stack frame +* Live shell (REPL) on every stack frame +* Links directly to the source line in your editor +* Useful information in non-HTML requests ## Installation From c103cd7ef932e2b7c758bd121a38960d5d89c8eb Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 29 Jul 2017 18:56:29 -0400 Subject: [PATCH 024/160] More feature screenshots --- feature-screenshots/8-xhr-shows-text-error.jpg | Bin 0 -> 107490 bytes .../9-xhr-error-in-manual-console.jpg | Bin 0 -> 152194 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 feature-screenshots/8-xhr-shows-text-error.jpg create mode 100644 feature-screenshots/9-xhr-error-in-manual-console.jpg diff --git a/feature-screenshots/8-xhr-shows-text-error.jpg b/feature-screenshots/8-xhr-shows-text-error.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7bf93a8882429bd8f14fe36524d77d32889f00bd GIT binary patch literal 107490 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≀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

0gBHO3iAfUl{szXEw6$7fRPLbw%3fY+Ikgxeib4 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]%051|ba(?$M&hYXl4N48~ox>B;SR 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 literal 0 HcmV?d00001 From 31521601371061130c0d14ea0407cfa204f0495b Mon Sep 17 00:00:00 2001 From: Charlie Somerville Date: Sun, 30 Jul 2017 15:40:18 +1000 Subject: [PATCH 025/160] 2.2.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index 2096403e..eef6b123 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.1.1" + VERSION = "2.2.0" end From 05ab294c1f6a7beb0963b33ba11ee67f545d9813 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 14:01:29 -0400 Subject: [PATCH 026/160] Remove partial instructions for editor config completes #379 --- README.md | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7b447ebb..a9af8d71 100644 --- a/README.md +++ b/README.md @@ -99,13 +99,11 @@ in `development`. Another option would be to use Webrick, Mongrel, Thin, or another single-process server as your `rails server`, when you are trying to troubleshoot an issue in development. -## Specify editor to open files in +### Changing the link to your editor -```ruby -# e.g. in config/initializers/better_errors.rb -# Other preset values are [:mvim, :macvim, :textmate, :txmt, :tm, :sublime, :subl, :st] -BetterErrors.editor = :mvim -``` +Better Errors includes a link to your editor for the file and line of code that is being shown. +By default, it uses your environment to determine which editor should be opened. +See [the wiki for instructions on configuring the editor](https://github.com/charliesome/better_errors/wiki/Link-to-your-editor). ## Get in touch! From d295a8216af59e0e6bfd0a0f0a48b4ac93f4d162 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 14:32:08 -0400 Subject: [PATCH 027/160] Move `allow_ip!` calls to the wiki --- README.md | 31 +++++++++---------------------- 1 file changed, 9 insertions(+), 22 deletions(-) diff --git a/README.md b/README.md index 7b447ebb..39ec50de 100644 --- a/README.md +++ b/README.md @@ -37,27 +37,13 @@ _Note: If you discover that Better Errors isn't working - particularly after upg ## Security -**NOTE:** It is *critical* you put better\_errors in the **development** section. **Do NOT run better_errors in production, or on Internet facing hosts.** +**NOTE:** It is *critical* you put better\_errors only in the **development** section of your Gemfile. +**Do NOT run better_errors in production, or on Internet-facing hosts.** -You will notice that the only machine that gets the Better Errors page is localhost, which means you get the default error page if you are developing on a remote host (or a virtually remote host, such as a Vagrant box). Obviously, the REPL is not something you want to expose to the public, but there may also be other pieces of sensitive information available in the backtrace. +You will notice that the only machine that gets the Better Errors page is localhost, which means you get the default error page if you are developing on a remote host (or a virtually remote host, such as a Vagrant box). +Obviously, the REPL is not something you want to expose to the public, and there may be sensitive information available in the backtrace. -To poke selective holes in this security mechanism, you can add a line like this to your startup (for example, on Rails it would be `config/environments/development.rb`) - -```ruby -BetterErrors::Middleware.allow_ip! ENV['TRUSTED_IP'] if ENV['TRUSTED_IP'] -``` - -Then run Rails like this: - -```shell -TRUSTED_IP=66.68.96.220 rails s -``` - -Note that the `allow_ip!` is actually backed by a `Set`, so you can add more than one IP address or subnet. - -**Tip:** You can find your apparent IP by hitting the old error page's "Show env dump" and looking at "REMOTE_ADDR". - -**VirtualBox:** If you are using VirtualBox and are accessing the guest from your host's browser, you will need to use `allow_ip!` to see the error page. +For more information on how to configure access, see [the wiki](https://github.com/charliesome/better_errors/wiki/Allowing-access-to-the-console). ## Usage @@ -88,10 +74,11 @@ Better Errors will render a plain text error page when the request is an ### Unicorn, Puma, and other multi-worker servers -Better Errors works by leaving a lot of context in server process memory. If -you're using a web server that runs multiple "workers" it's likely that a second +Better Errors works by leaving a lot of context in server process memory. +If you're using a web server that runs multiple "workers" it's likely that a second request (as happens when you click on a stack frame) will hit a different -worker. That worker won't have the necessary context in memory, and you'll see +worker. +That worker won't have the necessary context in memory, and you'll see a `Session Expired` message. If this is the case for you, consider turning the number of workers to one (1) From 5044173d623ef50314186d9ba8bdf6a8293a39c2 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 16:29:13 -0400 Subject: [PATCH 028/160] Move middleware docs to the wiki --- README.md | 29 ++++++----------------------- 1 file changed, 6 insertions(+), 23 deletions(-) diff --git a/README.md b/README.md index 36d8c102..cfcd2ea3 100644 --- a/README.md +++ b/README.md @@ -22,16 +22,11 @@ Add this to your Gemfile: ```ruby group :development do gem "better_errors" + gem "binding_of_caller" end ``` -If you would like to use Better Errors' **advanced features** (REPL, local/instance variable inspection, pretty stack frame names), you need to add the [`binding_of_caller`](https://github.com/banister/binding_of_caller) gem by [@banisterfiend](https://twitter.com/banisterfiend) to your Gemfile: - -```ruby -gem "binding_of_caller" -``` - -This is an optional dependency however, and Better Errors will work without it. +[`binding_of_caller`](https://github.com/banister/binding_of_caller) is optional, but is necessary to use Better Errors' advanced features (REPL, local/instance variable inspection, pretty stack frame names). _Note: If you discover that Better Errors isn't working - particularly after upgrading from version 0.5.0 or less - be sure to set `config.consider_all_requests_local = true` in `config/environments/development.rb`._ @@ -49,25 +44,13 @@ For more information on how to configure access, see [the wiki](https://github.c If you're using Rails, there's nothing else you need to do. -If you're not using Rails, you need to insert `BetterErrors::Middleware` into your middleware stack, and optionally set `BetterErrors.application_root` if you'd like Better Errors to abbreviate filenames within your application. - -Here's an example using Sinatra: +### Using without Rails. -```ruby -require "sinatra" -require "better_errors" - -configure :development do - use BetterErrors::Middleware - BetterErrors.application_root = __dir__ -end +If you're not using Rails, you need to insert `BetterErrors::Middleware` into your middleware stack, and optionally set `BetterErrors.application_root` if you'd like Better Errors to abbreviate filenames within your application. -get "/" do - raise "oops" -end -``` +For instructions for your specific middleware, [see the wiki](https://github.com/charliesome/better_errors/wiki/Non-Rails-frameworks). -### Plain text +### Plain text requests Better Errors will render a plain text error page when the request is an `XMLHttpRequest` or when the `Accept` header does *not* include 'html'. From 0f4d04f834a71c705d61675af5d3006edf58e0ad Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 18:04:19 -0400 Subject: [PATCH 029/160] Actually show errors from variable load --- lib/better_errors/templates/main.erb | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index 43046056..9c44c94e 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -938,7 +938,11 @@ apiCall("variables", { "index": index }, function(response) { el.loaded = true; if(response.error) { - el.innerHTML = "" + escapeHTML(response.error) + ""; + el.innerHTML = "

" + escapeHTML(response.error) + "

"; + if(response.explanation) { + el.innerHTML += "

" + escapeHTML(response.explanation) + "

"; + } + el.innerHTML += "

More about Better Errors

"; } else { el.innerHTML = response.html; @@ -946,9 +950,8 @@ if(repl) { new REPL(index).install(repl); } - - switchTo(el); } + switchTo(el); }); } } From 75ecec466e581e4301305bcbca35716e70fc3f21 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 18:04:52 -0400 Subject: [PATCH 030/160] Better explanation for "Session expired" --- lib/better_errors/middleware.rb | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 55bb0d7c..d1cddc96 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -125,7 +125,11 @@ def log_exception def internal_call(env, opts) if opts[:id] != @error_page.id - return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump(error: "Session expired")]] + return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + error: "Session expired", + explanation: "This page was likely opened from a previous exception, " + + "and the exception is no longer available in memory.", + )]] end env["rack.input"].rewind From 35a4b64463b1400ffb3a9c7d8266ac1915526036 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 19:39:16 -0400 Subject: [PATCH 031/160] Update spec syntax Remove the last few `should` syntax calls. --- spec/better_errors/middleware_spec.rb | 2 +- spec/better_errors/raised_exception_spec.rb | 22 ++++++++++----------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 0d32cbee..8ef4b519 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -67,7 +67,7 @@ module BetterErrors it 'does not attempt to use ActionDispatch::ExceptionWrapper with a nil exception' do ad_ew = double("ActionDispatch::ExceptionWrapper") stub_const('ActionDispatch::ExceptionWrapper', ad_ew) - ad_ew.should_not_receive :new + expect(ad_ew).to_not receive :new status, headers, body = app.call("PATH_INFO" => "/__better_errors") end diff --git a/spec/better_errors/raised_exception_spec.rb b/spec/better_errors/raised_exception_spec.rb index bb528ffd..76c51f72 100644 --- a/spec/better_errors/raised_exception_spec.rb +++ b/spec/better_errors/raised_exception_spec.rb @@ -6,23 +6,23 @@ module BetterErrors let(:exception) { RuntimeError.new("whoops") } subject { RaisedException.new(exception) } - its(:exception) { should == exception } - its(:message) { should == "whoops" } - its(:type) { should == RuntimeError } + its(:exception) { is_expected.to eq exception } + its(:message) { is_expected.to eq "whoops" } + its(:type) { is_expected.to eq RuntimeError } context "when the exception wraps another exception" do let(:original_exception) { RuntimeError.new("something went wrong!") } let(:exception) { double(:original_exception => original_exception) } - its(:exception) { should == original_exception } - its(:message) { should == "something went wrong!" } + its(:exception) { is_expected.to eq original_exception } + its(:message) { is_expected.to eq "something went wrong!" } end context "when the exception is a syntax error" do let(:exception) { SyntaxError.new("foo.rb:123: you made a typo!") } - its(:message) { should == "you made a typo!" } - its(:type) { should == SyntaxError } + its(:message) { is_expected.to eq "you made a typo!" } + its(:type) { is_expected.to eq SyntaxError } it "has the right filename and line number in the backtrace" do expect(subject.backtrace.first.filename).to eq("foo.rb") @@ -41,8 +41,8 @@ module BetterErrors end } - its(:message) { should == "you made a typo!" } - its(:type) { should == Haml::SyntaxError } + its(:message) { is_expected.to eq "you made a typo!" } + its(:type) { is_expected.to eq Haml::SyntaxError } it "has the right filename and line number in the backtrace" do expect(subject.backtrace.first.filename).to eq("foo.rb") @@ -61,8 +61,8 @@ module BetterErrors end } - its(:message) { should == "[stdin]:11:88: error: unexpected=" } - its(:type) { should == Sprockets::Coffeelint::Error } + its(:message) { is_expected.to eq "[stdin]:11:88: error: unexpected=" } + its(:type) { is_expected.to eq Sprockets::Coffeelint::Error } it "has the right filename and line number in the backtrace" do expect(subject.backtrace.first.filename).to eq("app/assets/javascripts/files/index.coffee") From 053e053350f3857069a86ec24ae881790ac3f4dd Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 19:45:46 -0400 Subject: [PATCH 032/160] Fix spec description --- spec/better_errors/error_page_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index cb9ebfd3..fe7fb3bc 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -83,7 +83,7 @@ def initialize(message = nil) let!(:exception) { raise SpacedError, "Danger Warning!" rescue $! } - it 'should not include leading blank lines from exception_message' do + it 'does not include leading blank lines in exception_message' do expect(exception.message).to match(/\A\n\n/) expect(error_page.exception_message).not_to match(/\A\n\n/) end From a946cc835aabce76a49b3a8c7ab879efb387f3a2 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 18:05:54 -0400 Subject: [PATCH 033/160] Better failure when no exception info --- lib/better_errors/middleware.rb | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index d1cddc96..1c3d7286 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -124,6 +124,14 @@ def log_exception end def internal_call(env, opts) + unless @error_page + return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + error: 'No exception information available', + explanation: "The application has been restarted since this page loaded. " + + "If you didn't do this, the project likely includes a gem like shotgun, " + + "which reloads all gems for each request.", + )]] + end if opts[:id] != @error_page.id return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( error: "Session expired", From 21bc49831a05ae1e923875f2a000f985263ab296 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 19:27:09 -0400 Subject: [PATCH 034/160] Leave extra files out of the gem Currently we're packaging the tests and all of the screenshot images added for the wiki. I copied the way that the bundler gem creator does `files`. And I removed `test_files`, since it seems to be undesirable. (More info at https://stackoverflow.com/a/20927191/1589422) --- better_errors.gemspec | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/better_errors.gemspec b/better_errors.gemspec index 78d2b97d..f6bda9f3 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -12,8 +12,10 @@ Gem::Specification.new do |s| s.homepage = "https://github.com/charliesome/better_errors" s.license = "MIT" - s.files = `git ls-files`.split($/) - s.test_files = s.files.grep(%r{^(test|spec|features)/}) + s.files = `git ls-files -z`.split("\x0").reject do |f| + f.match(%r{^((test|spec|features|feature-screenshots)/|Rakefile)}) + end + s.require_paths = ["lib"] s.required_ruby_version = ">= 2.0.0" From 797e9c6e5079a832686d28b3befb0705a48aa39c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 30 Jul 2017 23:00:53 -0400 Subject: [PATCH 035/160] Spec to cover variable-fetching --- spec/better_errors/middleware_spec.rb | 53 +++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 0d32cbee..971701b3 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -184,5 +184,58 @@ def initialize(message, original_exception = nil) app.call({}) end end + + context "requesting the variables for a specific frame" do + let(:env) { {} } + let(:result) { + app.call( + "PATH_INFO" => "/__better_errors/#{id}/#{method}", + # This is a POST request, and this is the body of the request. + "rack.input" => StringIO.new('{"index": 0}'), + ) + } + let(:status) { result[0] } + let(:headers) { result[1] } + let(:body) { result[2].join } + let(:json_body) { JSON.parse(body) } + let(:id) { 'abcdefg' } + let(:method) { 'variables' } + + context 'when no errors have been recorded' do + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'No exception information available', + 'explanation' => /application has been restarted/, + ) + end + end + + context 'when an error has been recorded' do + let(:error_page) { ErrorPage.new(exception, env) } + before do + app.instance_variable_set('@error_page', error_page) + end + + context 'but it does not match the request' do + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Session expired', + 'explanation' => /no longer available in memory/, + ) + end + end + + context 'and it matches the request', :focus do + let(:id) { error_page.id } + + it 'returns a JSON error' do + expect(error_page).to receive(:do_variables).and_return(html: "") + expect(json_body).to match( + 'html' => '', + ) + end + end + end + end end end From e797c3332c01f923943e200bd47e1f25778e4fbb Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 31 Jul 2017 00:11:33 -0400 Subject: [PATCH 036/160] Add custom errors for Middleman and Shotgun --- lib/better_errors/middleware.rb | 42 +++++++++++++++++---------- spec/better_errors/middleware_spec.rb | 16 ++++++++++ 2 files changed, 43 insertions(+), 15 deletions(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 1c3d7286..6915dd21 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -124,21 +124,8 @@ def log_exception end def internal_call(env, opts) - unless @error_page - return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( - error: 'No exception information available', - explanation: "The application has been restarted since this page loaded. " + - "If you didn't do this, the project likely includes a gem like shotgun, " + - "which reloads all gems for each request.", - )]] - end - if opts[:id] != @error_page.id - return [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( - error: "Session expired", - explanation: "This page was likely opened from a previous exception, " + - "and the exception is no longer available in memory.", - )]] - end + return no_errors_json_response unless @error_page + return invalid_error_json_response if opts[:id] != @error_page.id env["rack.input"].rewind response = @error_page.send("do_#{opts[:method]}", JSON.parse(env["rack.input"].read)) @@ -149,5 +136,30 @@ def no_errors_page "

No errors

No errors have been recorded yet.


" + "Better Errors v#{BetterErrors::VERSION}" end + + def no_errors_json_response + explanation = if defined? Middleman + "Middleman reloads all dependencies for each request, " + + "which breaks Better Errors." + elsif defined? Shotgun + "The shotgun gem causes everything to be reloaded for every request. " + + "You can disable shotgun in the Gemfile temporarily to use Better Errors." + else + "The application has been restarted since this page loaded, " + + "or the framework is reloading all gems before each request " + end + [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + error: 'No exception information available', + explanation: explanation, + )]] + end + + def invalid_error_json_response + [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + error: "Session expired", + explanation: "This page was likely opened from a previous exception, " + + "and the exception is no longer available in memory.", + )]] + end end end diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 971701b3..a26809f0 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -208,6 +208,22 @@ def initialize(message, original_exception = nil) 'explanation' => /application has been restarted/, ) end + + context 'when Middleman is in use' do + let!(:middleman) { class_double("Middleman").as_stubbed_const } + it 'returns a JSON error' do + expect(json_body['explanation']) + .to match(/Middleman reloads all dependencies/) + end + end + + context 'when Shotgun is in use' do + let!(:shotgun) { class_double("Shotgun").as_stubbed_const } + it 'returns a JSON error' do + expect(json_body['explanation']) + .to match(/The shotgun gem/) + end + end end context 'when an error has been recorded' do From d134eb89c7346c2b2518d00c1630a4b53d1ec1b8 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 31 Jul 2017 01:01:22 -0400 Subject: [PATCH 037/160] Specific message for Hanami --- lib/better_errors/middleware.rb | 3 +++ spec/better_errors/middleware_spec.rb | 9 +++++++++ 2 files changed, 12 insertions(+) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 6915dd21..ef2ffa7c 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -141,6 +141,9 @@ def no_errors_json_response explanation = if defined? Middleman "Middleman reloads all dependencies for each request, " + "which breaks Better Errors." + elsif defined?(Shotgun) && defined?(Hanami) + "Hanami is likely running with code-reloading enabled, which is the default. " + + "You can disable this by running hanami with the `--no-code-reloading` option." elsif defined? Shotgun "The shotgun gem causes everything to be reloaded for every request. " + "You can disable shotgun in the Gemfile temporarily to use Better Errors." diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index a26809f0..676af812 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -219,10 +219,19 @@ def initialize(message, original_exception = nil) context 'when Shotgun is in use' do let!(:shotgun) { class_double("Shotgun").as_stubbed_const } + it 'returns a JSON error' do expect(json_body['explanation']) .to match(/The shotgun gem/) end + + context 'when Hanami is also in use' do + let!(:hanami) { class_double("Hanami").as_stubbed_const } + it 'returns a JSON error' do + expect(json_body['explanation']) + .to match(/--no-code-reloading/) + end + end end end From 114283fa3c4a7c01ca7280194b1dbcea954e0a3b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 31 Jul 2017 02:36:21 -0400 Subject: [PATCH 038/160] Use Erubi --- better_errors.gemspec | 2 +- lib/better_errors.rb | 2 +- lib/better_errors/error_page.rb | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/better_errors.gemspec b/better_errors.gemspec index f6bda9f3..4793f07d 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -20,7 +20,7 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.0.0" - s.add_dependency "erubis", ">= 2.6.6" + s.add_dependency "erubi", ">= 1.0.0" s.add_dependency "coderay", ">= 1.0.0" s.add_dependency "rack", ">= 0.9.0" diff --git a/lib/better_errors.rb b/lib/better_errors.rb index 976927f4..d64ca558 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -1,5 +1,5 @@ require "pp" -require "erubis" +require "erubi" require "coderay" require "uri" diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 220a8d7c..d7de8c1d 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -10,7 +10,7 @@ def self.template_path(template_name) end def self.template(template_name) - Erubis::EscapedEruby.new(File.read(template_path(template_name))) + Erubi::Engine.new(File.read(template_path(template_name)), escape: true) end attr_reader :exception, :env, :repls @@ -27,7 +27,7 @@ def id end def render(template_name = "main") - self.class.template(template_name).result binding + binding.eval(self.class.template(template_name).src) end def do_variables(opts) From 43694c409bba2225aa565c24dd5197dc51f6715c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 3 Aug 2017 09:59:54 -0400 Subject: [PATCH 039/160] 2.3.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index eef6b123..dd8bafd8 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.2.0" + VERSION = "2.3.0" end From a2e4b1f9bc154143fa31dcfe89177438d8380e50 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 3 Aug 2017 11:42:55 -0400 Subject: [PATCH 040/160] Failing spec for do_eval with Pry This demonstrates the issue caused by the use of REPL::Pry when pry is not enabled. --- spec/better_errors/error_page_spec.rb | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index fe7fb3bc..a2d96feb 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -88,5 +88,31 @@ def initialize(message = nil) expect(error_page.exception_message).not_to match(/\A\n\n/) end end + + describe '#do_eval' do + let(:exception) { empty_binding.eval("raise") rescue $! } + subject(:do_eval) { error_page.do_eval("index" => 0, "source" => command) } + let(:command) { 'EvalTester.stuff_was_done(:yep)' } + before do + stub_const('EvalTester', eval_tester) + end + let(:eval_tester) { double('EvalTester', stuff_was_done: 'response') } + + context 'with Pry disabled' do + it "evaluates the code" do + do_eval + expect(eval_tester).to have_received(:stuff_was_done).with(:yep) + end + + it 'returns a hash of the code and its result' do + expect(do_eval).to include( + highlighted_input: /stuff_was_done/, + prefilled_input: '', + prompt: '>>', + result: "=> \"response\"\n", + ) + end + end + end end end From 3e5a7af262163b308c70ccfd3f7344aca0ea32dc Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 3 Aug 2017 11:44:58 -0400 Subject: [PATCH 041/160] Refactor Pry-specific behavior to fix exception --- lib/better_errors/error_page.rb | 18 +++--------------- lib/better_errors/repl/basic.rb | 2 +- lib/better_errors/repl/pry.rb | 8 +++++++- spec/better_errors/repl/basic_spec.rb | 4 +++- spec/better_errors/repl/pry_spec.rb | 4 +++- 5 files changed, 17 insertions(+), 19 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index d7de8c1d..c8f92d90 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -45,9 +45,9 @@ def do_eval(opts) return { error: "REPL unavailable in this stack frame" } end - @repls[index] ||= get_repl(index, binding) + @repls[index] ||= REPL.provider.new(binding, exception) - send_input(index, code) + eval_and_respond(index, code) end def backtrace_frames @@ -111,19 +111,7 @@ def inspect_value(obj) "(exception was raised in inspect)" end - def get_repl(index, binding) - REPL.provider.new(binding).tap do |repl| - if repl.is_a?(REPL::Pry) - pry = repl.instance_variable_get(:@pry) - pry.instance_variable_set( - :@last_exception, - ::Pry::LastException.new(@exception.exception) - ) - end - end - end - - def send_input(index, code) + def eval_and_respond(index, code) result, prompt, prefilled_input = @repls[index].send_input(code) { diff --git a/lib/better_errors/repl/basic.rb b/lib/better_errors/repl/basic.rb index 4b355a97..c2144531 100644 --- a/lib/better_errors/repl/basic.rb +++ b/lib/better_errors/repl/basic.rb @@ -1,7 +1,7 @@ module BetterErrors module REPL class Basic - def initialize(binding) + def initialize(binding, _exception) @binding = binding end diff --git a/lib/better_errors/repl/pry.rb b/lib/better_errors/repl/pry.rb index 0d88e8ce..4390ec7e 100644 --- a/lib/better_errors/repl/pry.rb +++ b/lib/better_errors/repl/pry.rb @@ -36,7 +36,7 @@ def print(*args) end end - def initialize(binding) + def initialize(binding, exception) @fiber = Fiber.new do @pry.repl binding end @@ -44,9 +44,15 @@ def initialize(binding) @output = BetterErrors::REPL::Pry::Output.new @pry = ::Pry.new input: @input, output: @output @pry.hooks.clear_all if defined?(@pry.hooks.clear_all) + store_last_exception exception @fiber.resume end + def store_last_exception(exception) + return unless defined? ::Pry::LastException + @pry.instance_variable_set(:@last_exception, ::Pry::LastException.new(exception.exception)) + end + def send_input(str) local ::Pry.config, color: false, pager: false do @fiber.resume "#{str}\n" diff --git a/spec/better_errors/repl/basic_spec.rb b/spec/better_errors/repl/basic_spec.rb index cc71a955..1db8b4c9 100644 --- a/spec/better_errors/repl/basic_spec.rb +++ b/spec/better_errors/repl/basic_spec.rb @@ -10,7 +10,9 @@ module REPL binding } - let(:repl) { Basic.new fresh_binding } + let!(:exception) { raise ZeroDivisionError, "you divided by zero you silly goose!" rescue $! } + + let(:repl) { Basic.new(fresh_binding, exception) } it_behaves_like "a REPL provider" end diff --git a/spec/better_errors/repl/pry_spec.rb b/spec/better_errors/repl/pry_spec.rb index 6f2b627d..0f4e9e2e 100644 --- a/spec/better_errors/repl/pry_spec.rb +++ b/spec/better_errors/repl/pry_spec.rb @@ -11,7 +11,9 @@ module REPL binding } - let(:repl) { Pry.new fresh_binding } + let!(:exception) { raise ZeroDivisionError, "you divided by zero you silly goose!" rescue $! } + + let(:repl) { Pry.new(fresh_binding, exception) } it "does line continuation" do output, prompt, filled = repl.send_input "" From b272b11f8f904d30fb0dff4f13a5d549c363dc28 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 3 Aug 2017 11:53:23 -0400 Subject: [PATCH 042/160] Spec to cover REPL::Pry eval This required changing the method of loading REPL::Pry. Since it can only be included when Pry is in the bundle, REPL attempts to load it only during REPL provider selection. In order to test it effectively, we must load it only when needed for a test, and then unload it afterward so that the rest of the spec examples aren't polluted by the existence of the constant. This is all very hacky, and would be better refactored into a separate gem such as `better_errors-pry`. --- lib/better_errors/repl.rb | 4 +++- spec/better_errors/error_page_spec.rb | 31 +++++++++++++++++++++++++++ spec/better_errors/repl/pry_spec.rb | 12 ++++++++++- 3 files changed, 45 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/repl.rb b/lib/better_errors/repl.rb index 1c1092f0..42136e7c 100644 --- a/lib/better_errors/repl.rb +++ b/lib/better_errors/repl.rb @@ -21,7 +21,9 @@ def self.detect end def self.test_provider(provider) - require provider[:impl] + # We must load this file instead of `require`ing it, since during our tests we want the file + # to be reloaded. In practice, this will only be called once, so `require` is not necessary. + load "#{provider[:impl]}.rb" true rescue LoadError false diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index a2d96feb..ba13e2ba 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -113,6 +113,37 @@ def initialize(message = nil) ) end end + + context 'with Pry enabled' do + before do + BetterErrors.use_pry! + # Cause the provider to be unselected, so that it will be re-detected. + BetterErrors::REPL.provider = nil + end + after do + BetterErrors::REPL::PROVIDERS.shift + BetterErrors::REPL.provider = nil + + # Ensure the Pry REPL file has not been included. If this is not done, + # the constant leaks into other examples. + BetterErrors::REPL.send(:remove_const, :Pry) + end + + it "evaluates the code" do + BetterErrors::REPL.provider + do_eval + expect(eval_tester).to have_received(:stuff_was_done).with(:yep) + end + + it 'returns a hash of the code and its result' do + expect(do_eval).to include( + highlighted_input: /stuff_was_done/, + prefilled_input: '', + prompt: '>>', + result: "=> \"response\"\n", + ) + end + end end end end diff --git a/spec/better_errors/repl/pry_spec.rb b/spec/better_errors/repl/pry_spec.rb index 0f4e9e2e..8c424e5b 100644 --- a/spec/better_errors/repl/pry_spec.rb +++ b/spec/better_errors/repl/pry_spec.rb @@ -1,11 +1,21 @@ require "spec_helper" require "pry" -require "better_errors/repl/pry" require "better_errors/repl/shared_examples" module BetterErrors module REPL describe Pry do + before(:all) do + load "better_errors/repl/pry.rb" + end + after(:all) do + # Ensure the Pry REPL file has not been included. If this is not done, + # the constant leaks into other examples. + # In practice, this constant is only defined if `use_pry!` is called and then the + # REPL is used, causing BetterErrors::REPL to require the file. + BetterErrors::REPL.send(:remove_const, :Pry) + end + let(:fresh_binding) { local_a = 123 binding From 02a1785e66f3f69f13e19248c7777de83a16518d Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 9 Aug 2017 12:03:19 -0400 Subject: [PATCH 043/160] Move development dependencies to gemspec --- Gemfile | 5 ----- better_errors.gemspec | 6 ++++++ 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/Gemfile b/Gemfile index 884990c0..3c4a5c67 100644 --- a/Gemfile +++ b/Gemfile @@ -2,11 +2,6 @@ source 'https://rubygems.org' gemspec -gem "rake" gem "rack", "1.6.4" -gem "rspec", "3.5.0" -gem "rspec-its" gem "binding_of_caller", platforms: :ruby gem "pry", "0.9.12" -gem "yard" -gem "kramdown" diff --git a/better_errors.gemspec b/better_errors.gemspec index 4793f07d..7b5164bd 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -20,6 +20,12 @@ Gem::Specification.new do |s| s.required_ruby_version = ">= 2.0.0" + s.add_development_dependency "rake", "~> 10.0" + s.add_development_dependency "rspec", "~> 3.5" + s.add_development_dependency "rspec-its" + s.add_development_dependency "yard" + s.add_development_dependency "kramdown" + s.add_dependency "erubi", ">= 1.0.0" s.add_dependency "coderay", ">= 1.0.0" s.add_dependency "rack", ">= 0.9.0" From 4cbf3b446a9599e9af3fa9d611ad824a9aa30edd Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 9 Aug 2017 12:04:56 -0400 Subject: [PATCH 044/160] Set up appraisal and move build-specific dependencies to the Appraisals. --- .gitignore | 3 ++ Appraisals | 63 +++++++++++++++++++++++++++++++++++ Gemfile | 7 ++-- README.md | 15 +++++++++ gemfiles/pry010.gemfile | 8 +++++ gemfiles/pry011.gemfile | 8 +++++ gemfiles/pry09.gemfile | 8 +++++ gemfiles/rack.gemfile | 7 ++++ gemfiles/rack_boc.gemfile | 8 +++++ gemfiles/rails42.gemfile | 8 +++++ gemfiles/rails42_boc.gemfile | 9 +++++ gemfiles/rails42_haml.gemfile | 9 +++++ gemfiles/rails50.gemfile | 8 +++++ gemfiles/rails50_boc.gemfile | 9 +++++ gemfiles/rails50_haml.gemfile | 9 +++++ gemfiles/rails51.gemfile | 8 +++++ gemfiles/rails51_boc.gemfile | 9 +++++ gemfiles/rails51_haml.gemfile | 9 +++++ 18 files changed, 202 insertions(+), 3 deletions(-) create mode 100644 Appraisals create mode 100644 gemfiles/pry010.gemfile create mode 100644 gemfiles/pry011.gemfile create mode 100644 gemfiles/pry09.gemfile create mode 100644 gemfiles/rack.gemfile create mode 100644 gemfiles/rack_boc.gemfile create mode 100644 gemfiles/rails42.gemfile create mode 100644 gemfiles/rails42_boc.gemfile create mode 100644 gemfiles/rails42_haml.gemfile create mode 100644 gemfiles/rails50.gemfile create mode 100644 gemfiles/rails50_boc.gemfile create mode 100644 gemfiles/rails50_haml.gemfile create mode 100644 gemfiles/rails51.gemfile create mode 100644 gemfiles/rails51_boc.gemfile create mode 100644 gemfiles/rails51_haml.gemfile diff --git a/.gitignore b/.gitignore index 88654958..d3f6a852 100644 --- a/.gitignore +++ b/.gitignore @@ -6,3 +6,6 @@ /doc /.bundle /vendor/gems + +/gemfiles/*.gemfile.lock +/gemfiles/.bundle diff --git a/Appraisals b/Appraisals new file mode 100644 index 00000000..f833ca85 --- /dev/null +++ b/Appraisals @@ -0,0 +1,63 @@ +appraise "rails42" do + gem 'rails', '~> 4.2.0' +end + +appraise "rails50" do + gem 'rails', '~> 5.0.0' +end + +appraise "rails51" do + gem 'rails', '~> 5.1.0' +end + +appraise "rails42_haml" do + gem 'rails', '~> 4.2.0' + gem 'haml' +end + +appraise "rails50_haml" do + gem 'rails', '~> 5.0.0' + gem 'haml' +end + +appraise "rails51_haml" do + gem 'rails', '~> 5.1.0' + gem 'haml' +end + +appraise "rails42_boc" do + gem 'rails', '~> 4.2.0' + gem "binding_of_caller", platforms: :ruby +end + +appraise "rails50_boc" do + gem 'rails', '~> 5.0.0' + gem "binding_of_caller", platforms: :ruby +end + +appraise "rails51_boc" do + gem 'rails', '~> 5.1.0' + gem "binding_of_caller", platforms: :ruby +end + +appraise 'rack' do +end + +appraise 'rack_boc' do + gem 'binding_of_caller' +end + +# To be removed in the future once the Pry REPL is extracted from this project. +appraise "pry09" do + gem "pry", "~> 0.9.12" +end + +# To be removed in the future once the Pry REPL is extracted from this project. +appraise "pry010" do + gem "pry", "~> 0.10.0" +end + +# To be removed in the future once the Pry REPL is extracted from this project. +appraise "pry011" do + gem "pry", "~> 0.11.0pre" +end diff --git a/Gemfile b/Gemfile index 3c4a5c67..8fcdef7e 100644 --- a/Gemfile +++ b/Gemfile @@ -2,6 +2,7 @@ source 'https://rubygems.org' gemspec -gem "rack", "1.6.4" -gem "binding_of_caller", platforms: :ruby -gem "pry", "0.9.12" +# gem "pry-byebug" + +# Allows us to generate multiple Gemfiles to run tests against multiple versions of dependencies. +gem "appraisal" diff --git a/README.md b/README.md index cfcd2ea3..a6dc1484 100644 --- a/README.md +++ b/README.md @@ -79,6 +79,21 @@ See [the wiki for instructions on configuring the editor](https://github.com/cha If you're using better_errors, I'd love to hear from you. Drop me a line and tell me what you think! +## Development + +After checking out the repo, run `bundle install` to install the basic dependencies. + +You can run the tests with the most recent version of Rails running `bundle exec rake`. + +To run the tests against the other sets of dependencies, though, you will need to use Appraisal. +Run `appraisal install` to run install the dependencies for each of the possible combinations. + +Then you can run `appraisal rake` to run all tests, or (for example) `appraisal rails_42_boc rake` to only run the specs with Rails 4.2 and binding_of_caller. + +To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). + +On CI, the specs are run against each major release of Ruby in addition to each Appraisal gemfile. + ## Contributing 1. Fork it diff --git a/gemfiles/pry010.gemfile b/gemfiles/pry010.gemfile new file mode 100644 index 00000000..b7ad7615 --- /dev/null +++ b/gemfiles/pry010.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "pry", "~> 0.10.0" + +gemspec path: "../" diff --git a/gemfiles/pry011.gemfile b/gemfiles/pry011.gemfile new file mode 100644 index 00000000..4d8c47c6 --- /dev/null +++ b/gemfiles/pry011.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "pry", "~> 0.11.0pre" + +gemspec path: "../" diff --git a/gemfiles/pry09.gemfile b/gemfiles/pry09.gemfile new file mode 100644 index 00000000..fa09c6ef --- /dev/null +++ b/gemfiles/pry09.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "pry", "~> 0.9.12" + +gemspec path: "../" diff --git a/gemfiles/rack.gemfile b/gemfiles/rack.gemfile new file mode 100644 index 00000000..0c3c7063 --- /dev/null +++ b/gemfiles/rack.gemfile @@ -0,0 +1,7 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" + +gemspec path: "../" diff --git a/gemfiles/rack_boc.gemfile b/gemfiles/rack_boc.gemfile new file mode 100644 index 00000000..b0c84181 --- /dev/null +++ b/gemfiles/rack_boc.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "binding_of_caller" + +gemspec path: "../" diff --git a/gemfiles/rails42.gemfile b/gemfiles/rails42.gemfile new file mode 100644 index 00000000..5e826cd4 --- /dev/null +++ b/gemfiles/rails42.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 4.2.0" + +gemspec path: "../" diff --git a/gemfiles/rails42_boc.gemfile b/gemfiles/rails42_boc.gemfile new file mode 100644 index 00000000..bc683575 --- /dev/null +++ b/gemfiles/rails42_boc.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 4.2.0" +gem "binding_of_caller", platforms: :ruby + +gemspec path: "../" diff --git a/gemfiles/rails42_haml.gemfile b/gemfiles/rails42_haml.gemfile new file mode 100644 index 00000000..b2931357 --- /dev/null +++ b/gemfiles/rails42_haml.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 4.2.0" +gem "haml" + +gemspec path: "../" diff --git a/gemfiles/rails50.gemfile b/gemfiles/rails50.gemfile new file mode 100644 index 00000000..778d8030 --- /dev/null +++ b/gemfiles/rails50.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 5.0.0" + +gemspec path: "../" diff --git a/gemfiles/rails50_boc.gemfile b/gemfiles/rails50_boc.gemfile new file mode 100644 index 00000000..b2eea829 --- /dev/null +++ b/gemfiles/rails50_boc.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 5.0.0" +gem "binding_of_caller", platforms: :ruby + +gemspec path: "../" diff --git a/gemfiles/rails50_haml.gemfile b/gemfiles/rails50_haml.gemfile new file mode 100644 index 00000000..1befb8ff --- /dev/null +++ b/gemfiles/rails50_haml.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 5.0.0" +gem "haml" + +gemspec path: "../" diff --git a/gemfiles/rails51.gemfile b/gemfiles/rails51.gemfile new file mode 100644 index 00000000..6e83d68a --- /dev/null +++ b/gemfiles/rails51.gemfile @@ -0,0 +1,8 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 5.1.0" + +gemspec path: "../" diff --git a/gemfiles/rails51_boc.gemfile b/gemfiles/rails51_boc.gemfile new file mode 100644 index 00000000..494fe2f0 --- /dev/null +++ b/gemfiles/rails51_boc.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 5.1.0" +gem "binding_of_caller", platforms: :ruby + +gemspec path: "../" diff --git a/gemfiles/rails51_haml.gemfile b/gemfiles/rails51_haml.gemfile new file mode 100644 index 00000000..6e9c04c8 --- /dev/null +++ b/gemfiles/rails51_haml.gemfile @@ -0,0 +1,9 @@ +# This file was generated by Appraisal + +source "https://rubygems.org" + +gem "appraisal" +gem "rails", "~> 5.1.0" +gem "haml" + +gemspec path: "../" From cdf01927ced34749e25c74b7591617e7f00d2d1c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 9 Aug 2017 12:08:51 -0400 Subject: [PATCH 045/160] Travis matrix for dependencies --- .travis.yml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/.travis.yml b/.travis.yml index 501f42aa..d0f4e959 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,3 +7,21 @@ rvm: - 2.2 - 2.3 - 2.4 + - ruby-head +gemfile: + - gemfiles/rails42.gemfile + - gemfiles/rails50.gemfile + - gemfiles/rails51.gemfile + - gemfiles/rails42_haml.gemfile + - gemfiles/rails50_haml.gemfile + - gemfiles/rails51_haml.gemfile + - gemfiles/rails42_boc.gemfile + - gemfiles/rails50_boc.gemfile + - gemfiles/rails51_boc.gemfile + - gemfiles/rack.gemfile + - gemfiles/rack_boc.gemfile +matrix: + fast_finish: true + allow_failures: + # - gemfile: gemfiles/rack.gemfile + - rvm: ruby-head From 3f36524a433aade91b1d753ee365371e5ba35c36 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 9 Aug 2017 12:29:21 -0400 Subject: [PATCH 046/160] Specify full ruby versions It seems travis doesn't use the latest of each version specified, even though rvm does. https://github.com/rvm/rvm/issues/3512#issuecomment-156575605 --- .travis.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.travis.yml b/.travis.yml index d0f4e959..b7c1171d 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,11 +2,11 @@ sudo: false language: ruby cache: bundler rvm: - - 2.0 - - 2.1 - - 2.2 - - 2.3 - - 2.4 + - 2.0.0 + - 2.1.10 + - 2.2.7 + - 2.3.4 + - 2.4.1 - ruby-head gemfile: - gemfiles/rails42.gemfile From b9a55f88f9552aa874bac3d75bb98fa16ffaec87 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 17 Aug 2017 02:10:20 -0400 Subject: [PATCH 047/160] Fix nokogiri version in CI for older Rubies --- Appraisals | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Appraisals b/Appraisals index f833ca85..bd87bd23 100644 --- a/Appraisals +++ b/Appraisals @@ -1,5 +1,6 @@ appraise "rails42" do gem 'rails', '~> 4.2.0' + gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' end appraise "rails50" do @@ -12,6 +13,7 @@ end appraise "rails42_haml" do gem 'rails', '~> 4.2.0' + gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' gem 'haml' end @@ -27,6 +29,7 @@ end appraise "rails42_boc" do gem 'rails', '~> 4.2.0' + gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' gem "binding_of_caller", platforms: :ruby end From 552ae15fa70fe8e3d6fa71df253a7fb27304f7f2 Mon Sep 17 00:00:00 2001 From: Toby Pinder Date: Fri, 20 Jan 2017 11:43:50 +0000 Subject: [PATCH 048/160] Configurably limit maximum variable size based on @bquorning's suggestion on #334. --- README.md | 14 +++++++++++++ lib/better_errors.rb | 7 +++++++ lib/better_errors/error_page.rb | 16 +++++++++++--- spec/better_errors/error_page_spec.rb | 30 +++++++++++++++++++++++++++ 4 files changed, 64 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index cfcd2ea3..cf049215 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,20 @@ Better Errors includes a link to your editor for the file and line of code that By default, it uses your environment to determine which editor should be opened. See [the wiki for instructions on configuring the editor](https://github.com/charliesome/better_errors/wiki/Link-to-your-editor). + +##Set maximum variable size for inspector. + +```ruby +# e.g. in config/initializers/better_errors.rb +# This will stop BetterErrors from trying to render larger objects, which can cause +# slow loading times and browser performance problems. Stated size is in characters and refers +# to the length of #inspect's payload for the given object. Please be aware that HTML escaping +# modifies the size of this payload so setting this limit too precisely is not recommended. +# default value: 100_000 +BetterErrors.maximum_variable_inspect_size = 100_000 +``` + + ## Get in touch! If you're using better_errors, I'd love to hear from you. Drop me a line and tell me what you think! diff --git a/lib/better_errors.rb b/lib/better_errors.rb index d64ca558..f376cd8e 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -44,6 +44,11 @@ class << self # The ignored instance variables. # @return [Array] attr_accessor :ignored_instance_variables + + # The maximum variable payload size. If variable.inspect exceeds this, + # the variable won't be returned. + # @return int + attr_accessor :maximum_variable_inspect_size end @ignored_instance_variables = [] @@ -143,4 +148,6 @@ def self.default_editor BetterErrors.binding_of_caller_available = false end +BetterErrors.maximum_variable_inspect_size ||= 100_000 + require "better_errors/rails" if defined? Rails::Railtie diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index c8f92d90..425e1cf3 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -104,11 +104,21 @@ def text_heading(char, str) end def inspect_value(obj) - CGI.escapeHTML(obj.inspect) + inspect_raw_value(obj) rescue NoMethodError "(object doesn't support inspect)" - rescue Exception - "(exception was raised in inspect)" + rescue Exception => e + "(exception #{CGI.escapeHTML(e.class.to_s)} was raised in inspect)" + end + + def inspect_raw_value(obj) + value = CGI.escapeHTML(obj.inspect) + + if !BetterErrors.maximum_variable_inspect_size.nil? && value.length > BetterErrors.maximum_variable_inspect_size + "(object too large - modify #{CGI.escapeHTML(obj.class.to_s)}#inspect or raise BetterErrors.maximum_variable_inspect_size)" + else + value + end end def eval_and_respond(index, code) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index ba13e2ba..6561122c 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -145,5 +145,35 @@ def initialize(message = nil) end end end + + it "shows variables with inspects that are below the inspect size threshold" do + BetterErrors.maximum_variable_inspect_size = 50_000 + + content = 'AAAAA' + empty_binding.instance_variable_set('@small', content) + + html = error_page.do_variables("index" => 0)[:html] + html.should_not include "object too large" + end + + it "hides variables with inspects that are above the inspect size threshold" do + BetterErrors.maximum_variable_inspect_size = 50_000 + + content = 'A' * (BetterErrors.maximum_variable_inspect_size) + empty_binding.instance_variable_set('@big', content) + + html = error_page.do_variables("index" => 0)[:html] + html.should include "object too large" + end + + it "shows variables with large inspects if max inspect size is disabled" do + BetterErrors.maximum_variable_inspect_size = nil + + content = 'A' * (50_000) + empty_binding.instance_variable_set('@big', content) + + html = error_page.do_variables("index" => 0)[:html] + html.should_not include "object too large" + end end end From a47f002706f3c7169f1818e1067c0dbb45798764 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Wed, 2 Aug 2017 08:29:05 +0200 Subject: [PATCH 049/160] Update RSpec syntax --- spec/better_errors/error_page_spec.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 6561122c..c8ce8e18 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -153,7 +153,7 @@ def initialize(message = nil) empty_binding.instance_variable_set('@small', content) html = error_page.do_variables("index" => 0)[:html] - html.should_not include "object too large" + expect(html).to_not include("object too large") end it "hides variables with inspects that are above the inspect size threshold" do @@ -163,7 +163,7 @@ def initialize(message = nil) empty_binding.instance_variable_set('@big', content) html = error_page.do_variables("index" => 0)[:html] - html.should include "object too large" + expect(html).to include("object too large") end it "shows variables with large inspects if max inspect size is disabled" do @@ -173,7 +173,7 @@ def initialize(message = nil) empty_binding.instance_variable_set('@big', content) html = error_page.do_variables("index" => 0)[:html] - html.should_not include "object too large" + expect(html).to_not include("object too large") end end end From c679d0471b883a933131dae34f25a049350dc9ff Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Wed, 2 Aug 2017 08:31:09 +0200 Subject: [PATCH 050/160] Set default value of var inside the module code --- lib/better_errors.rb | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index f376cd8e..0de6f707 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -51,6 +51,7 @@ class << self attr_accessor :maximum_variable_inspect_size end @ignored_instance_variables = [] + @maximum_variable_inspect_size = 100_000 # Returns a proc, which when called with a filename and line number argument, # returns a URL to open the filename and line in the selected editor. @@ -148,6 +149,4 @@ def self.default_editor BetterErrors.binding_of_caller_available = false end -BetterErrors.maximum_variable_inspect_size ||= 100_000 - require "better_errors/rails" if defined? Rails::Railtie From 0ab3c4ebd4deb926af1c32eed05aad8b4f814544 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Wed, 2 Aug 2017 08:31:49 +0200 Subject: [PATCH 051/160] Remove unneeded parentheses --- spec/better_errors/error_page_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index c8ce8e18..4cdd4a97 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -159,7 +159,7 @@ def initialize(message = nil) it "hides variables with inspects that are above the inspect size threshold" do BetterErrors.maximum_variable_inspect_size = 50_000 - content = 'A' * (BetterErrors.maximum_variable_inspect_size) + content = 'A' * BetterErrors.maximum_variable_inspect_size empty_binding.instance_variable_set('@big', content) html = error_page.do_variables("index" => 0)[:html] @@ -169,7 +169,7 @@ def initialize(message = nil) it "shows variables with large inspects if max inspect size is disabled" do BetterErrors.maximum_variable_inspect_size = nil - content = 'A' * (50_000) + content = 'A' * 50_000 empty_binding.instance_variable_set('@big', content) html = error_page.do_variables("index" => 0)[:html] From f3f18a8803f33252de84305abe650e1771c97801 Mon Sep 17 00:00:00 2001 From: Benjamin Quorning Date: Wed, 2 Aug 2017 09:00:40 +0200 Subject: [PATCH 052/160] Test with content larger than default size A 50_000 char string would not be capped by the default maximum_variable_inspect_size anyway. --- spec/better_errors/error_page_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 4cdd4a97..6f4eb420 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -169,7 +169,7 @@ def initialize(message = nil) it "shows variables with large inspects if max inspect size is disabled" do BetterErrors.maximum_variable_inspect_size = nil - content = 'A' * 50_000 + content = 'A' * 150_000 empty_binding.instance_variable_set('@big', content) html = error_page.do_variables("index" => 0)[:html] From c9aa2bfe3f06e0d05034068da5ebf61fa3dde6c6 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 17 Aug 2017 03:46:38 -0400 Subject: [PATCH 053/160] Remove Appraisal We have to customize nokogiri version based on ruby version, and Appraisal doesn't support that. We'll have to maintain the gemfiles manually. --- Appraisals | 66 ----------------------------------- Gemfile | 3 -- README.md | 21 +++++++---- Rakefile | 34 ++++++++++++++---- gemfiles/pry010.gemfile | 4 +-- gemfiles/pry011.gemfile | 3 -- gemfiles/pry09.gemfile | 3 -- gemfiles/rack.gemfile | 3 -- gemfiles/rack_boc.gemfile | 3 -- gemfiles/rails42.gemfile | 4 +-- gemfiles/rails42_boc.gemfile | 6 ++-- gemfiles/rails42_haml.gemfile | 4 +-- gemfiles/rails50.gemfile | 3 -- gemfiles/rails50_boc.gemfile | 5 +-- gemfiles/rails50_haml.gemfile | 3 -- gemfiles/rails51.gemfile | 3 -- gemfiles/rails51_boc.gemfile | 5 +-- gemfiles/rails51_haml.gemfile | 3 -- 18 files changed, 50 insertions(+), 126 deletions(-) delete mode 100644 Appraisals diff --git a/Appraisals b/Appraisals deleted file mode 100644 index bd87bd23..00000000 --- a/Appraisals +++ /dev/null @@ -1,66 +0,0 @@ -appraise "rails42" do - gem 'rails', '~> 4.2.0' - gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' -end - -appraise "rails50" do - gem 'rails', '~> 5.0.0' -end - -appraise "rails51" do - gem 'rails', '~> 5.1.0' -end - -appraise "rails42_haml" do - gem 'rails', '~> 4.2.0' - gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' - gem 'haml' -end - -appraise "rails50_haml" do - gem 'rails', '~> 5.0.0' - gem 'haml' -end - -appraise "rails51_haml" do - gem 'rails', '~> 5.1.0' - gem 'haml' -end - -appraise "rails42_boc" do - gem 'rails', '~> 4.2.0' - gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' - gem "binding_of_caller", platforms: :ruby -end - -appraise "rails50_boc" do - gem 'rails', '~> 5.0.0' - gem "binding_of_caller", platforms: :ruby -end - -appraise "rails51_boc" do - gem 'rails', '~> 5.1.0' - gem "binding_of_caller", platforms: :ruby -end - -appraise 'rack' do -end - -appraise 'rack_boc' do - gem 'binding_of_caller' -end - -# To be removed in the future once the Pry REPL is extracted from this project. -appraise "pry09" do - gem "pry", "~> 0.9.12" -end - -# To be removed in the future once the Pry REPL is extracted from this project. -appraise "pry010" do - gem "pry", "~> 0.10.0" -end - -# To be removed in the future once the Pry REPL is extracted from this project. -appraise "pry011" do - gem "pry", "~> 0.11.0pre" -end diff --git a/Gemfile b/Gemfile index 8fcdef7e..1cd854e5 100644 --- a/Gemfile +++ b/Gemfile @@ -3,6 +3,3 @@ source 'https://rubygems.org' gemspec # gem "pry-byebug" - -# Allows us to generate multiple Gemfiles to run tests against multiple versions of dependencies. -gem "appraisal" diff --git a/README.md b/README.md index a6dc1484..91046b88 100644 --- a/README.md +++ b/README.md @@ -83,16 +83,25 @@ If you're using better_errors, I'd love to hear from you. Drop me a line and tel After checking out the repo, run `bundle install` to install the basic dependencies. -You can run the tests with the most recent version of Rails running `bundle exec rake`. +You can run the tests with the simplest set of dependencies using: -To run the tests against the other sets of dependencies, though, you will need to use Appraisal. -Run `appraisal install` to run install the dependencies for each of the possible combinations. +```rb +bundle exec rspec +``` + +To run specs for each of the dependency combinations, run: -Then you can run `appraisal rake` to run all tests, or (for example) `appraisal rails_42_boc rake` to only run the specs with Rails 4.2 and binding_of_caller. +```rb +bundle exec rake test:all +``` -To install this gem onto your local machine, run `bundle exec rake install`. To release a new version, update the version number in `version.rb`, and then run `bundle exec rake release`, which will create a git tag for the version, push git commits and tags, and push the `.gem` file to [rubygems.org](https://rubygems.org). +You can run specs for a specific dependency combination using: + +```rb +BUNDLE_GEMFILE=gemfiles/pry09.gemfile bundle exec rspec +``` -On CI, the specs are run against each major release of Ruby in addition to each Appraisal gemfile. +On CI, the specs are run against each gemfile on each supported version of Ruby. ## Contributing diff --git a/Rakefile b/Rakefile index b6329726..45d282ed 100644 --- a/Rakefile +++ b/Rakefile @@ -1,13 +1,35 @@ require "bundler/gem_tasks" require "rspec/core/rake_task" +def gemfiles + @gemfiles ||= Dir[File.dirname(__FILE__) + '/gemfiles/*.gemfile'] +end + +def with_each_gemfile + gemfiles.each do |gemfile| + Bundler.with_clean_env do + puts "\n=========== Using gemfile: #{gemfile}" + ENV['BUNDLE_GEMFILE'] = gemfile + yield + end + end +end + namespace :test do - RSpec::Core::RakeTask.new(:with_binding_of_caller) + namespace :bundles do + desc "Install all dependencies necessary to test" + task :install do + with_each_gemfile { sh "bundle install" } + end - without_task = RSpec::Core::RakeTask.new(:without_binding_of_caller) - without_task.ruby_opts = "-I spec -r without_binding_of_caller" + desc "Update all dependencies for tests" + task :update do + with_each_gemfile { sh "bundle update" } + end + end - task :all => [:with_binding_of_caller, :without_binding_of_caller] + desc "Test all supported sets of dependencies." + task :all => 'test:bundles:install' do + with_each_gemfile { sh "bundle exec rspec" rescue nil } + end end - -task :default => "test:all" diff --git a/gemfiles/pry010.gemfile b/gemfiles/pry010.gemfile index b7ad7615..bc223560 100644 --- a/gemfiles/pry010.gemfile +++ b/gemfiles/pry010.gemfile @@ -1,8 +1,6 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" +gem "binding_of_caller" gem "pry", "~> 0.10.0" gemspec path: "../" diff --git a/gemfiles/pry011.gemfile b/gemfiles/pry011.gemfile index 4d8c47c6..5c9e3c3e 100644 --- a/gemfiles/pry011.gemfile +++ b/gemfiles/pry011.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "pry", "~> 0.11.0pre" gemspec path: "../" diff --git a/gemfiles/pry09.gemfile b/gemfiles/pry09.gemfile index fa09c6ef..4ff6af66 100644 --- a/gemfiles/pry09.gemfile +++ b/gemfiles/pry09.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "pry", "~> 0.9.12" gemspec path: "../" diff --git a/gemfiles/rack.gemfile b/gemfiles/rack.gemfile index 0c3c7063..39e72c1b 100644 --- a/gemfiles/rack.gemfile +++ b/gemfiles/rack.gemfile @@ -1,7 +1,4 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gemspec path: "../" diff --git a/gemfiles/rack_boc.gemfile b/gemfiles/rack_boc.gemfile index b0c84181..2814aff0 100644 --- a/gemfiles/rack_boc.gemfile +++ b/gemfiles/rack_boc.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "binding_of_caller" gemspec path: "../" diff --git a/gemfiles/rails42.gemfile b/gemfiles/rails42.gemfile index 5e826cd4..03ee8720 100644 --- a/gemfiles/rails42.gemfile +++ b/gemfiles/rails42.gemfile @@ -1,8 +1,6 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 4.2.0" +gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' gemspec path: "../" diff --git a/gemfiles/rails42_boc.gemfile b/gemfiles/rails42_boc.gemfile index bc683575..f3fc8ac8 100644 --- a/gemfiles/rails42_boc.gemfile +++ b/gemfiles/rails42_boc.gemfile @@ -1,9 +1,7 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 4.2.0" -gem "binding_of_caller", platforms: :ruby +gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' +gem "binding_of_caller" gemspec path: "../" diff --git a/gemfiles/rails42_haml.gemfile b/gemfiles/rails42_haml.gemfile index b2931357..e9cd732e 100644 --- a/gemfiles/rails42_haml.gemfile +++ b/gemfiles/rails42_haml.gemfile @@ -1,9 +1,7 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 4.2.0" +gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' gem "haml" gemspec path: "../" diff --git a/gemfiles/rails50.gemfile b/gemfiles/rails50.gemfile index 778d8030..a2712023 100644 --- a/gemfiles/rails50.gemfile +++ b/gemfiles/rails50.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 5.0.0" gemspec path: "../" diff --git a/gemfiles/rails50_boc.gemfile b/gemfiles/rails50_boc.gemfile index b2eea829..cac4b7c1 100644 --- a/gemfiles/rails50_boc.gemfile +++ b/gemfiles/rails50_boc.gemfile @@ -1,9 +1,6 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 5.0.0" -gem "binding_of_caller", platforms: :ruby +gem "binding_of_caller" gemspec path: "../" diff --git a/gemfiles/rails50_haml.gemfile b/gemfiles/rails50_haml.gemfile index 1befb8ff..bbd246c6 100644 --- a/gemfiles/rails50_haml.gemfile +++ b/gemfiles/rails50_haml.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 5.0.0" gem "haml" diff --git a/gemfiles/rails51.gemfile b/gemfiles/rails51.gemfile index 6e83d68a..4204d8d8 100644 --- a/gemfiles/rails51.gemfile +++ b/gemfiles/rails51.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 5.1.0" gemspec path: "../" diff --git a/gemfiles/rails51_boc.gemfile b/gemfiles/rails51_boc.gemfile index 494fe2f0..24471dda 100644 --- a/gemfiles/rails51_boc.gemfile +++ b/gemfiles/rails51_boc.gemfile @@ -1,9 +1,6 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 5.1.0" -gem "binding_of_caller", platforms: :ruby +gem "binding_of_caller" gemspec path: "../" diff --git a/gemfiles/rails51_haml.gemfile b/gemfiles/rails51_haml.gemfile index 6e9c04c8..9c271d04 100644 --- a/gemfiles/rails51_haml.gemfile +++ b/gemfiles/rails51_haml.gemfile @@ -1,8 +1,5 @@ -# This file was generated by Appraisal - source "https://rubygems.org" -gem "appraisal" gem "rails", "~> 5.1.0" gem "haml" From d5d79a3e844883470268abd0bfe20dca19bbcbe3 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 17 Aug 2017 03:47:03 -0400 Subject: [PATCH 054/160] Have bundler load all dependencies for tests --- spec/spec_helper.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 40d63261..c38ab51d 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,4 +2,5 @@ ENV["EDITOR"] = nil -require "better_errors" +require 'bundler/setup' +Bundler.require(:default) From ef46f8fb0aebfb67cc59f5dea5e44d4421524958 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 17 Aug 2017 03:47:45 -0400 Subject: [PATCH 055/160] Disable tests based on dependency inclusion --- spec/better_errors/error_page_spec.rb | 88 +++++++++++++++++---------- spec/better_errors/repl/pry_spec.rb | 79 ++++++++++++------------ 2 files changed, 95 insertions(+), 72 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index ba13e2ba..16a53ea0 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -98,50 +98,74 @@ def initialize(message = nil) end let(:eval_tester) { double('EvalTester', stuff_was_done: 'response') } - context 'with Pry disabled' do - it "evaluates the code" do + context 'without binding_of_caller' do + before do + skip("Disabled with binding_of_caller") if defined? ::BindingOfCaller + end + + it "does not evaluate the code" do do_eval - expect(eval_tester).to have_received(:stuff_was_done).with(:yep) + expect(eval_tester).to_not have_received(:stuff_was_done).with(:yep) end - it 'returns a hash of the code and its result' do + it 'returns an error indicating no REPL' do expect(do_eval).to include( - highlighted_input: /stuff_was_done/, - prefilled_input: '', - prompt: '>>', - result: "=> \"response\"\n", + error: "REPL unavailable in this stack frame", ) end end - - context 'with Pry enabled' do + context 'with binding_of_caller available' do before do - BetterErrors.use_pry! - # Cause the provider to be unselected, so that it will be re-detected. - BetterErrors::REPL.provider = nil + skip("Disabled without binding_of_caller") unless defined? ::BindingOfCaller end - after do - BetterErrors::REPL::PROVIDERS.shift - BetterErrors::REPL.provider = nil - # Ensure the Pry REPL file has not been included. If this is not done, - # the constant leaks into other examples. - BetterErrors::REPL.send(:remove_const, :Pry) + context 'with Pry disabled or unavailable' do + it "evaluates the code" do + do_eval + expect(eval_tester).to have_received(:stuff_was_done).with(:yep) + end + + it 'returns a hash of the code and its result' do + expect(do_eval).to include( + highlighted_input: /stuff_was_done/, + prefilled_input: '', + prompt: '>>', + result: "=> \"response\"\n", + ) + end end - it "evaluates the code" do - BetterErrors::REPL.provider - do_eval - expect(eval_tester).to have_received(:stuff_was_done).with(:yep) - end - - it 'returns a hash of the code and its result' do - expect(do_eval).to include( - highlighted_input: /stuff_was_done/, - prefilled_input: '', - prompt: '>>', - result: "=> \"response\"\n", - ) + context 'with Pry enabled' do + before do + skip("Disabled without pry") unless defined? ::Pry + + BetterErrors.use_pry! + # Cause the provider to be unselected, so that it will be re-detected. + BetterErrors::REPL.provider = nil + end + after do + BetterErrors::REPL::PROVIDERS.shift + BetterErrors::REPL.provider = nil + + # Ensure the Pry REPL file has not been included. If this is not done, + # the constant leaks into other examples. + BetterErrors::REPL.send(:remove_const, :Pry) + end + + it "evaluates the code" do + BetterErrors::REPL.provider + do_eval + expect(eval_tester).to have_received(:stuff_was_done).with(:yep) + end + + it 'returns a hash of the code and its result' do + expect(do_eval).to include( + highlighted_input: /stuff_was_done/, + prefilled_input: '', + prompt: '>>', + result: "=> \"response\"\n", + ) + end end end end diff --git a/spec/better_errors/repl/pry_spec.rb b/spec/better_errors/repl/pry_spec.rb index 8c424e5b..984f03b5 100644 --- a/spec/better_errors/repl/pry_spec.rb +++ b/spec/better_errors/repl/pry_spec.rb @@ -1,52 +1,51 @@ require "spec_helper" -require "pry" require "better_errors/repl/shared_examples" -module BetterErrors - module REPL - describe Pry do - before(:all) do - load "better_errors/repl/pry.rb" - end - after(:all) do - # Ensure the Pry REPL file has not been included. If this is not done, - # the constant leaks into other examples. - # In practice, this constant is only defined if `use_pry!` is called and then the - # REPL is used, causing BetterErrors::REPL to require the file. - BetterErrors::REPL.send(:remove_const, :Pry) - end +if defined? ::Pry + RSpec.describe 'BetterErrors::REPL::Pry' do + before(:all) do + load "better_errors/repl/pry.rb" + end + after(:all) do + # Ensure the Pry REPL file has not been included. If this is not done, + # the constant leaks into other examples. + # In practice, this constant is only defined if `use_pry!` is called and then the + # REPL is used, causing BetterErrors::REPL to require the file. + BetterErrors::REPL.send(:remove_const, :Pry) + end - let(:fresh_binding) { - local_a = 123 - binding - } + let(:fresh_binding) { + local_a = 123 + binding + } - let!(:exception) { raise ZeroDivisionError, "you divided by zero you silly goose!" rescue $! } + let!(:exception) { raise ZeroDivisionError, "you divided by zero you silly goose!" rescue $! } - let(:repl) { Pry.new(fresh_binding, exception) } + let(:repl) { BetterErrors::REPL::Pry.new(fresh_binding, exception) } - it "does line continuation" do - output, prompt, filled = repl.send_input "" + it "does line continuation", :aggregate_failures do + output, prompt, filled = repl.send_input "" + expect(output).to eq("=> nil\n") + expect(prompt).to eq(">>") + expect(filled).to eq("") + + output, prompt, filled = repl.send_input "def f(x)" + expect(output).to eq("") + expect(prompt).to eq("..") + expect(filled).to eq(" ") + + output, prompt, filled = repl.send_input "end" + if RUBY_VERSION >= "2.1.0" + expect(output).to eq("=> :f\n") + else expect(output).to eq("=> nil\n") - expect(prompt).to eq(">>") - expect(filled).to eq("") - - output, prompt, filled = repl.send_input "def f(x)" - expect(output).to eq("") - expect(prompt).to eq("..") - expect(filled).to eq(" ") - - output, prompt, filled = repl.send_input "end" - if RUBY_VERSION >= "2.1.0" - expect(output).to eq("=> :f\n") - else - expect(output).to eq("=> nil\n") - end - expect(prompt).to eq(">>") - expect(filled).to eq("") end - - it_behaves_like "a REPL provider" + expect(prompt).to eq(">>") + expect(filled).to eq("") end + + it_behaves_like "a REPL provider" end +else + puts "Skipping Pry specs because pry is not in the bundle" end From 6006fbdf7653056a42cd3f212e8c110ea2553b5f Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 17 Aug 2017 04:03:49 -0400 Subject: [PATCH 056/160] Default rake task --- Rakefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Rakefile b/Rakefile index 45d282ed..cb84ee87 100644 --- a/Rakefile +++ b/Rakefile @@ -1,6 +1,9 @@ require "bundler/gem_tasks" require "rspec/core/rake_task" +RSpec::Core::RakeTask.new(:test) +task :default => :test + def gemfiles @gemfiles ||= Dir[File.dirname(__FILE__) + '/gemfiles/*.gemfile'] end From 794fb688f534bfc3b95b6c3dd4c6dba8b23869aa Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 23 Aug 2017 20:50:19 -0400 Subject: [PATCH 057/160] Exclude incompatible ruby/rails combinations --- .travis.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/.travis.yml b/.travis.yml index b7c1171d..7c49421c 100644 --- a/.travis.yml +++ b/.travis.yml @@ -25,3 +25,34 @@ matrix: allow_failures: # - gemfile: gemfiles/rack.gemfile - rvm: ruby-head + exclude: + - rvm: 2.0.0 + gemfile: gemfiles/rails50.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails50_boc.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails50_haml.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails51.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails51_boc.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails51_haml.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails50.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails50_boc.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails50_haml.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails51.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails51_boc.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails51_haml.gemfile + - rvm: 2.4.1 + gemfile: gemfiles/rails42.gemfile + - rvm: 2.4.1 + gemfile: gemfiles/rails42_boc.gemfile + - rvm: 2.4.1 + gemfile: gemfiles/rails42_haml.gemfile From 745712b95891aaeab2a7ab656911786a49329bb6 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 23 Aug 2017 21:12:10 -0400 Subject: [PATCH 058/160] Set rack version based on Ruby version --- gemfiles/rack.gemfile | 1 + gemfiles/rack_boc.gemfile | 1 + 2 files changed, 2 insertions(+) diff --git a/gemfiles/rack.gemfile b/gemfiles/rack.gemfile index 39e72c1b..36e32cca 100644 --- a/gemfiles/rack.gemfile +++ b/gemfiles/rack.gemfile @@ -1,4 +1,5 @@ source "https://rubygems.org" +gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gemspec path: "../" diff --git a/gemfiles/rack_boc.gemfile b/gemfiles/rack_boc.gemfile index 2814aff0..316251bc 100644 --- a/gemfiles/rack_boc.gemfile +++ b/gemfiles/rack_boc.gemfile @@ -1,5 +1,6 @@ source "https://rubygems.org" +gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "binding_of_caller" gemspec path: "../" From a4329ecad1676c980e7ba1ec950522a7595565da Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 23 Aug 2017 21:34:13 -0400 Subject: [PATCH 059/160] Add pry builds --- .travis.yml | 6 +++++- gemfiles/pry010.gemfile | 1 + gemfiles/pry011.gemfile | 1 + gemfiles/pry09.gemfile | 1 + 4 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 7c49421c..29728910 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,11 +20,15 @@ gemfile: - gemfiles/rails51_boc.gemfile - gemfiles/rack.gemfile - gemfiles/rack_boc.gemfile + - gemfiles/pry09.gemfile + - gemfiles/pry010.gemfile + - gemfiles/pry011.gemfile matrix: fast_finish: true allow_failures: - # - gemfile: gemfiles/rack.gemfile - rvm: ruby-head + - gemfile: gemfiles/pry010.gemfile + - gemfile: gemfiles/pry011.gemfile exclude: - rvm: 2.0.0 gemfile: gemfiles/rails50.gemfile diff --git a/gemfiles/pry010.gemfile b/gemfiles/pry010.gemfile index bc223560..55507b86 100644 --- a/gemfiles/pry010.gemfile +++ b/gemfiles/pry010.gemfile @@ -1,5 +1,6 @@ source "https://rubygems.org" +gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "binding_of_caller" gem "pry", "~> 0.10.0" diff --git a/gemfiles/pry011.gemfile b/gemfiles/pry011.gemfile index 5c9e3c3e..83eaff72 100644 --- a/gemfiles/pry011.gemfile +++ b/gemfiles/pry011.gemfile @@ -1,5 +1,6 @@ source "https://rubygems.org" +gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "pry", "~> 0.11.0pre" gemspec path: "../" diff --git a/gemfiles/pry09.gemfile b/gemfiles/pry09.gemfile index 4ff6af66..8c430150 100644 --- a/gemfiles/pry09.gemfile +++ b/gemfiles/pry09.gemfile @@ -1,5 +1,6 @@ source "https://rubygems.org" +gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "pry", "~> 0.9.12" gemspec path: "../" From 63d6586f4ffe3f4e2b5eb395e48ffa48c246d53c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 9 Aug 2017 00:45:22 -0400 Subject: [PATCH 060/160] Rename our console to fix webconsole stealing it --- lib/better_errors/templates/main.erb | 33 ++++++++++--------- lib/better_errors/templates/variable_info.erb | 6 ++-- 2 files changed, 20 insertions(+), 19 deletions(-) diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index 67d57fc0..e05ad7f9 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -394,7 +394,7 @@ * Monospace * --------------------------------------------------------------------- */ - pre, code, .repl input, .repl .prompt span, textarea, .code_linenums { + pre, code, .be-repl input, .be-repl .prompt span, textarea, .code_linenums { font-family: menlo, lucida console, monospace; font-size: 8pt; } @@ -460,7 +460,7 @@ font-weight: 200; } - .code, .console, .unavailable { + .code, .be-console, .unavailable { background: #fff; padding: 5px; @@ -532,13 +532,13 @@ } /* REPL shell */ - .console { + .be-console { padding: 0 1px 10px 1px; border-bottom-left-radius: 2px; border-bottom-right-radius: 2px; } - .console pre { + .be-console pre { padding: 10px 10px 0 10px; max-height: 400px; overflow-x: none; @@ -549,29 +549,30 @@ } /* .prompt > span + input */ - .console .prompt { + .be-console .prompt { display: table; width: 100%; } - .console .prompt span, - .console .prompt input { + .be-console .prompt span, + .be-console .prompt input { display: table-cell; } - .console .prompt span { + .be-console .prompt span { width: 1%; padding-right: 5px; padding-left: 10px; + white-space: pre; } - .console .prompt input { + .be-console .prompt input { width: 99%; } /* Input box */ - .console input, - .console input:focus { + .be-console input, + .be-console input:focus { outline: 0; border: 0; padding: 0; @@ -669,14 +670,14 @@ nav.sidebar::-webkit-scrollbar, .inset pre::-webkit-scrollbar, - .console pre::-webkit-scrollbar, + .be-console pre::-webkit-scrollbar, .code::-webkit-scrollbar { width: 10px; height: 10px; } .inset pre::-webkit-scrollbar-thumb, - .console pre::-webkit-scrollbar-thumb, + .be-console pre::-webkit-scrollbar-thumb, .code::-webkit-scrollbar-thumb { background: #ccc; border-radius: 5px; @@ -692,7 +693,7 @@ background: -webkit-linear-gradient(left, #aaa, #999); } - .console pre:hover::-webkit-scrollbar-thumb, + .be-console pre:hover::-webkit-scrollbar-thumb, .inset pre:hover::-webkit-scrollbar-thumb, .code:hover::-webkit-scrollbar-thumb { background: #888; @@ -924,7 +925,7 @@ el.style.display = "block"; - var replInput = el.querySelector('.console input'); + var replInput = el.querySelector('.be-console input'); if (replInput) replInput.focus(); } @@ -946,7 +947,7 @@ } else { el.innerHTML = response.html; - var repl = el.querySelector(".repl .console"); + var repl = el.querySelector(".be-repl .be-console"); if(repl) { new REPL(index).install(repl); } diff --git a/lib/better_errors/templates/variable_info.erb b/lib/better_errors/templates/variable_info.erb index 8d6bd166..706d9fcf 100644 --- a/lib/better_errors/templates/variable_info.erb +++ b/lib/better_errors/templates/variable_info.erb @@ -8,10 +8,10 @@
<% if BetterErrors.binding_of_caller_available? && @frame.frame_binding %> -
-
+
+

-                
>>
+
>>
<% end %> From c7d14d29e161fb7c9c2af1f8d4ddfc7da124c58c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 23 Aug 2017 23:33:46 -0400 Subject: [PATCH 061/160] Fix "prompt" element so that it's named that --- lib/better_errors/templates/main.erb | 16 ++++++++-------- lib/better_errors/templates/variable_info.erb | 2 +- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index e05ad7f9..81487982 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -394,7 +394,7 @@ * Monospace * --------------------------------------------------------------------- */ - pre, code, .be-repl input, .be-repl .prompt span, textarea, .code_linenums { + pre, code, .be-repl input, .be-repl .command-line span, textarea, .code_linenums { font-family: menlo, lucida console, monospace; font-size: 8pt; } @@ -548,25 +548,25 @@ white-space: pre-wrap; } - /* .prompt > span + input */ - .be-console .prompt { + /* .command-line > span + input */ + .be-console .command-line { display: table; width: 100%; } - .be-console .prompt span, - .be-console .prompt input { + .be-console .command-line span, + .be-console .command-line input { display: table-cell; } - .be-console .prompt span { + .be-console .command-line span { width: 1%; padding-right: 5px; padding-left: 10px; white-space: pre; } - .be-console .prompt input { + .be-console .command-line input { width: 99%; } @@ -810,7 +810,7 @@ REPL.prototype.install = function(containerElement) { this.container = containerElement; - this.promptElement = this.container.querySelector(".prompt span"); + this.promptElement = this.container.querySelector(".command-line .prompt"); this.inputElement = this.container.querySelector("input"); this.outputElement = this.container.querySelector("pre"); diff --git a/lib/better_errors/templates/variable_info.erb b/lib/better_errors/templates/variable_info.erb index 706d9fcf..3f2e86ac 100644 --- a/lib/better_errors/templates/variable_info.erb +++ b/lib/better_errors/templates/variable_info.erb @@ -11,7 +11,7 @@

-                
>>
+
>>
<% end %> From 9c61cfc83556316856c37542bd79b54fd4507119 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 24 Aug 2017 00:56:47 -0400 Subject: [PATCH 062/160] Refactor specs for maximum_variable_inspect_size --- spec/better_errors/error_page_spec.rb | 91 +++++++++++++++++---------- 1 file changed, 58 insertions(+), 33 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 9ba77ab7..fb4b9e73 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -8,7 +8,7 @@ module BetterErrors let(:response) { error_page.render } - let(:empty_binding) { + let(:exception_binding) { local_a = :value_for_local_a local_b = :value_for_local_b @@ -31,7 +31,7 @@ module BetterErrors end context "variable inspection" do - let(:exception) { empty_binding.eval("raise") rescue $! } + let(:exception) { exception_binding.eval("raise") rescue $! } if BetterErrors.binding_of_caller_available? it "shows local variables" do @@ -41,6 +41,7 @@ module BetterErrors expect(html).to include("local_b") expect(html).to include(":value_for_local_b") end + else it "tells the user to add binding_of_caller to their gemfile to get fancy features" do html = error_page.do_variables("index" => 0)[:html] @@ -48,6 +49,60 @@ module BetterErrors end end + context 'when maximum_variable_inspect_size is set' do + before do + BetterErrors.maximum_variable_inspect_size = 500 + end + + context 'with a variable that is not larger than maximum_variable_inspect_size' do + let(:exception_binding) { + @small = content + + binding + } + let(:content) { 'A' * 480 } + + it "shows the variable content" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include(content) + end + end + + context 'with a variable that is larger than maximum_variable_inspect_size' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { 'A' * 501 } + + it "includes an indication that the variable was too large" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to_not include(content) + expect(html).to include("object too large") + end + end + end + + context 'when maximum_variable_inspect_size is disabled' do + before do + BetterErrors.maximum_variable_inspect_size = nil + end + + let(:exception_binding) { + @big = content + + binding + } + let(:content) { 'A' * 100_001 } + + it "includes the content of large variables" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include(content) + expect(html).to_not include("object too large") + end + end + it "shows instance variables" do html = error_page.do_variables("index" => 0)[:html] expect(html).to include("inst_c") @@ -90,7 +145,7 @@ def initialize(message = nil) end describe '#do_eval' do - let(:exception) { empty_binding.eval("raise") rescue $! } + let(:exception) { exception_binding.eval("raise") rescue $! } subject(:do_eval) { error_page.do_eval("index" => 0, "source" => command) } let(:command) { 'EvalTester.stuff_was_done(:yep)' } before do @@ -169,35 +224,5 @@ def initialize(message = nil) end end end - - it "shows variables with inspects that are below the inspect size threshold" do - BetterErrors.maximum_variable_inspect_size = 50_000 - - content = 'AAAAA' - empty_binding.instance_variable_set('@small', content) - - html = error_page.do_variables("index" => 0)[:html] - expect(html).to_not include("object too large") - end - - it "hides variables with inspects that are above the inspect size threshold" do - BetterErrors.maximum_variable_inspect_size = 50_000 - - content = 'A' * BetterErrors.maximum_variable_inspect_size - empty_binding.instance_variable_set('@big', content) - - html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("object too large") - end - - it "shows variables with large inspects if max inspect size is disabled" do - BetterErrors.maximum_variable_inspect_size = nil - - content = 'A' * 150_000 - empty_binding.instance_variable_set('@big', content) - - html = error_page.do_variables("index" => 0)[:html] - expect(html).to_not include("object too large") - end end end From ed4d19b6f75b3f7fb7a6e1a64be632f1abe9b9b7 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 25 Aug 2017 01:34:24 -0400 Subject: [PATCH 063/160] Refactor variable size comparison into method --- lib/better_errors/error_page.rb | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 425e1cf3..40cccb1c 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -114,13 +114,20 @@ def inspect_value(obj) def inspect_raw_value(obj) value = CGI.escapeHTML(obj.inspect) - if !BetterErrors.maximum_variable_inspect_size.nil? && value.length > BetterErrors.maximum_variable_inspect_size - "(object too large - modify #{CGI.escapeHTML(obj.class.to_s)}#inspect or raise BetterErrors.maximum_variable_inspect_size)" - else + if value_small_enough_to_inspect?(value) value + else + "(object too large. "\ + "Modify #{CGI.escapeHTML(obj.class.to_s)}#inspect "\ + "or increase BetterErrors.maximum_variable_inspect_size)" end end + def value_small_enough_to_inspect?(value) + return true if BetterErrors.maximum_variable_inspect_size.nil? + value.length <= BetterErrors.maximum_variable_inspect_size + end + def eval_and_respond(index, code) result, prompt, prefilled_input = @repls[index].send_input(code) From e5b7a13c0851d460e89be2868633e4dd5c82bf2f Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 25 Aug 2017 02:26:49 -0400 Subject: [PATCH 064/160] Fix variable inspection specs --- spec/better_errors/error_page_spec.rb | 48 +++++++++++++-------------- 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 16a53ea0..2cfdc4d3 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -8,7 +8,7 @@ module BetterErrors let(:response) { error_page.render } - let(:empty_binding) { + let(:exception_binding) { local_a = :value_for_local_a local_b = :value_for_local_b @@ -31,15 +31,32 @@ module BetterErrors end context "variable inspection" do - let(:exception) { empty_binding.eval("raise") rescue $! } + let(:exception) { exception_binding.eval("raise") rescue $! } if BetterErrors.binding_of_caller_available? it "shows local variables" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("local_a") - expect(html).to include(":value_for_local_a") - expect(html).to include("local_b") - expect(html).to include(":value_for_local_b") + expect(html).to include('local_a') + expect(html).to include("
:value_for_local_a
") + expect(html).to include('local_b') + expect(html).to include("
:value_for_local_b
") + end + + it "shows instance variables" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include('' + '@inst_c') + expect(html).to include("
" + ":value_for_inst_c
") + expect(html).to include('' + '@inst_d') + expect(html).to include("
" + ":value_for_inst_d
") + end + + it "does not show filtered variables" do + allow(BetterErrors).to receive(:ignored_instance_variables).and_return([:@inst_d]) + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include('' + '@inst_c') + expect(html).to include("
" + ":value_for_inst_c
") + expect(html).not_to include('' + '@inst_d') + expect(html).not_to include("
" + ":value_for_inst_d
") end else it "tells the user to add binding_of_caller to their gemfile to get fancy features" do @@ -47,23 +64,6 @@ module BetterErrors expect(html).to include(%{gem "binding_of_caller"}) end end - - it "shows instance variables" do - html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("inst_c") - expect(html).to include(":value_for_inst_c") - expect(html).to include("inst_d") - expect(html).to include(":value_for_inst_d") - end - - it "shows filter instance variables" do - allow(BetterErrors).to receive(:ignored_instance_variables).and_return([ :@inst_d ]) - html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("inst_c") - expect(html).to include(":value_for_inst_c") - expect(html).not_to include('@inst_d') - expect(html).not_to include("
:value_for_inst_d
") - end end it "doesn't die if the source file is not a real filename" do @@ -90,7 +90,7 @@ def initialize(message = nil) end describe '#do_eval' do - let(:exception) { empty_binding.eval("raise") rescue $! } + let(:exception) { exception_binding.eval("raise") rescue $! } subject(:do_eval) { error_page.do_eval("index" => 0, "source" => command) } let(:command) { 'EvalTester.stuff_was_done(:yep)' } before do From d5fe4969423b992138b39047f9ccb4ed50046296 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 25 Aug 2017 11:26:49 -0400 Subject: [PATCH 065/160] Add coveralls with parallel build processing --- .coveralls.yml | 1 + .travis.yml | 7 +++++++ gemfiles/pry010.gemfile | 2 ++ gemfiles/pry011.gemfile | 2 ++ gemfiles/pry09.gemfile | 2 ++ gemfiles/rack.gemfile | 2 ++ gemfiles/rack_boc.gemfile | 2 ++ gemfiles/rails42.gemfile | 2 ++ gemfiles/rails42_boc.gemfile | 2 ++ gemfiles/rails42_haml.gemfile | 2 ++ gemfiles/rails50.gemfile | 2 ++ gemfiles/rails50_boc.gemfile | 2 ++ gemfiles/rails50_haml.gemfile | 2 ++ gemfiles/rails51.gemfile | 2 ++ gemfiles/rails51_boc.gemfile | 2 ++ gemfiles/rails51_haml.gemfile | 2 ++ spec/spec_helper.rb | 5 +++++ 17 files changed, 41 insertions(+) create mode 100644 .coveralls.yml diff --git a/.coveralls.yml b/.coveralls.yml new file mode 100644 index 00000000..91600595 --- /dev/null +++ b/.coveralls.yml @@ -0,0 +1 @@ +service_name: travis-ci diff --git a/.travis.yml b/.travis.yml index 29728910..dd6fccdc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,13 @@ sudo: false language: ruby cache: bundler +env: + # With this env variable, coverage information sent to coveralls will not be processed until the webhook is sent. + COVERALLS_PARALLEL: true +notifications: + webhooks: + # Inform coveralls that all builds are complete. https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook + - secure: "YnHYbTq51ySistjvOxsuNhyg4GLuUffEJstTYeGYXiBF7HG5h43IVYo8KNuLzwkgsOYBcNo+YMdQX7qCqJffSbhsr1FZRSzBmjFFxcyD4hu+ukM2theZ4mePVAZiePscYvQPRNY4hIb4d3egStJEytkalDhB3sOebF57tIaCssg=" rvm: - 2.0.0 - 2.1.10 diff --git a/gemfiles/pry010.gemfile b/gemfiles/pry010.gemfile index 55507b86..4503b67c 100644 --- a/gemfiles/pry010.gemfile +++ b/gemfiles/pry010.gemfile @@ -4,4 +4,6 @@ gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "binding_of_caller" gem "pry", "~> 0.10.0" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/pry011.gemfile b/gemfiles/pry011.gemfile index 83eaff72..761c5918 100644 --- a/gemfiles/pry011.gemfile +++ b/gemfiles/pry011.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "pry", "~> 0.11.0pre" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/pry09.gemfile b/gemfiles/pry09.gemfile index 8c430150..db7fa6bc 100644 --- a/gemfiles/pry09.gemfile +++ b/gemfiles/pry09.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "pry", "~> 0.9.12" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rack.gemfile b/gemfiles/rack.gemfile index 36e32cca..4f2bab73 100644 --- a/gemfiles/rack.gemfile +++ b/gemfiles/rack.gemfile @@ -2,4 +2,6 @@ source "https://rubygems.org" gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rack_boc.gemfile b/gemfiles/rack_boc.gemfile index 316251bc..0899c028 100644 --- a/gemfiles/rack_boc.gemfile +++ b/gemfiles/rack_boc.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem 'rack', RUBY_VERSION < '2.2.2' ? '~> 1.6' : '~> 2.0' gem "binding_of_caller" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails42.gemfile b/gemfiles/rails42.gemfile index 03ee8720..660cab71 100644 --- a/gemfiles/rails42.gemfile +++ b/gemfiles/rails42.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem "rails", "~> 4.2.0" gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails42_boc.gemfile b/gemfiles/rails42_boc.gemfile index f3fc8ac8..1583dfc0 100644 --- a/gemfiles/rails42_boc.gemfile +++ b/gemfiles/rails42_boc.gemfile @@ -4,4 +4,6 @@ gem "rails", "~> 4.2.0" gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' gem "binding_of_caller" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails42_haml.gemfile b/gemfiles/rails42_haml.gemfile index e9cd732e..c5943bdc 100644 --- a/gemfiles/rails42_haml.gemfile +++ b/gemfiles/rails42_haml.gemfile @@ -4,4 +4,6 @@ gem "rails", "~> 4.2.0" gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' gem "haml" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails50.gemfile b/gemfiles/rails50.gemfile index a2712023..1ec863db 100644 --- a/gemfiles/rails50.gemfile +++ b/gemfiles/rails50.gemfile @@ -2,4 +2,6 @@ source "https://rubygems.org" gem "rails", "~> 5.0.0" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails50_boc.gemfile b/gemfiles/rails50_boc.gemfile index cac4b7c1..5706b6b1 100644 --- a/gemfiles/rails50_boc.gemfile +++ b/gemfiles/rails50_boc.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem "rails", "~> 5.0.0" gem "binding_of_caller" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails50_haml.gemfile b/gemfiles/rails50_haml.gemfile index bbd246c6..5a3bb925 100644 --- a/gemfiles/rails50_haml.gemfile +++ b/gemfiles/rails50_haml.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem "rails", "~> 5.0.0" gem "haml" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails51.gemfile b/gemfiles/rails51.gemfile index 4204d8d8..17484cba 100644 --- a/gemfiles/rails51.gemfile +++ b/gemfiles/rails51.gemfile @@ -2,4 +2,6 @@ source "https://rubygems.org" gem "rails", "~> 5.1.0" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails51_boc.gemfile b/gemfiles/rails51_boc.gemfile index 24471dda..9dfb99fe 100644 --- a/gemfiles/rails51_boc.gemfile +++ b/gemfiles/rails51_boc.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem "rails", "~> 5.1.0" gem "binding_of_caller" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/gemfiles/rails51_haml.gemfile b/gemfiles/rails51_haml.gemfile index 9c271d04..7217ace3 100644 --- a/gemfiles/rails51_haml.gemfile +++ b/gemfiles/rails51_haml.gemfile @@ -3,4 +3,6 @@ source "https://rubygems.org" gem "rails", "~> 5.1.0" gem "haml" +gem 'coveralls', require: false + gemspec path: "../" diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index c38ab51d..ea6d9fe1 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,5 +2,10 @@ ENV["EDITOR"] = nil +require 'coveralls' +Coveralls.wear! do + add_filter 'spec/' +end + require 'bundler/setup' Bundler.require(:default) From 23566b1b3c997686882812c1956473c46cbd6f82 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 25 Aug 2017 20:01:55 -0400 Subject: [PATCH 066/160] Disable coverage reporting with ruby 2.4.0/2.4.1 --- spec/spec_helper.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index ea6d9fe1..0469a610 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -2,9 +2,14 @@ ENV["EDITOR"] = nil -require 'coveralls' -Coveralls.wear! do - add_filter 'spec/' +# Ruby 2.4.0 and 2.4.1 has a bug with its Coverage module that causes segfaults. +# https://bugs.ruby-lang.org/issues/13305 +# 2.4.2 should include this patch. +unless RUBY_VERSION == '2.4.0' || RUBY_VERSION == '2.4.1' + require 'coveralls' + Coveralls.wear! do + add_filter 'spec/' + end end require 'bundler/setup' From eabe1eac95a3c4083cdb9410f83cfae6a42d2a3e Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 25 Aug 2017 21:14:50 -0400 Subject: [PATCH 067/160] Add coverage badge --- README.md | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index dc38bf3d..b6eaf1a3 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,9 @@ -# Better Errors [![Gem Version](https://img.shields.io/gem/v/better_errors.svg)](https://rubygems.org/gems/better_errors) [![Build Status](https://travis-ci.org/charliesome/better_errors.svg)](https://travis-ci.org/charliesome/better_errors) [![Code Climate](https://img.shields.io/codeclimate/github/charliesome/better_errors.svg)](https://codeclimate.com/github/charliesome/better_errors) +[![Build Status](https://travis-ci.org/charliesome/better_errors.svg)](https://travis-ci.org/charliesome/better_errors) +[![Code Climate](https://img.shields.io/codeclimate/github/charliesome/better_errors.svg)](https://codeclimate.com/github/charliesome/better_errors) +[![Coverage](https://coveralls.io/repos/github/charliesome/better_errors/badge.svg?branch=master)](https://coveralls.io/github/charliesome/better_errors?branch=master) +[![Gem Version](https://img.shields.io/gem/v/better_errors.svg)](https://rubygems.org/gems/better_errors) + +# Better Errors Better Errors replaces the standard Rails error page with a much better and more useful error page. It is also usable outside of Rails in any Rack app as Rack middleware. From 307bdcf1c4796c4b352dd917e617696539b2aa1d Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 25 Aug 2017 22:18:10 -0400 Subject: [PATCH 068/160] Remove extra env variable from build I've added the variable to the build config instead of having it in here, so it doesn't appear in the Travis build matrix. --- .travis.yml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/.travis.yml b/.travis.yml index dd6fccdc..7ce217a0 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,12 +1,11 @@ sudo: false language: ruby cache: bundler -env: - # With this env variable, coverage information sent to coveralls will not be processed until the webhook is sent. - COVERALLS_PARALLEL: true notifications: webhooks: - # Inform coveralls that all builds are complete. https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook + # With COVERALLS_PARALLEL, coverage information sent to coveralls will not be processed until + # this webhook is sent. + # https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook - secure: "YnHYbTq51ySistjvOxsuNhyg4GLuUffEJstTYeGYXiBF7HG5h43IVYo8KNuLzwkgsOYBcNo+YMdQX7qCqJffSbhsr1FZRSzBmjFFxcyD4hu+ukM2theZ4mePVAZiePscYvQPRNY4hIb4d3egStJEytkalDhB3sOebF57tIaCssg=" rvm: - 2.0.0 From fd4c4dafda4361103007123c2053aae2f37c6073 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 26 Aug 2017 00:19:36 -0400 Subject: [PATCH 069/160] Refactor backtrace_cleaner and add specs # Conflicts: # lib/better_errors/middleware.rb --- lib/better_errors/middleware.rb | 16 +++++------ spec/better_errors/middleware_spec.rb | 39 +++++++++++++++++++++++---- 2 files changed, 42 insertions(+), 13 deletions(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 6cf48648..1e4f8e2d 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -116,17 +116,17 @@ def log_exception return unless BetterErrors.logger message = "\n#{@error_page.exception_type} - #{@error_page.exception_message}:\n" - traces = if defined?(Rails) && defined?(Rails.backtrace_cleaner) - Rails.backtrace_cleaner.clean(@error_page.backtrace_frames.map {|frame| "#{frame}"}) + message += backtrace_frames.map { |frame| " #{frame}\n" }.join + + BetterErrors.logger.fatal message + end + + def backtrace_frames + if defined?(Rails) && defined?(Rails.backtrace_cleaner) + Rails.backtrace_cleaner.clean @error_page.backtrace_frames.map(&:to_s) else @error_page.backtrace_frames end - - traces.each do |frame| - message << " #{frame}\n" - end - - BetterErrors.logger.fatal message end def internal_call(env, opts) diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index c9bcfb16..6bb0ceac 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -176,12 +176,41 @@ def initialize(message, original_exception = nil) expect(headers["Content-Type"]).to match /text\/html/ end - it "logs the exception" do - logger = Object.new - expect(logger).to receive :fatal - allow(BetterErrors).to receive(:logger).and_return(logger) + context 'the logger' do + let(:logger) { double('logger', fatal: nil) } + before do + allow(BetterErrors).to receive(:logger).and_return(logger) + end + + it "receives the exception as a fatal message" do + expect(logger).to receive(:fatal).with(/RuntimeError/) + app.call({}) + end + + context 'when Rails is being used' do + before do + skip("Rails not included in this run") unless defined? Rails + end + + it "receives the exception without filtered backtrace frames" do + expect(logger).to receive(:fatal) do |message| + expect(message).to_not match(/rspec-core/) + end + app.call({}) + end + end + context 'when Rails is not being used' do + before do + skip("Rails is included in this run") if defined? Rails + end - app.call({}) + it "receives the exception with all backtrace frames" do + expect(logger).to receive(:fatal) do |message| + expect(message).to match(/rspec-core/) + end + app.call({}) + end + end end end From 5fc4cb417e3a95aa0def8bb0d07a8aea93d9a127 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 26 Aug 2017 01:15:06 -0400 Subject: [PATCH 070/160] Fix rubymine URLs and add specs --- lib/better_errors.rb | 2 +- spec/better_errors_spec.rb | 16 ++++++++++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index f8a33c6f..e3ad1971 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -18,7 +18,7 @@ module BetterErrors { symbols: [:sublime, :subl, :st], sniff: /subl/i, url: "subl://open?url=file://%{file}&line=%{line}" }, { symbols: [:textmate, :txmt, :tm], sniff: /mate/i, url: "txmt://open?url=file://%{file}&line=%{line}" }, { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" }, - { symbols: [:rubymine], sniff: /rubymine/i, url: "rubymine://open?file=%{file}&line=%{line}" }, + { symbols: [:rubymine], sniff: /mine/i, url: "x-mine://open?file=%{file}&line=%{line}" }, ] class << self diff --git a/spec/better_errors_spec.rb b/spec/better_errors_spec.rb index 40693e00..e9853e8a 100644 --- a/spec/better_errors_spec.rb +++ b/spec/better_errors_spec.rb @@ -69,5 +69,21 @@ expect(subject.editor[]).to start_with "txmt://" end end + + ["mine"].each do |editor| + it "uses x-mine:// scheme when EDITOR=#{editor}" do + ENV["EDITOR"] = editor + subject.editor = subject.default_editor + expect(subject.editor[]).to start_with "x-mine://" + end + end + + ["idea"].each do |editor| + it "uses idea:// scheme when EDITOR=#{editor}" do + ENV["EDITOR"] = editor + subject.editor = subject.default_editor + expect(subject.editor[]).to start_with "idea://" + end + end end end From afbd228b20d76437577cca40a95327e7a291c812 Mon Sep 17 00:00:00 2001 From: Eliot Sykes Date: Fri, 1 Sep 2017 14:53:05 +0100 Subject: [PATCH 071/160] Fix markdown rendering of headline --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b6eaf1a3..e06b5370 100644 --- a/README.md +++ b/README.md @@ -81,7 +81,7 @@ By default, it uses your environment to determine which editor should be opened. See [the wiki for instructions on configuring the editor](https://github.com/charliesome/better_errors/wiki/Link-to-your-editor). -##Set maximum variable size for inspector. +## Set maximum variable size for inspector. ```ruby # e.g. in config/initializers/better_errors.rb From c0f5acabca9cfeecf996a5748419c6c1df489678 Mon Sep 17 00:00:00 2001 From: Alexander Tipugin Date: Mon, 4 Sep 2017 18:53:00 +0300 Subject: [PATCH 072/160] Add support for vscode editor --- lib/better_errors.rb | 1 + spec/better_errors_spec.rb | 8 ++++++++ 2 files changed, 9 insertions(+) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index e3ad1971..22776ea4 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -19,6 +19,7 @@ module BetterErrors { symbols: [:textmate, :txmt, :tm], sniff: /mate/i, url: "txmt://open?url=file://%{file}&line=%{line}" }, { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" }, { symbols: [:rubymine], sniff: /mine/i, url: "x-mine://open?file=%{file}&line=%{line}" }, + { symbols: [:vscode, :code], sniff: /code/i, url: "vscode://file/%{file}:%{line}" }, ] class << self diff --git a/spec/better_errors_spec.rb b/spec/better_errors_spec.rb index e9853e8a..0388200c 100644 --- a/spec/better_errors_spec.rb +++ b/spec/better_errors_spec.rb @@ -85,5 +85,13 @@ expect(subject.editor[]).to start_with "idea://" end end + + ["vscode", "code"].each do |editor| + it "uses vscode:// scheme when EDITOR=#{editor}" do + ENV["EDITOR"] = editor + subject.editor = subject.default_editor + expect(subject.editor[]).to start_with "vscode://" + end + end end end From 946281d441523c9a009657a1c658f5134c17b482 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 11 Oct 2017 16:40:27 -0400 Subject: [PATCH 073/160] Version 2.4.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index dd8bafd8..4f6e0401 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.3.0" + VERSION = "2.4.0" end From 1df5f0d1d9f54f2f3db905e0c9230a56d30c23bb Mon Sep 17 00:00:00 2001 From: Nick Pridorozhko Date: Thu, 20 Oct 2016 16:36:21 +0300 Subject: [PATCH 074/160] add atom to possible editors --- lib/better_errors.rb | 6 ++++-- spec/better_errors_spec.rb | 16 ++++++++++++++++ 2 files changed, 20 insertions(+), 2 deletions(-) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index e3ad1971..45014be8 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -17,8 +17,9 @@ module BetterErrors { symbols: [:macvim, :mvim], sniff: /vim/i, url: proc { |file, line| "mvim://open?url=file://#{file}&line=#{line}" } }, { symbols: [:sublime, :subl, :st], sniff: /subl/i, url: "subl://open?url=file://%{file}&line=%{line}" }, { symbols: [:textmate, :txmt, :tm], sniff: /mate/i, url: "txmt://open?url=file://%{file}&line=%{line}" }, - { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" }, - { symbols: [:rubymine], sniff: /mine/i, url: "x-mine://open?file=%{file}&line=%{line}" }, + { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" }, + { symbols: [:rubymine], sniff: /mine/i, url: "x-mine://open?file=%{file}&line=%{line}" }, + { symbols: [:atom], sniff: /atom/i, url: "atom://core/open/file?filename=%{file}&line=%{line}" }, ] class << self @@ -76,6 +77,7 @@ def self.editor # * `:textmate`, `:txmt`, `:tm` # * `:sublime`, `:subl`, `:st` # * `:macvim` + # * `:atom` # # @param [Symbol] sym # diff --git a/spec/better_errors_spec.rb b/spec/better_errors_spec.rb index e9853e8a..7bf89171 100644 --- a/spec/better_errors_spec.rb +++ b/spec/better_errors_spec.rb @@ -38,6 +38,13 @@ end end + [:atom].each do |editor| + it "uses atom:// scheme when set to #{editor.inspect}" do + subject.editor = editor + subject.editor[].should start_with "atom://" + end + end + ["emacsclient", "/usr/local/bin/emacsclient"].each do |editor| it "uses emacs:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor @@ -70,6 +77,15 @@ end end + + ["atom -w", "/usr/bin/atom -w"].each do |editor| + it "uses atom:// scheme when EDITOR=#{editor}" do + ENV["EDITOR"] = editor + subject.editor = subject.default_editor + subject.editor[].should start_with "atom://" + end + end + ["mine"].each do |editor| it "uses x-mine:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor From f5ca48bcb8342864fcca1fcbef2da2eb943c00be Mon Sep 17 00:00:00 2001 From: xortiz Date: Mon, 1 Jan 2018 19:46:29 -0500 Subject: [PATCH 075/160] Implemented ObjectSpace.memsize_of in inspect_raw_value Imported the ObjectSpace library in order to use the memsize_of when evaluating the size of a variable. Refs: https://github.com/charliesome/better_errors/issues/412 --- lib/better_errors/error_page.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 40cccb1c..17d5a38d 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -1,6 +1,7 @@ require "cgi" require "json" require "securerandom" +require "objspace" module BetterErrors # @private @@ -70,7 +71,7 @@ def first_frame application_frames.first || backtrace_frames.first end - private + private def editor_url(frame) BetterErrors.editor[frame.filename, frame.line] end @@ -112,7 +113,11 @@ def inspect_value(obj) end def inspect_raw_value(obj) - value = CGI.escapeHTML(obj.inspect) + if defined?(ObjectSpace.memsize_of) + value = CGI.escapeHTML(ObjectSpace.memspace_of(obj)) + else + value = CGI.escapeHTML(obj.inspect) + end if value_small_enough_to_inspect?(value) value From 714d613e54aa37a4ea9d16e371f7b5ab0e691da4 Mon Sep 17 00:00:00 2001 From: xortiz Date: Fri, 23 Feb 2018 20:04:58 -0500 Subject: [PATCH 076/160] Extra checks for ObjectSpace, change of values in tests Added some extra checks for the existance ObjectSpace, ObjectSpace.memspace_of, and ObjectSpace.memspace_of(value). Also, changed the value of BetterErrors.maximum_variable_inspect_size from 500 to 1010, within the tests since the value of ObjectSpace.memspace_of(value) is slightly larger than when retrieved from using .length . The default global value of BetterErrors.maximum_variable_inspect_size should probably be redefined as well, due to ObjectSpace.memspace_of(value) being typically larger than when defined by .length . --- lib/better_errors/error_page.rb | 14 +++++++------- spec/better_errors/error_page_spec.rb | 4 ++-- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 17d5a38d..4f90328f 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -71,7 +71,7 @@ def first_frame application_frames.first || backtrace_frames.first end - private + private def editor_url(frame) BetterErrors.editor[frame.filename, frame.line] end @@ -113,11 +113,7 @@ def inspect_value(obj) end def inspect_raw_value(obj) - if defined?(ObjectSpace.memsize_of) - value = CGI.escapeHTML(ObjectSpace.memspace_of(obj)) - else - value = CGI.escapeHTML(obj.inspect) - end + value = CGI.escapeHTML(obj.inspect) if value_small_enough_to_inspect?(value) value @@ -130,7 +126,11 @@ def inspect_raw_value(obj) def value_small_enough_to_inspect?(value) return true if BetterErrors.maximum_variable_inspect_size.nil? - value.length <= BetterErrors.maximum_variable_inspect_size + if defined?(ObjectSpace) && defined?(ObjectSpace.memsize_of) && ObjectSpace.memsize_of(value) + ObjectSpace.memsize_of(value) <= BetterErrors.maximum_variable_inspect_size + else + value.length <= BetterErrors.maximum_variable_inspect_size + end end def eval_and_respond(index, code) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 24a48d06..835dca6e 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -61,7 +61,7 @@ module BetterErrors context 'when maximum_variable_inspect_size is set' do before do - BetterErrors.maximum_variable_inspect_size = 500 + BetterErrors.maximum_variable_inspect_size = 1010 end context 'with a variable that is not larger than maximum_variable_inspect_size' do @@ -84,7 +84,7 @@ module BetterErrors binding } - let(:content) { 'A' * 501 } + let(:content) { 'A' * 1001 } it "includes an indication that the variable was too large" do html = error_page.do_variables("index" => 0)[:html] From 526110ffb3f1b6d41eac538c11c4feb9546aa653 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 19 Apr 2018 16:15:13 -0400 Subject: [PATCH 077/160] Add ruby 2.5 and update 2.2, 2.3, 2.4 --- .travis.yml | 19 +++++++++++++------ 1 file changed, 13 insertions(+), 6 deletions(-) diff --git a/.travis.yml b/.travis.yml index 7ce217a0..df6521f7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -10,9 +10,10 @@ notifications: rvm: - 2.0.0 - 2.1.10 - - 2.2.7 - - 2.3.4 - - 2.4.1 + - 2.2.10 + - 2.3.7 + - 2.4.4 + - 2.5.1 - ruby-head gemfile: - gemfiles/rails42.gemfile @@ -60,9 +61,15 @@ matrix: gemfile: gemfiles/rails51_boc.gemfile - rvm: 2.1.10 gemfile: gemfiles/rails51_haml.gemfile - - rvm: 2.4.1 + - rvm: 2.4.4 gemfile: gemfiles/rails42.gemfile - - rvm: 2.4.1 + - rvm: 2.4.4 gemfile: gemfiles/rails42_boc.gemfile - - rvm: 2.4.1 + - rvm: 2.4.4 + gemfile: gemfiles/rails42_haml.gemfile + - rvm: 2.5.1 + gemfile: gemfiles/rails42.gemfile + - rvm: 2.5.1 + gemfile: gemfiles/rails42_boc.gemfile + - rvm: 2.5.1 gemfile: gemfiles/rails42_haml.gemfile From 111a670a5f068a0b0c657cc03e6620bc115aa949 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 19 Apr 2018 16:17:38 -0400 Subject: [PATCH 078/160] Add Rails 5.2 to CI --- .travis.yml | 3 +++ gemfiles/rails52.gemfile | 7 +++++++ gemfiles/rails52_boc.gemfile | 8 ++++++++ gemfiles/rails52_haml.gemfile | 8 ++++++++ 4 files changed, 26 insertions(+) create mode 100644 gemfiles/rails52.gemfile create mode 100644 gemfiles/rails52_boc.gemfile create mode 100644 gemfiles/rails52_haml.gemfile diff --git a/.travis.yml b/.travis.yml index df6521f7..bfc1d607 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,12 +19,15 @@ gemfile: - gemfiles/rails42.gemfile - gemfiles/rails50.gemfile - gemfiles/rails51.gemfile + - gemfiles/rails52.gemfile - gemfiles/rails42_haml.gemfile - gemfiles/rails50_haml.gemfile - gemfiles/rails51_haml.gemfile + - gemfiles/rails52_haml.gemfile - gemfiles/rails42_boc.gemfile - gemfiles/rails50_boc.gemfile - gemfiles/rails51_boc.gemfile + - gemfiles/rails52_boc.gemfile - gemfiles/rack.gemfile - gemfiles/rack_boc.gemfile - gemfiles/pry09.gemfile diff --git a/gemfiles/rails52.gemfile b/gemfiles/rails52.gemfile new file mode 100644 index 00000000..d99e1e26 --- /dev/null +++ b/gemfiles/rails52.gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem "rails", "~> 5.2.0" + +gem 'coveralls', require: false + +gemspec path: "../" diff --git a/gemfiles/rails52_boc.gemfile b/gemfiles/rails52_boc.gemfile new file mode 100644 index 00000000..b86e73f5 --- /dev/null +++ b/gemfiles/rails52_boc.gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "rails", "~> 5.2.0" +gem "binding_of_caller" + +gem 'coveralls', require: false + +gemspec path: "../" diff --git a/gemfiles/rails52_haml.gemfile b/gemfiles/rails52_haml.gemfile new file mode 100644 index 00000000..91aafe66 --- /dev/null +++ b/gemfiles/rails52_haml.gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "rails", "~> 5.2.0" +gem "haml" + +gem 'coveralls', require: false + +gemspec path: "../" From 7e4d886bc06b0f3281247527be26769ffbf45d1c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 19 Apr 2018 18:05:55 -0400 Subject: [PATCH 079/160] Exclude old Rubies from Rails 5.2 --- .travis.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.travis.yml b/.travis.yml index bfc1d607..2d6528fa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -52,6 +52,12 @@ matrix: gemfile: gemfiles/rails51_boc.gemfile - rvm: 2.0.0 gemfile: gemfiles/rails51_haml.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails52.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails52_boc.gemfile + - rvm: 2.0.0 + gemfile: gemfiles/rails52_haml.gemfile - rvm: 2.1.10 gemfile: gemfiles/rails50.gemfile - rvm: 2.1.10 @@ -64,6 +70,12 @@ matrix: gemfile: gemfiles/rails51_boc.gemfile - rvm: 2.1.10 gemfile: gemfiles/rails51_haml.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails52.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails52_boc.gemfile + - rvm: 2.1.10 + gemfile: gemfiles/rails52_haml.gemfile - rvm: 2.4.4 gemfile: gemfiles/rails42.gemfile - rvm: 2.4.4 From 7f3068b3921a9a38aaa9730e26a32b2d59510e5e Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 20 Apr 2018 00:08:09 -0400 Subject: [PATCH 080/160] Attempt to fix Travis bundler issue --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 2d6528fa..db8d1ea7 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,9 @@ sudo: false language: ruby cache: bundler +before_install: + - gem update --system + - gem update bundler notifications: webhooks: # With COVERALLS_PARALLEL, coverage information sent to coveralls will not be processed until From d404c05bb419b0cf99a871ef257c94640c44e720 Mon Sep 17 00:00:00 2001 From: Paul Dobbins Date: Fri, 4 May 2018 12:09:00 -0500 Subject: [PATCH 081/160] Rescue on undefined local variables in frame_binding For example, I see errors on local variables: `m`, `args`, `block`, `r`, and `target` when inspecting an error on a class that inherits from SimpleDelegator. Fix: Add a rescue on NameError to catch these. Fixes issue: https://github.com/charliesome/better_errors/issues/351 Inspiration for this fix comes from @glebtv in https://github.com/glebtv/better_errors/commit/6d00365df24eb5660ab32be16728089f7fa1ae13 --- lib/better_errors/stack_frame.rb | 22 +++++++++++++++++----- 1 file changed, 17 insertions(+), 5 deletions(-) diff --git a/lib/better_errors/stack_frame.rb b/lib/better_errors/stack_frame.rb index 46518031..4b78c951 100644 --- a/lib/better_errors/stack_frame.rb +++ b/lib/better_errors/stack_frame.rb @@ -76,14 +76,16 @@ def local_variables # considered a bug in Ruby itself, but we need to work around it. next if name == :"\#$!" - if defined?(frame_binding.local_variable_get) - hash[name] = frame_binding.local_variable_get(name) - else - hash[name] = frame_binding.eval(name.to_s) - end + hash[name] = local_variable(name) end end + def local_variable(name) + get_local_variable(name) || eval_local_variable(name) + rescue NameError => ex + "#{ex.class}: #{ex.message}" + end + def instance_variables return {} unless frame_binding Hash[visible_instance_variables.map { |x| @@ -114,5 +116,15 @@ def set_pretty_method_name @method_name = "##{method_name}" end end + + def get_local_variable(name) + if defined?(frame_binding.local_variable_get) + frame_binding.local_variable_get(name) + end + end + + def eval_local_variable(name) + frame_binding.eval(name.to_s) + end end end From f524abc6581b94dc765f1d1eb18369644dd28483 Mon Sep 17 00:00:00 2001 From: Paul Dobbins Date: Sun, 6 May 2018 14:17:35 -0500 Subject: [PATCH 082/160] fixup! Rescue on undefined local variables in frame_binding --- spec/better_errors/stack_frame_spec.rb | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/spec/better_errors/stack_frame_spec.rb b/spec/better_errors/stack_frame_spec.rb index 50bb460c..23a8982c 100644 --- a/spec/better_errors/stack_frame_spec.rb +++ b/spec/better_errors/stack_frame_spec.rb @@ -81,6 +81,26 @@ module BetterErrors end end + context "#local_variable" do + it "returns exception details when #get_local_variable raises NameError" do + frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") + allow(frame).to receive(:get_local_variable).and_raise(NameError.new("details")) + expect(frame.local_variable("foo")).to eq("NameError: details") + end + + it "returns exception details when #eval_local_variable raises NameError" do + frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") + allow(frame).to receive(:eval_local_variable).and_raise(NameError.new("details")) + expect(frame.local_variable("foo")).to eq("NameError: details") + end + + it "raises on non-NameErrors" do + frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") + allow(frame).to receive(:get_local_variable).and_raise(ArgumentError) + expect { frame.local_variable("foo") }.to raise_error + end + end + it "special cases SyntaxErrors" do begin eval(%{ raise SyntaxError, "you wrote bad ruby!" }, nil, "my_file.rb", 123) From 6b511f876dd1f49e921fb00c7b44af4cdff9d28a Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 23 Jun 2018 20:23:08 -0400 Subject: [PATCH 083/160] Remove oldest rubies from CI 2.2 is no longer supported, so removing the previous 2 versions. --- .travis.yml | 38 -------------------------------------- 1 file changed, 38 deletions(-) diff --git a/.travis.yml b/.travis.yml index db8d1ea7..cfee4efa 100644 --- a/.travis.yml +++ b/.travis.yml @@ -11,8 +11,6 @@ notifications: # https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook - secure: "YnHYbTq51ySistjvOxsuNhyg4GLuUffEJstTYeGYXiBF7HG5h43IVYo8KNuLzwkgsOYBcNo+YMdQX7qCqJffSbhsr1FZRSzBmjFFxcyD4hu+ukM2theZ4mePVAZiePscYvQPRNY4hIb4d3egStJEytkalDhB3sOebF57tIaCssg=" rvm: - - 2.0.0 - - 2.1.10 - 2.2.10 - 2.3.7 - 2.4.4 @@ -43,42 +41,6 @@ matrix: - gemfile: gemfiles/pry010.gemfile - gemfile: gemfiles/pry011.gemfile exclude: - - rvm: 2.0.0 - gemfile: gemfiles/rails50.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails50_boc.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails50_haml.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails51.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails51_boc.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails51_haml.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails52.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails52_boc.gemfile - - rvm: 2.0.0 - gemfile: gemfiles/rails52_haml.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails50.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails50_boc.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails50_haml.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails51.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails51_boc.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails51_haml.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails52.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails52_boc.gemfile - - rvm: 2.1.10 - gemfile: gemfiles/rails52_haml.gemfile - rvm: 2.4.4 gemfile: gemfiles/rails42.gemfile - rvm: 2.4.4 From e1a1d7461c10693c6b5c16013230bbe6631231ce Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 23 Jun 2018 20:41:58 -0400 Subject: [PATCH 084/160] Update event names to support Turbolinks 5 --- lib/better_errors/templates/main.erb | 22 ++++++++++++++++------ 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index 81487982..f0041177 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -721,12 +721,22 @@ if(document.styleSheets[i].href) document.styleSheets[i].disabled = true; } - document.addEventListener("page:restore", function restoreCSS(e) { - for(var i=0; i < document.styleSheets.length; i++) { - document.styleSheets[i].disabled = false; - } - document.removeEventListener("page:restore", restoreCSS, false); - }); + if (window.Turbolinks.controller) { + // Turbolinks > 5 (see https://github.com/turbolinks/turbolinks/issues/6) + document.addEventListener("turbolinks:load", function restoreCSS(e) { + for(var i=0; i < document.styleSheets.length; i++) { + document.styleSheets[i].disabled = false; + } + document.removeEventListener("turbolinks:load", restoreCSS, false); + }); + } else { + document.addEventListener("page:restore", function restoreCSS(e) { + for(var i=0; i < document.styleSheets.length; i++) { + document.styleSheets[i].disabled = false; + } + document.removeEventListener("page:restore", restoreCSS, false); + }); + } } From f1c2fdc219409513cf64e8adb1f132598374ee68 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 23 Jun 2018 21:59:03 -0400 Subject: [PATCH 085/160] Refactor variable inspection into InspectableValue --- lib/better_errors.rb | 1 + lib/better_errors/error_page.rb | 33 ++++------------- lib/better_errors/inspectable_value.rb | 39 ++++++++++++++++++++ spec/better_errors/error_page_spec.rb | 49 +++++++++++++++++++------- 4 files changed, 84 insertions(+), 38 deletions(-) create mode 100644 lib/better_errors/inspectable_value.rb diff --git a/lib/better_errors.rb b/lib/better_errors.rb index e3ad1971..7028af67 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -4,6 +4,7 @@ require "uri" require "better_errors/code_formatter" +require "better_errors/inspectable_value" require "better_errors/error_page" require "better_errors/middleware" require "better_errors/raised_exception" diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 4f90328f..f417a3d9 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -1,7 +1,6 @@ require "cgi" require "json" require "securerandom" -require "objspace" module BetterErrors # @private @@ -71,7 +70,8 @@ def first_frame application_frames.first || backtrace_frames.first end - private + private + def editor_url(frame) BetterErrors.editor[frame.filename, frame.line] end @@ -105,34 +105,15 @@ def text_heading(char, str) end def inspect_value(obj) - inspect_raw_value(obj) - rescue NoMethodError - "(object doesn't support inspect)" + InspectableValue.new(obj).to_html + rescue BetterErrors::ValueLargerThanConfiguredMaximum + "(object too large. "\ + "Modify #{CGI.escapeHTML(obj.class.name)}#inspect "\ + "or adjust BetterErrors.maximum_variable_inspect_size)" rescue Exception => e "(exception #{CGI.escapeHTML(e.class.to_s)} was raised in inspect)" end - def inspect_raw_value(obj) - value = CGI.escapeHTML(obj.inspect) - - if value_small_enough_to_inspect?(value) - value - else - "(object too large. "\ - "Modify #{CGI.escapeHTML(obj.class.to_s)}#inspect "\ - "or increase BetterErrors.maximum_variable_inspect_size)" - end - end - - def value_small_enough_to_inspect?(value) - return true if BetterErrors.maximum_variable_inspect_size.nil? - if defined?(ObjectSpace) && defined?(ObjectSpace.memsize_of) && ObjectSpace.memsize_of(value) - ObjectSpace.memsize_of(value) <= BetterErrors.maximum_variable_inspect_size - else - value.length <= BetterErrors.maximum_variable_inspect_size - end - end - def eval_and_respond(index, code) result, prompt, prefilled_input = @repls[index].send_input(code) diff --git a/lib/better_errors/inspectable_value.rb b/lib/better_errors/inspectable_value.rb new file mode 100644 index 00000000..4a12589e --- /dev/null +++ b/lib/better_errors/inspectable_value.rb @@ -0,0 +1,39 @@ +require "cgi" +require "objspace" rescue nil + +module BetterErrors + class ValueLargerThanConfiguredMaximum < StandardError; end + + class InspectableValue + def initialize(value) + @original_value = value + end + + def to_html + raise ValueLargerThanConfiguredMaximum unless value_small_enough_to_inspect? + @html ||= CGI.escapeHTML(value) + end + + private + + attr_reader :original_value + + def value + @value ||= if original_value.respond_to? :inspect + original_value.inspect + else + original_value + end + end + + def value_small_enough_to_inspect? + return true if BetterErrors.maximum_variable_inspect_size.nil? + + if defined?(ObjectSpace) && defined?(ObjectSpace.memsize_of) && ObjectSpace.memsize_of(value) + ObjectSpace.memsize_of(value) <= BetterErrors.maximum_variable_inspect_size + else + to_html.length <= BetterErrors.maximum_variable_inspect_size + end + end + end +end diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 835dca6e..77c92ed8 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -64,7 +64,7 @@ module BetterErrors BetterErrors.maximum_variable_inspect_size = 1010 end - context 'with a variable that is not larger than maximum_variable_inspect_size' do + context 'with a variable that is smaller than maximum_variable_inspect_size' do let(:exception_binding) { @small = content @@ -79,17 +79,42 @@ module BetterErrors end context 'with a variable that is larger than maximum_variable_inspect_size' do - let(:exception_binding) { - @big = content - - binding - } - let(:content) { 'A' * 1001 } - - it "includes an indication that the variable was too large" do - html = error_page.do_variables("index" => 0)[:html] - expect(html).to_not include(content) - expect(html).to include("object too large") + context 'but has an #inspect that returns a smaller value' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { + class ExtremelyLargeInspectableTestValue + def initialize + @a = 'A' * 1101 + end + def inspect + "shortval" + end + end + InspectableTestValue.new + } + + it "shows the variable content" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include("shortval") + end + end + context 'and does not implement #inspect' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { 'A' * 1101 } + + it "includes an indication that the variable was too large" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to_not include(content) + expect(html).to include("object too large") + end end end end From f3afff13460564270473b08d84c0c3a4de395d6a Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 23 Jun 2018 22:19:46 -0400 Subject: [PATCH 086/160] Generate local coverage and save Coveralls for CI. --- spec/spec_helper.rb | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index 0469a610..a88d6e75 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -5,11 +5,16 @@ # Ruby 2.4.0 and 2.4.1 has a bug with its Coverage module that causes segfaults. # https://bugs.ruby-lang.org/issues/13305 # 2.4.2 should include this patch. -unless RUBY_VERSION == '2.4.0' || RUBY_VERSION == '2.4.1' - require 'coveralls' - Coveralls.wear! do - add_filter 'spec/' +if ENV['CI'] + unless RUBY_VERSION == '2.4.0' || RUBY_VERSION == '2.4.1' + require 'coveralls' + Coveralls.wear! do + add_filter 'spec/' + end end +else + require 'simplecov' + SimpleCov.start end require 'bundler/setup' From 3a49e21c88a374f0b6e4d61003227f58a73b8611 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 23 Jun 2018 22:47:38 -0400 Subject: [PATCH 087/160] Syntax fix --- lib/better_errors/inspectable_value.rb | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/lib/better_errors/inspectable_value.rb b/lib/better_errors/inspectable_value.rb index 4a12589e..2df6187f 100644 --- a/lib/better_errors/inspectable_value.rb +++ b/lib/better_errors/inspectable_value.rb @@ -19,10 +19,12 @@ def to_html attr_reader :original_value def value - @value ||= if original_value.respond_to? :inspect - original_value.inspect - else - original_value + @value ||= begin + if original_value.respond_to? :inspect + original_value.inspect + else + original_value + end end end From 76d14a26e0f85f1688a2aea2a7fb86bd6345505b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 23 Jun 2018 22:57:11 -0400 Subject: [PATCH 088/160] Add Codacy badge to README --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index e06b5370..89de164c 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ [![Build Status](https://travis-ci.org/charliesome/better_errors.svg)](https://travis-ci.org/charliesome/better_errors) -[![Code Climate](https://img.shields.io/codeclimate/github/charliesome/better_errors.svg)](https://codeclimate.com/github/charliesome/better_errors) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/6bc3e7d6118d47e6959b16690b815909)](https://www.codacy.com/app/BetterErrors/better_errors?utm_source=github.com&utm_medium=referral&utm_content=charliesome/better_errors&utm_campaign=Badge_Grade) [![Coverage](https://coveralls.io/repos/github/charliesome/better_errors/badge.svg?branch=master)](https://coveralls.io/github/charliesome/better_errors?branch=master) [![Gem Version](https://img.shields.io/gem/v/better_errors.svg)](https://rubygems.org/gems/better_errors) @@ -7,7 +7,7 @@ Better Errors replaces the standard Rails error page with a much better and more useful error page. It is also usable outside of Rails in any Rack app as Rack middleware. -![image](https://i.imgur.com/6zBGAAb.png) +![screenshot of Better Errors in action](https://i.imgur.com/6zBGAAb.png) ## Features From fa3c62a9b001b5c9b7395b2255f7d4d19928ffbe Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 27 Jun 2018 23:48:07 -0400 Subject: [PATCH 089/160] Add failing specs when ObjectSpace is missing The existing specs only tested operation with ObjectSpace, and I introduced a stack overflow when operating without it. --- spec/better_errors/error_page_spec.rb | 134 +++++++++++++++++++------- 1 file changed, 101 insertions(+), 33 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 77c92ed8..1d802651 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -64,56 +64,124 @@ module BetterErrors BetterErrors.maximum_variable_inspect_size = 1010 end - context 'with a variable that is smaller than maximum_variable_inspect_size' do - let(:exception_binding) { - @small = content - - binding - } - let(:content) { 'A' * 480 } - - it "shows the variable content" do - html = error_page.do_variables("index" => 0)[:html] - expect(html).to include(content) + context 'on a platform with ObjectSpace' do + before do + skip "Missing on this platform" unless Object.constants.include?(:ObjectSpace) end - end - context 'with a variable that is larger than maximum_variable_inspect_size' do - context 'but has an #inspect that returns a smaller value' do + context 'with a variable that is smaller than maximum_variable_inspect_size' do let(:exception_binding) { - @big = content + @small = content binding } - let(:content) { - class ExtremelyLargeInspectableTestValue - def initialize - @a = 'A' * 1101 - end - def inspect - "shortval" - end - end - InspectableTestValue.new - } + let(:content) { 'A' * 480 } it "shows the variable content" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("shortval") + expect(html).to include(content) + end + end + + context 'with a variable that is larger than maximum_variable_inspect_size' do + context 'but has an #inspect that returns a smaller value' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { + class ExtremelyLargeInspectableTestValue + def initialize + @a = 'A' * 1101 + end + def inspect + "shortval" + end + end + InspectableTestValue.new + } + + it "shows the variable content" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include("shortval") + end + end + context 'and does not implement #inspect' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { 'A' * 1101 } + + it "includes an indication that the variable was too large" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to_not include(content) + expect(html).to include("object too large") + end end end - context 'and does not implement #inspect' do + end + context 'on a platform without ObjectSpace' do + before do + Object.send(:remove_const, :ObjectSpace) if Object.constants.include?(:ObjectSpace) + end + after do + require "objspace" rescue nil + end + + context 'with a variable that is smaller than maximum_variable_inspect_size' do let(:exception_binding) { - @big = content + @small = content binding } - let(:content) { 'A' * 1101 } + let(:content) { 'A' * 480 } - it "includes an indication that the variable was too large" do + it "shows the variable content" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to_not include(content) - expect(html).to include("object too large") + expect(html).to include(content) + end + end + + context 'with a variable that is larger than maximum_variable_inspect_size' do + context 'but has an #inspect that returns a smaller value' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { + class ExtremelyLargeInspectableTestValue + def initialize + @a = 'A' * 1101 + end + def inspect + "shortval" + end + end + InspectableTestValue.new + } + + it "shows the variable content" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include("shortval") + end + end + context 'and does not implement #inspect' do + let(:exception_binding) { + @big = content + + binding + } + let(:content) { 'A' * 1101 } + + it "includes an indication that the variable was too large" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to_not include(content) + expect(html).to include("object too large") + end end end end From 0d4b68b65c0efccd321546d4b0741f3e111d161f Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 27 Jun 2018 23:48:27 -0400 Subject: [PATCH 090/160] Fix stack overflow when without ObjectSpace --- lib/better_errors/inspectable_value.rb | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/inspectable_value.rb b/lib/better_errors/inspectable_value.rb index 2df6187f..b62beb6e 100644 --- a/lib/better_errors/inspectable_value.rb +++ b/lib/better_errors/inspectable_value.rb @@ -11,13 +11,17 @@ def initialize(value) def to_html raise ValueLargerThanConfiguredMaximum unless value_small_enough_to_inspect? - @html ||= CGI.escapeHTML(value) + value_as_html end private attr_reader :original_value + def value_as_html + @value_as_html ||= CGI.escapeHTML(value) + end + def value @value ||= begin if original_value.respond_to? :inspect @@ -34,7 +38,7 @@ def value_small_enough_to_inspect? if defined?(ObjectSpace) && defined?(ObjectSpace.memsize_of) && ObjectSpace.memsize_of(value) ObjectSpace.memsize_of(value) <= BetterErrors.maximum_variable_inspect_size else - to_html.length <= BetterErrors.maximum_variable_inspect_size + value_as_html.length <= BetterErrors.maximum_variable_inspect_size end end end From 300949658e5cd729e4349eadb02be8d6e4d96503 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 28 Jun 2018 00:44:11 -0400 Subject: [PATCH 091/160] Version 2.5.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index 4f6e0401..c677a2fc 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.4.0" + VERSION = "2.5.0" end From 638bbc6b3e40c93dfc30c1c429b843474e71e2e8 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 27 Aug 2018 17:06:09 -0400 Subject: [PATCH 092/160] Update GitHub URL --- CHANGELOG.md | 2 +- README.md | 14 +++++++------- better_errors.gemspec | 2 +- lib/better_errors.rb | 2 +- lib/better_errors/templates/main.erb | 2 +- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 00fc2466..f5f26803 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,3 @@ # Changelog -See https://github.com/charliesome/better_errors/releases +See https://github.com/BetterErrors/better_errors/releases diff --git a/README.md b/README.md index 89de164c..7ddee48b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ -[![Build Status](https://travis-ci.org/charliesome/better_errors.svg)](https://travis-ci.org/charliesome/better_errors) -[![Codacy Badge](https://api.codacy.com/project/badge/Grade/6bc3e7d6118d47e6959b16690b815909)](https://www.codacy.com/app/BetterErrors/better_errors?utm_source=github.com&utm_medium=referral&utm_content=charliesome/better_errors&utm_campaign=Badge_Grade) -[![Coverage](https://coveralls.io/repos/github/charliesome/better_errors/badge.svg?branch=master)](https://coveralls.io/github/charliesome/better_errors?branch=master) +[![Build Status](https://travis-ci.org/BetterErrors/better_errors.svg)](https://travis-ci.org/BetterErrors/better_errors) +[![Codacy Badge](https://api.codacy.com/project/badge/Grade/6bc3e7d6118d47e6959b16690b815909)](https://www.codacy.com/app/BetterErrors/better_errors?utm_source=github.com&utm_medium=referral&utm_content=BetterErrors/better_errors&utm_campaign=Badge_Grade) +[![Coverage](https://coveralls.io/repos/github/BetterErrors/better_errors/badge.svg?branch=master)](https://coveralls.io/github/BetterErrors/better_errors?branch=master) [![Gem Version](https://img.shields.io/gem/v/better_errors.svg)](https://rubygems.org/gems/better_errors) # Better Errors @@ -11,7 +11,7 @@ Better Errors replaces the standard Rails error page with a much better and more ## Features -For screenshots of these features, [see the wiki](https://github.com/charliesome/better_errors/wiki). +For screenshots of these features, [see the wiki](https://github.com/BetterErrors/better_errors/wiki). * Full stack trace * Source code inspection for all stack frames (with highlighting) @@ -43,7 +43,7 @@ _Note: If you discover that Better Errors isn't working - particularly after upg You will notice that the only machine that gets the Better Errors page is localhost, which means you get the default error page if you are developing on a remote host (or a virtually remote host, such as a Vagrant box). Obviously, the REPL is not something you want to expose to the public, and there may be sensitive information available in the backtrace. -For more information on how to configure access, see [the wiki](https://github.com/charliesome/better_errors/wiki/Allowing-access-to-the-console). +For more information on how to configure access, see [the wiki](https://github.com/BetterErrors/better_errors/wiki/Allowing-access-to-the-console). ## Usage @@ -53,7 +53,7 @@ If you're using Rails, there's nothing else you need to do. If you're not using Rails, you need to insert `BetterErrors::Middleware` into your middleware stack, and optionally set `BetterErrors.application_root` if you'd like Better Errors to abbreviate filenames within your application. -For instructions for your specific middleware, [see the wiki](https://github.com/charliesome/better_errors/wiki/Non-Rails-frameworks). +For instructions for your specific middleware, [see the wiki](https://github.com/BetterErrors/better_errors/wiki/Non-Rails-frameworks). ### Plain text requests @@ -78,7 +78,7 @@ to troubleshoot an issue in development. Better Errors includes a link to your editor for the file and line of code that is being shown. By default, it uses your environment to determine which editor should be opened. -See [the wiki for instructions on configuring the editor](https://github.com/charliesome/better_errors/wiki/Link-to-your-editor). +See [the wiki for instructions on configuring the editor](https://github.com/BetterErrors/better_errors/wiki/Link-to-your-editor). ## Set maximum variable size for inspector. diff --git a/better_errors.gemspec b/better_errors.gemspec index 7b5164bd..74093c25 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -9,7 +9,7 @@ Gem::Specification.new do |s| s.email = ["charlie@charliesomerville.com"] s.description = %q{Provides a better error page for Rails and other Rack apps. Includes source code inspection, a live REPL and local/instance variable inspection for all stack frames.} s.summary = %q{Better error page for Rails and other Rack apps} - s.homepage = "https://github.com/charliesome/better_errors" + s.homepage = "https://github.com/BetterErrors/better_errors" s.license = "MIT" s.files = `git ls-files -z`.split("\x0").reject do |f| diff --git a/lib/better_errors.rb b/lib/better_errors.rb index e9649e53..27a13d67 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -129,7 +129,7 @@ def self.editor=(editor) # Enables experimental Pry support in the inline REPL # # If you encounter problems while using Pry, *please* file a bug report at - # https://github.com/charliesome/better_errors/issues + # https://github.com/BetterErrors/better_errors/issues def self.use_pry! REPL::PROVIDERS.unshift const: :Pry, impl: "better_errors/repl/pry" end diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index f0041177..b373f2f6 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -953,7 +953,7 @@ if(response.explanation) { el.innerHTML += "

" + escapeHTML(response.explanation) + "

"; } - el.innerHTML += "

More about Better Errors

"; + el.innerHTML += "

More about Better Errors

"; } else { el.innerHTML = response.html; From 8077c90dda36e1b510558657092ebd6087dcd914 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Pitucha?= Date: Mon, 3 Sep 2018 10:13:19 +1000 Subject: [PATCH 093/160] Add rubygems metadata Add metadata links for quick access from the rubygems catalogue. --- better_errors.gemspec | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/better_errors.gemspec b/better_errors.gemspec index 74093c25..772018ea 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -33,4 +33,10 @@ Gem::Specification.new do |s| # optional dependencies: # s.add_dependency "binding_of_caller" # s.add_dependency "pry" + + if s.respond_to?(:metadata) + s.metadata['changelog_uri'] = 'https://github.com/BetterErrors/better_errors/releases' + s.metadata['source_code_uri'] = 'https://github.com/BetterErrors/better_errors' + s.metadata['bug_tracker_uri'] = 'https://github.com/BetterErrors/better_errors/issues' + end end From 51bd42a9df48e073d3cf9932969627ad4bc6898b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stanis=C5=82aw=20Pitucha?= Date: Thu, 8 Nov 2018 16:56:46 +1100 Subject: [PATCH 094/160] Warn on missing metadata support. --- better_errors.gemspec | 2 ++ 1 file changed, 2 insertions(+) diff --git a/better_errors.gemspec b/better_errors.gemspec index 772018ea..2863b787 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -38,5 +38,7 @@ Gem::Specification.new do |s| s.metadata['changelog_uri'] = 'https://github.com/BetterErrors/better_errors/releases' s.metadata['source_code_uri'] = 'https://github.com/BetterErrors/better_errors' s.metadata['bug_tracker_uri'] = 'https://github.com/BetterErrors/better_errors/issues' + else + puts "Your RubyGems does not support metadata. Update if you'd like to make a release." end end From 679b7deca53e50c22c14a103cd3f4972e459622d Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 12 Nov 2018 16:27:50 -0500 Subject: [PATCH 095/160] Fix NoMethodError when variables cannot be gotten --- lib/better_errors/stack_frame.rb | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/stack_frame.rb b/lib/better_errors/stack_frame.rb index 4b78c951..706edaf1 100644 --- a/lib/better_errors/stack_frame.rb +++ b/lib/better_errors/stack_frame.rb @@ -69,7 +69,10 @@ def pretty_path def local_variables return {} unless frame_binding - frame_binding.eval("local_variables").each_with_object({}) do |name, hash| + lv = frame_binding.eval("local_variables") + return {} unless lv + + lv.each_with_object({}) do |name, hash| # Ruby 2.2's local_variables will include the hidden #$! variable if # called from within a rescue context. This is not a valid variable name, # so the local_variable_get method complains. This should probably be @@ -94,7 +97,10 @@ def instance_variables end def visible_instance_variables - frame_binding.eval("instance_variables") - BetterErrors.ignored_instance_variables + iv = frame_binding.eval("instance_variables") + return {} unless iv + + iv - BetterErrors.ignored_instance_variables end def to_s From 893e72e365353bbfae2c44817c05a25beade8466 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 1 Feb 2019 10:26:08 -0500 Subject: [PATCH 096/160] Fall back to older rubygems on Ruby 2.2 --- .travis.yml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index cfee4efa..2ddf9307 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,7 +2,8 @@ sudo: false language: ruby cache: bundler before_install: - - gem update --system + # Since rubygems 3.0+ only support Ruby 2.3+, we must install the old version for older Rubies. + - if [[ `ruby -v` == *"ruby 2.2"* ]]; then gem install rubygems-update -v '<3'; update_rubygems; else gem update --system; fi - gem update bundler notifications: webhooks: From 7d7d17a32fa61ef81ac6e992746b0376d16f3c1b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 1 Feb 2019 13:36:58 -0500 Subject: [PATCH 097/160] Use even older rubygems for Rails 4.2 --- .travis.yml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 2ddf9307..1bd91f99 100644 --- a/.travis.yml +++ b/.travis.yml @@ -2,8 +2,19 @@ sudo: false language: ruby cache: bundler before_install: - # Since rubygems 3.0+ only support Ruby 2.3+, we must install the old version for older Rubies. - - if [[ `ruby -v` == *"ruby 2.2"* ]]; then gem install rubygems-update -v '<3'; update_rubygems; else gem update --system; fi + # Since rubygems 3.0+ only supports Ruby 2.3+, we must install the old version for older Rubies. + # Since Rails 4.2 only supports rubygems < 2, we must install an even older version for it. + - > + if [[ "$BUNDLE_GEMFILE" =~ "rails42" ]]; then + gem install rubygems-update -v '<2' + update_rubygems + elif [[ `ruby -v` == *"ruby 2.2"* ]]; then + gem install rubygems-update -v '<3' + update_rubygems + else + gem update --system + fi + - gem update bundler notifications: webhooks: From a7e10cf58b2f847896d5aab81d24d471a0741aa6 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 1 Feb 2019 20:21:09 -0500 Subject: [PATCH 098/160] Fix bundler version when using older rubygems --- .travis.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index 1bd91f99..17a0dc87 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,14 +8,17 @@ before_install: if [[ "$BUNDLE_GEMFILE" =~ "rails42" ]]; then gem install rubygems-update -v '<2' update_rubygems + gem uninstall bundler --force --executables + gem install bundler -v "~> 1.3" elif [[ `ruby -v` == *"ruby 2.2"* ]]; then gem install rubygems-update -v '<3' update_rubygems + gem update bundler else gem update --system + gem update bundler fi - - gem update bundler notifications: webhooks: # With COVERALLS_PARALLEL, coverage information sent to coveralls will not be processed until From e4cfa2f2f0c896e75a19c6ed244c00f8dd144f09 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 2 Feb 2019 00:50:02 -0500 Subject: [PATCH 099/160] Another attempt to fix bundler version in CI --- .travis.yml | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 17a0dc87..755596a9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,17 +6,17 @@ before_install: # Since Rails 4.2 only supports rubygems < 2, we must install an even older version for it. - > if [[ "$BUNDLE_GEMFILE" =~ "rails42" ]]; then - gem install rubygems-update -v '<2' + rvm @global do gem install rubygems-update -v '<2' update_rubygems - gem uninstall bundler --force --executables - gem install bundler -v "~> 1.3" + rvm @global do gem uninstall bundler --force --executables + rvm @global do gem install bundler -v "~> 1.3" elif [[ `ruby -v` == *"ruby 2.2"* ]]; then - gem install rubygems-update -v '<3' + rvm @global do gem install rubygems-update -v '<3' update_rubygems - gem update bundler + rvm @global do gem update bundler --force --executables else - gem update --system - gem update bundler + rvm @global do gem update --system + rvm @global do gem update bundler --force --executables fi notifications: From 43cea4d3b8d9cf898d3169584be4556928fd871c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 3 Feb 2019 03:36:40 -0500 Subject: [PATCH 100/160] Fix gem update asking for confirmation `gem update` has no --executables argument, so it waits indefinitely for confirmation before replacing an executable. This removes the old bundler version completely rather than using `gem update`. --- .travis.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index 755596a9..936d7c68 100644 --- a/.travis.yml +++ b/.travis.yml @@ -13,10 +13,12 @@ before_install: elif [[ `ruby -v` == *"ruby 2.2"* ]]; then rvm @global do gem install rubygems-update -v '<3' update_rubygems - rvm @global do gem update bundler --force --executables + rvm @global do gem uninstall bundler --force --executables + rvm @global do gem install bundler else rvm @global do gem update --system - rvm @global do gem update bundler --force --executables + rvm @global do gem uninstall bundler --force --executables + rvm @global do gem install bundler fi notifications: From 01279b9d9071b76e6500ff19b349ca15f7a07120 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 3 Feb 2019 16:23:07 -0500 Subject: [PATCH 101/160] Quit mucking with rubygems and bundler version Use the versions that come with the version of Ruby we're testing. --- .travis.yml | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/.travis.yml b/.travis.yml index 936d7c68..07867e21 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,26 +1,6 @@ sudo: false language: ruby cache: bundler -before_install: - # Since rubygems 3.0+ only supports Ruby 2.3+, we must install the old version for older Rubies. - # Since Rails 4.2 only supports rubygems < 2, we must install an even older version for it. - - > - if [[ "$BUNDLE_GEMFILE" =~ "rails42" ]]; then - rvm @global do gem install rubygems-update -v '<2' - update_rubygems - rvm @global do gem uninstall bundler --force --executables - rvm @global do gem install bundler -v "~> 1.3" - elif [[ `ruby -v` == *"ruby 2.2"* ]]; then - rvm @global do gem install rubygems-update -v '<3' - update_rubygems - rvm @global do gem uninstall bundler --force --executables - rvm @global do gem install bundler - else - rvm @global do gem update --system - rvm @global do gem uninstall bundler --force --executables - rvm @global do gem install bundler - fi - notifications: webhooks: # With COVERALLS_PARALLEL, coverage information sent to coveralls will not be processed until From 56121218f347059183400dd0f6a6c353a1ea03e4 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 4 Feb 2019 09:36:46 -0500 Subject: [PATCH 102/160] Set rubygems and bundler version for rails 4.2 --- .travis.yml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/.travis.yml b/.travis.yml index 07867e21..bf50dcfc 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,6 +1,16 @@ sudo: false language: ruby cache: bundler +before_install: + # Since Rails 4.2 only supports rubygems < 2, we must install an older version for it. + - > + if [[ "$BUNDLE_GEMFILE" =~ "rails42" ]]; then + rvm @global do gem install rubygems-update -v '<2' + update_rubygems + rvm @global do gem uninstall bundler --force --executables + rvm @global do gem install bundler -v "~> 1.3" + fi + notifications: webhooks: # With COVERALLS_PARALLEL, coverage information sent to coveralls will not be processed until From 39b3168e98912541635790417cdd5af9f5027cad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kadu=20Di=C3=B3genes?= Date: Sat, 9 Feb 2019 01:39:37 -0200 Subject: [PATCH 103/160] Adds simplecov as a development dependencie --- better_errors.gemspec | 1 + 1 file changed, 1 insertion(+) diff --git a/better_errors.gemspec b/better_errors.gemspec index 2863b787..c53a8c16 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -25,6 +25,7 @@ Gem::Specification.new do |s| s.add_development_dependency "rspec-its" s.add_development_dependency "yard" s.add_development_dependency "kramdown" + s.add_development_dependency "simplecov" s.add_dependency "erubi", ">= 1.0.0" s.add_dependency "coderay", ">= 1.0.0" From 234918507a8cb05af192c4433dab64094e96d26c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Kadu=20Di=C3=B3genes?= Date: Sat, 9 Feb 2019 15:54:46 -0200 Subject: [PATCH 104/160] Fallbacks to to_s when obj class is anonymous --- lib/better_errors/error_page.rb | 2 +- spec/better_errors/error_page_spec.rb | 38 +++++++++++++++++++++++++++ 2 files changed, 39 insertions(+), 1 deletion(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index f417a3d9..dc596052 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -108,7 +108,7 @@ def inspect_value(obj) InspectableValue.new(obj).to_html rescue BetterErrors::ValueLargerThanConfiguredMaximum "(object too large. "\ - "Modify #{CGI.escapeHTML(obj.class.name)}#inspect "\ + "Modify #{CGI.escapeHTML(obj.class.name || obj.class.to_s)}#inspect "\ "or adjust BetterErrors.maximum_variable_inspect_size)" rescue Exception => e "(exception #{CGI.escapeHTML(e.class.to_s)} was raised in inspect)" diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 1d802651..db79c82d 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -121,6 +121,25 @@ def inspect expect(html).to include("object too large") end end + + context "fallbacks to class to_s when variable class is anonymous" do + let(:exception_binding) { + @big_anonymous = Class.new do + def initialize + @content = 'A' * 1101 + end + end.new + + binding + } + + it "shows the class to_s" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include('' + '@big_anonymous') + expect(html).to include('object too large') + expect(html).to match(/#<Class:0x[[:xdigit:]]+>#inspect/) + end + end end end context 'on a platform without ObjectSpace' do @@ -184,6 +203,25 @@ def inspect end end end + + context "fallbacks to class to_s when variable class is anonymous" do + let(:exception_binding) { + @big_anonymous = Class.new do + def initialize + @content = 'A' * 1101 + end + end.new + + binding + } + + it "shows the class to_s" do + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include('' + '@big_anonymous') + expect(html).to include('object too large') + expect(html).to match(/#<Class:0x[[:xdigit:]]+>#inspect/) + end + end end end From e39add58a3520fc5d223ad5b6e2da0df4ec7baea Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 11 Feb 2019 11:41:53 -0500 Subject: [PATCH 105/160] Don't show anonymous class ID Just exclude the class name from the output completely. And improve spec example names. And fix capitalization of the frst sentence. --- lib/better_errors/error_page.rb | 6 +++--- spec/better_errors/error_page_spec.rb | 26 +++++++++++++------------- 2 files changed, 16 insertions(+), 16 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index dc596052..e5826045 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -107,9 +107,9 @@ def text_heading(char, str) def inspect_value(obj) InspectableValue.new(obj).to_html rescue BetterErrors::ValueLargerThanConfiguredMaximum - "(object too large. "\ - "Modify #{CGI.escapeHTML(obj.class.name || obj.class.to_s)}#inspect "\ - "or adjust BetterErrors.maximum_variable_inspect_size)" + "(Object too large. "\ + "#{obj.class.name ? "Modify #{CGI.escapeHTML(obj.class.name)}#inspect or a" : "A"}"\ + "djust BetterErrors.maximum_variable_inspect_size if you need to see it.)" rescue Exception => e "(exception #{CGI.escapeHTML(e.class.to_s)} was raised in inspect)" end diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index db79c82d..2202006b 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -118,11 +118,11 @@ def inspect it "includes an indication that the variable was too large" do html = error_page.do_variables("index" => 0)[:html] expect(html).to_not include(content) - expect(html).to include("object too large") + expect(html).to include("Object too large") end end - context "fallbacks to class to_s when variable class is anonymous" do + context "when the variable's class is anonymous" do let(:exception_binding) { @big_anonymous = Class.new do def initialize @@ -132,12 +132,12 @@ def initialize binding } - - it "shows the class to_s" do + + it "does not attempt to show the class name" do html = error_page.do_variables("index" => 0)[:html] expect(html).to include('' + '@big_anonymous') - expect(html).to include('object too large') - expect(html).to match(/#<Class:0x[[:xdigit:]]+>#inspect/) + expect(html).to include('Object too large') + expect(html).to include('Adjust BetterErrors.maximum_variable_inspect_size') end end end @@ -199,12 +199,12 @@ def inspect it "includes an indication that the variable was too large" do html = error_page.do_variables("index" => 0)[:html] expect(html).to_not include(content) - expect(html).to include("object too large") + expect(html).to include("Object too large") end end end - context "fallbacks to class to_s when variable class is anonymous" do + context "when the variable's class is anonymous" do let(:exception_binding) { @big_anonymous = Class.new do def initialize @@ -214,12 +214,12 @@ def initialize binding } - - it "shows the class to_s" do + + it "does not attempt to show the class name" do html = error_page.do_variables("index" => 0)[:html] expect(html).to include('' + '@big_anonymous') - expect(html).to include('object too large') - expect(html).to match(/#<Class:0x[[:xdigit:]]+>#inspect/) + expect(html).to include('Object too large') + expect(html).to include('Adjust BetterErrors.maximum_variable_inspect_size') end end end @@ -240,7 +240,7 @@ def initialize it "includes the content of large variables" do html = error_page.do_variables("index" => 0)[:html] expect(html).to include(content) - expect(html).to_not include("object too large") + expect(html).to_not include("Object too large") end end else From 905dffbf3f72a5ff0560295139ca2937d1a6ba8c Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 Feb 2019 10:09:21 -0500 Subject: [PATCH 106/160] Release v2.5.1 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index c677a2fc..978fb883 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.5.0" + VERSION = "2.5.1" end From de57472ae9bda88add83209e1d4842857c12266b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 Feb 2019 11:02:53 -0500 Subject: [PATCH 107/160] Specify older kramdown on older ruby versions CI failure was caused by kramdown 2.0 requiring Ruby 2.3+. --- better_errors.gemspec | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/better_errors.gemspec b/better_errors.gemspec index 217ade2e..12874a86 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -24,7 +24,8 @@ Gem::Specification.new do |s| s.add_development_dependency "rspec", "~> 3.5" s.add_development_dependency "rspec-its" s.add_development_dependency "yard" - s.add_development_dependency "kramdown" + # kramdown 2.1 requires Ruby 2.3+ + s.add_development_dependency "kramdown", (RUBY_VERSION < '2.3' ? '< 2.0.0' : '> 2.0.0') # simplecov and coveralls must not be included here. See the Gemfiles instead. s.add_dependency "erubi", ">= 1.0.0" From a331158786a4896d93bd228290ea32aa7490da35 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 Feb 2019 15:09:30 -0500 Subject: [PATCH 108/160] Fix i18n requiring Ruby 2.3+ --- gemfiles/rails42.gemfile | 1 + gemfiles/rails42_boc.gemfile | 1 + gemfiles/rails42_haml.gemfile | 1 + gemfiles/rails50.gemfile | 1 + gemfiles/rails50_boc.gemfile | 1 + gemfiles/rails50_haml.gemfile | 1 + gemfiles/rails51.gemfile | 1 + gemfiles/rails51_boc.gemfile | 1 + gemfiles/rails51_haml.gemfile | 1 + gemfiles/rails52.gemfile | 1 + gemfiles/rails52_boc.gemfile | 1 + gemfiles/rails52_haml.gemfile | 1 + 12 files changed, 12 insertions(+) diff --git a/gemfiles/rails42.gemfile b/gemfiles/rails42.gemfile index 660cab71..ba2e191f 100644 --- a/gemfiles/rails42.gemfile +++ b/gemfiles/rails42.gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" gem "rails", "~> 4.2.0" gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem 'coveralls', require: false diff --git a/gemfiles/rails42_boc.gemfile b/gemfiles/rails42_boc.gemfile index 1583dfc0..2e66ac54 100644 --- a/gemfiles/rails42_boc.gemfile +++ b/gemfiles/rails42_boc.gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" gem "rails", "~> 4.2.0" gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "binding_of_caller" gem 'coveralls', require: false diff --git a/gemfiles/rails42_haml.gemfile b/gemfiles/rails42_haml.gemfile index c5943bdc..a22370a6 100644 --- a/gemfiles/rails42_haml.gemfile +++ b/gemfiles/rails42_haml.gemfile @@ -2,6 +2,7 @@ source "https://rubygems.org" gem "rails", "~> 4.2.0" gem 'nokogiri', RUBY_VERSION < '2.1' ? '~> 1.6.0' : '>= 1.7' +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "haml" gem 'coveralls', require: false diff --git a/gemfiles/rails50.gemfile b/gemfiles/rails50.gemfile index 1ec863db..7d31f08d 100644 --- a/gemfiles/rails50.gemfile +++ b/gemfiles/rails50.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.0.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem 'coveralls', require: false diff --git a/gemfiles/rails50_boc.gemfile b/gemfiles/rails50_boc.gemfile index 5706b6b1..a7955aad 100644 --- a/gemfiles/rails50_boc.gemfile +++ b/gemfiles/rails50_boc.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.0.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "binding_of_caller" gem 'coveralls', require: false diff --git a/gemfiles/rails50_haml.gemfile b/gemfiles/rails50_haml.gemfile index 5a3bb925..5ad597ec 100644 --- a/gemfiles/rails50_haml.gemfile +++ b/gemfiles/rails50_haml.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.0.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "haml" gem 'coveralls', require: false diff --git a/gemfiles/rails51.gemfile b/gemfiles/rails51.gemfile index 17484cba..5532febb 100644 --- a/gemfiles/rails51.gemfile +++ b/gemfiles/rails51.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.1.0" +gem 'i18n', '< 1.5.2', require: false if RUBY_VERSION < '2.3' gem 'coveralls', require: false diff --git a/gemfiles/rails51_boc.gemfile b/gemfiles/rails51_boc.gemfile index 9dfb99fe..bfb2cc92 100644 --- a/gemfiles/rails51_boc.gemfile +++ b/gemfiles/rails51_boc.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.1.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "binding_of_caller" gem 'coveralls', require: false diff --git a/gemfiles/rails51_haml.gemfile b/gemfiles/rails51_haml.gemfile index 7217ace3..a870a7cf 100644 --- a/gemfiles/rails51_haml.gemfile +++ b/gemfiles/rails51_haml.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.1.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "haml" gem 'coveralls', require: false diff --git a/gemfiles/rails52.gemfile b/gemfiles/rails52.gemfile index d99e1e26..070970cd 100644 --- a/gemfiles/rails52.gemfile +++ b/gemfiles/rails52.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.2.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem 'coveralls', require: false diff --git a/gemfiles/rails52_boc.gemfile b/gemfiles/rails52_boc.gemfile index b86e73f5..195e4e23 100644 --- a/gemfiles/rails52_boc.gemfile +++ b/gemfiles/rails52_boc.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.2.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "binding_of_caller" gem 'coveralls', require: false diff --git a/gemfiles/rails52_haml.gemfile b/gemfiles/rails52_haml.gemfile index 91aafe66..dd9f0dc9 100644 --- a/gemfiles/rails52_haml.gemfile +++ b/gemfiles/rails52_haml.gemfile @@ -1,6 +1,7 @@ source "https://rubygems.org" gem "rails", "~> 5.2.0" +gem 'i18n', '< 1.5.2' if RUBY_VERSION < '2.3' gem "haml" gem 'coveralls', require: false From 5f2cdc63c8feda6f24f845805165b468a5a8a5b2 Mon Sep 17 00:00:00 2001 From: Michael Johnston Date: Tue, 23 Apr 2019 15:24:44 -0700 Subject: [PATCH 109/160] adds target=_blank to editor link, to work around CSP restrictions for apps running in a third-party iframe --- lib/better_errors/templates/variable_info.erb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/templates/variable_info.erb b/lib/better_errors/templates/variable_info.erb index 213f0a2e..2b1bae41 100644 --- a/lib/better_errors/templates/variable_info.erb +++ b/lib/better_errors/templates/variable_info.erb @@ -1,7 +1,7 @@
<%== html_formatted_code_block @frame %> From 361d5065cad815234bc44b9c5601f6479223a5f0 Mon Sep 17 00:00:00 2001 From: Jonathan del Strother Date: Fri, 18 Oct 2019 09:50:20 +0100 Subject: [PATCH 110/160] Allow passing IPAddrs to allow_ip --- lib/better_errors/middleware.rb | 2 +- spec/better_errors/middleware_spec.rb | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 1e4f8e2d..262cf3b2 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -33,7 +33,7 @@ class Middleware # Adds an address to the set of IP addresses allowed to access Better # Errors. def self.allow_ip!(addr) - ALLOWED_IPS << IPAddr.new(addr) + ALLOWED_IPS << (addr.is_a?(IPAddr) ? addr : IPAddr.new(addr)) end allow_ip! "127.0.0.0/8" diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 6bb0ceac..216051db 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -40,6 +40,12 @@ module BetterErrors app.call("REMOTE_ADDR" => "77.55.33.11") end + it "shows to a whitelisted IPAddr" do + BetterErrors::Middleware.allow_ip! IPAddr.new('77.55.33.0/24') + expect(app).to receive :better_errors_call + app.call("REMOTE_ADDR" => "77.55.33.11") + end + it "respects the X-Forwarded-For header" do expect(app).not_to receive :better_errors_call app.call( From faa39ec4a2f8233a194a33bbd383a7c302f25dc1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Bu=CC=88nemann?= Date: Sun, 16 Feb 2020 17:00:28 +0100 Subject: [PATCH 111/160] Allow skipping variable inspection by class name This adds a new global setting `BetterErrors.ignored_classes` that will skip inspecting the value of local and instance variables of this type. The default setting ignores action dispatch request and response instances, which are usually not printed anyways due to exceeding the limit of `BetterErrors.maximum_variable_inspect_size`, but also avoids all the memory allocations and database queries that are triggered by calling `#inspect` on variables. The default setting was chosen to avoid excessive database queries for unloaded relations, because both the `ActionDispatch::Request` and the `ActionDispatch::Response` objects hold many references to the controller instance, causing the same instance variables to be inspected over and over again. --- README.md | 10 ++++++++++ lib/better_errors.rb | 5 +++++ lib/better_errors/error_page.rb | 8 +++++++- spec/better_errors/error_page_spec.rb | 24 +++++++++++++++++++----- 4 files changed, 41 insertions(+), 6 deletions(-) diff --git a/README.md b/README.md index 7ddee48b..5ea231bc 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,16 @@ See [the wiki for instructions on configuring the editor](https://github.com/Bet BetterErrors.maximum_variable_inspect_size = 100_000 ``` +## Ignore inspection of variables with certain classes. + +```ruby +# e.g. in config/initializers/better_errors.rb +# This will stop BetterErrors from trying to inspect objects of these classes, which can cause +# slow loading times and unneccessary database queries. Does not check inheritance chain, use +# strings not contants. +# default value: ['ActionDispatch::Request', 'ActionDispatch::Response'] +BetterErrors.ignored_classes = ['ActionDispatch::Request', 'ActionDispatch::Response'] +``` ## Get in touch! diff --git a/lib/better_errors.rb b/lib/better_errors.rb index 27a13d67..e902055d 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -54,9 +54,14 @@ class << self # the variable won't be returned. # @return int attr_accessor :maximum_variable_inspect_size + + # List of classes that are excluded from inspection. + # @return [Array] + attr_accessor :ignored_classes end @ignored_instance_variables = [] @maximum_variable_inspect_size = 100_000 + @ignored_classes = ['ActionDispatch::Request', 'ActionDispatch::Response'] # Returns a proc, which when called with a filename and line number argument, # returns a URL to open the filename and line in the selected editor. diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index e5826045..0987df37 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -105,7 +105,13 @@ def text_heading(char, str) end def inspect_value(obj) - InspectableValue.new(obj).to_html + if BetterErrors.ignored_classes.include? obj.class.name + "(Class ignored. "\ + "#{obj.class.name ? "Remove #{CGI.escapeHTML(obj.class.name)} from" : "Modify"}"\ + " BetterErrors.ignored_classes if you need to see it.)" + else + InspectableValue.new(obj).to_html + end rescue BetterErrors::ValueLargerThanConfiguredMaximum "(Object too large. "\ "#{obj.class.name ? "Modify #{CGI.escapeHTML(obj.class.name)}#inspect or a" : "A"}"\ diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 2202006b..a5c80511 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -10,10 +10,10 @@ module BetterErrors let(:exception_binding) { local_a = :value_for_local_a - local_b = :value_for_local_b + local_b = "value_for_local_b" @inst_c = :value_for_inst_c - @inst_d = :value_for_inst_d + @inst_d = "value_for_inst_d" binding } @@ -39,7 +39,7 @@ module BetterErrors expect(html).to include('local_a') expect(html).to include("
:value_for_local_a
") expect(html).to include('local_b') - expect(html).to include("
:value_for_local_b
") + expect(html).to include('
"value_for_local_b"
') end it "shows instance variables" do @@ -47,7 +47,7 @@ module BetterErrors expect(html).to include('' + '@inst_c') expect(html).to include("
" + ":value_for_inst_c
") expect(html).to include('' + '@inst_d') - expect(html).to include("
" + ":value_for_inst_d
") + expect(html).to include("
" + '"value_for_inst_d"
') end it "does not show filtered variables" do @@ -56,7 +56,21 @@ module BetterErrors expect(html).to include('' + '@inst_c') expect(html).to include("
" + ":value_for_inst_c
") expect(html).not_to include('' + '@inst_d') - expect(html).not_to include("
" + ":value_for_inst_d
") + expect(html).not_to include("
" + '"value_for_inst_d"
') + end + + it "does not inspect value of ignored classes" do + allow(BetterErrors).to receive(:ignored_classes).and_return(['Symbol']) + html = error_page.do_variables("index" => 0)[:html] + expect(html).to include('local_a') + expect(html).not_to include("
:value_for_local_a
") + expect(html).to include('local_b') + expect(html).to include('
"value_for_local_b"
') + expect(html).to include('' + '@inst_c') + expect(html).not_to include("
" + ":value_for_inst_c
") + expect(html).to include('' + '@inst_d') + expect(html).to include("
" + '"value_for_inst_d"
') + expect(html).to include("(Class ignored. Remove Symbol from BetterErrors.ignored_classes if you need to see it.)") end context 'when maximum_variable_inspect_size is set' do From da5e6556b13a30634912405c56b725a0ee20174c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Bu=CC=88nemann?= Date: Sun, 16 Feb 2020 18:47:18 +0100 Subject: [PATCH 112/160] Fix Travis CI Build Problems Update Rubies to latest minor version and exclude Rails 4.2 specs on Ruby 2.3, since the default bundler 2.1.2 gem breaks the downgrade. --- .travis.yml | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/.travis.yml b/.travis.yml index bf50dcfc..7e1b7a51 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,16 +1,6 @@ sudo: false language: ruby cache: bundler -before_install: - # Since Rails 4.2 only supports rubygems < 2, we must install an older version for it. - - > - if [[ "$BUNDLE_GEMFILE" =~ "rails42" ]]; then - rvm @global do gem install rubygems-update -v '<2' - update_rubygems - rvm @global do gem uninstall bundler --force --executables - rvm @global do gem install bundler -v "~> 1.3" - fi - notifications: webhooks: # With COVERALLS_PARALLEL, coverage information sent to coveralls will not be processed until @@ -19,9 +9,9 @@ notifications: - secure: "YnHYbTq51ySistjvOxsuNhyg4GLuUffEJstTYeGYXiBF7HG5h43IVYo8KNuLzwkgsOYBcNo+YMdQX7qCqJffSbhsr1FZRSzBmjFFxcyD4hu+ukM2theZ4mePVAZiePscYvQPRNY4hIb4d3egStJEytkalDhB3sOebF57tIaCssg=" rvm: - 2.2.10 - - 2.3.7 - - 2.4.4 - - 2.5.1 + - 2.3.8 + - 2.4.9 + - 2.5.7 - ruby-head gemfile: - gemfiles/rails42.gemfile @@ -48,15 +38,21 @@ matrix: - gemfile: gemfiles/pry010.gemfile - gemfile: gemfiles/pry011.gemfile exclude: - - rvm: 2.4.4 + - rvm: 2.3.8 gemfile: gemfiles/rails42.gemfile - - rvm: 2.4.4 + - rvm: 2.3.8 gemfile: gemfiles/rails42_boc.gemfile - - rvm: 2.4.4 + - rvm: 2.3.8 gemfile: gemfiles/rails42_haml.gemfile - - rvm: 2.5.1 + - rvm: 2.4.9 gemfile: gemfiles/rails42.gemfile - - rvm: 2.5.1 + - rvm: 2.4.9 gemfile: gemfiles/rails42_boc.gemfile - - rvm: 2.5.1 + - rvm: 2.4.9 + gemfile: gemfiles/rails42_haml.gemfile + - rvm: 2.5.7 + gemfile: gemfiles/rails42.gemfile + - rvm: 2.5.7 + gemfile: gemfiles/rails42_boc.gemfile + - rvm: 2.5.7 gemfile: gemfiles/rails42_haml.gemfile From 641da2ac4d383a781dfc0acb23b9c7e5f17220f9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Felix=20Bu=CC=88nemann?= Date: Sun, 16 Feb 2020 19:30:30 +0100 Subject: [PATCH 113/160] Fix spec errors with binding of caller For some weird reason with binding of caller loaded the inspected value for strings is no longer quoted, breaking the specs, so this changes the specs back to using all symbols. --- spec/better_errors/error_page_spec.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index a5c80511..70cb62c4 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -10,10 +10,10 @@ module BetterErrors let(:exception_binding) { local_a = :value_for_local_a - local_b = "value_for_local_b" + local_b = :value_for_local_b @inst_c = :value_for_inst_c - @inst_d = "value_for_inst_d" + @inst_d = :value_for_inst_d binding } @@ -39,7 +39,7 @@ module BetterErrors expect(html).to include('local_a') expect(html).to include("
:value_for_local_a
") expect(html).to include('local_b') - expect(html).to include('
"value_for_local_b"
') + expect(html).to include("
:value_for_local_b
") end it "shows instance variables" do @@ -47,7 +47,7 @@ module BetterErrors expect(html).to include('' + '@inst_c') expect(html).to include("
" + ":value_for_inst_c
") expect(html).to include('' + '@inst_d') - expect(html).to include("
" + '"value_for_inst_d"
') + expect(html).to include("
" + ":value_for_inst_d
") end it "does not show filtered variables" do @@ -56,7 +56,7 @@ module BetterErrors expect(html).to include('' + '@inst_c') expect(html).to include("
" + ":value_for_inst_c
") expect(html).not_to include('' + '@inst_d') - expect(html).not_to include("
" + '"value_for_inst_d"
') + expect(html).not_to include("
" + ":value_for_inst_d
") end it "does not inspect value of ignored classes" do @@ -65,11 +65,11 @@ module BetterErrors expect(html).to include('local_a') expect(html).not_to include("
:value_for_local_a
") expect(html).to include('local_b') - expect(html).to include('
"value_for_local_b"
') + expect(html).not_to include("
:value_for_local_b
") expect(html).to include('' + '@inst_c') expect(html).not_to include("
" + ":value_for_inst_c
") expect(html).to include('' + '@inst_d') - expect(html).to include("
" + '"value_for_inst_d"
') + expect(html).not_to include("
" + ":value_for_inst_d
") expect(html).to include("(Class ignored. Remove Symbol from BetterErrors.ignored_classes if you need to see it.)") end From c18a975fa07ba26e05b24d5e7d34aa4d6a806b9b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 25 Feb 2020 16:23:11 -0500 Subject: [PATCH 114/160] Release v2.6.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index 978fb883..314429c9 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.5.1" + VERSION = "2.6.0" end From 22b94ff3ec3a580e48eadb4007804aed76868905 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 25 Feb 2020 23:59:28 -0500 Subject: [PATCH 115/160] Fix falsely passing specs looking for "shortval" They were finding it in the exception backtrace that was being dumped to the HTML. --- better_errors.gemspec | 1 + spec/better_errors/error_page_spec.rb | 13 +++++++++---- spec/spec_helper.rb | 6 ++++++ 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/better_errors.gemspec b/better_errors.gemspec index 12874a86..ef996b0d 100644 --- a/better_errors.gemspec +++ b/better_errors.gemspec @@ -22,6 +22,7 @@ Gem::Specification.new do |s| s.add_development_dependency "rake", "~> 10.0" s.add_development_dependency "rspec", "~> 3.5" + s.add_development_dependency "rspec-html-matchers" s.add_development_dependency "rspec-its" s.add_development_dependency "yard" # kramdown 2.1 requires Ruby 2.3+ diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 2202006b..2364f2e0 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -2,6 +2,11 @@ module BetterErrors describe ErrorPage do + # It's necessary to use HTML matchers here that are specific as possible. + # This is because if there's an exception within this file, the lines of code will be reflected in the + # generated HTML, so any strings being matched against the HTML content will be there if they're within 5 + # lines of code of the exception that was raised. + let!(:exception) { raise ZeroDivisionError, "you divided by zero you silly goose!" rescue $! } let(:error_page) { ErrorPage.new exception, { "PATH_INFO" => "/some/path" } } @@ -104,7 +109,7 @@ def inspect it "shows the variable content" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("shortval") + expect(html).to have_tag('div.variables', text: /shortval/) end end context 'and does not implement #inspect' do @@ -185,7 +190,7 @@ def inspect it "shows the variable content" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include("shortval") + expect(html).to have_tag('div.variables', text: /shortval/) end end context 'and does not implement #inspect' do @@ -198,8 +203,8 @@ def inspect it "includes an indication that the variable was too large" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to_not include(content) - expect(html).to include("Object too large") + expect(html).not_to have_tag('div.variables', text: %r{#{content}}) + expect(html).to have_tag('div.variables', text: /Object too large/) end end end diff --git a/spec/spec_helper.rb b/spec/spec_helper.rb index a88d6e75..29e5ac18 100644 --- a/spec/spec_helper.rb +++ b/spec/spec_helper.rb @@ -19,3 +19,9 @@ require 'bundler/setup' Bundler.require(:default) + +require 'rspec-html-matchers' + +RSpec.configure do |config| + config.include RSpecHtmlMatchers +end From 6b0e690f152a532af40b781950a8bd86750c573b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 26 Feb 2020 00:02:27 -0500 Subject: [PATCH 116/160] Fix incorrect class that was previously missed --- spec/better_errors/error_page_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 2364f2e0..98879a4a 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -104,7 +104,7 @@ def inspect "shortval" end end - InspectableTestValue.new + ExtremelyLargeInspectableTestValue.new } it "shows the variable content" do @@ -185,7 +185,7 @@ def inspect "shortval" end end - InspectableTestValue.new + ExtremelyLargeInspectableTestValue.new } it "shows the variable content" do From c2d20ae8bdee3c464540cf63c3bac761e07d7a68 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 26 Feb 2020 00:12:44 -0500 Subject: [PATCH 117/160] Use HTML matchers to specifically match content and expose another should-be-failing spec --- spec/better_errors/error_page_spec.rb | 84 +++++++++++++++++---------- 1 file changed, 53 insertions(+), 31 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 98879a4a..c99f8e8d 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -24,44 +24,53 @@ module BetterErrors } it "includes the error message" do - expect(response).to include("you divided by zero you silly goose!") + expect(response).to have_tag('.exception p', text: /you divided by zero you silly goose!/) end it "includes the request path" do - expect(response).to include("/some/path") + expect(response).to have_tag('.exception h2', %r{/some/path}) end it "includes the exception class" do - expect(response).to include("ZeroDivisionError") + expect(response).to have_tag('.exception h2', /ZeroDivisionError/) end context "variable inspection" do let(:exception) { exception_binding.eval("raise") rescue $! } - if BetterErrors.binding_of_caller_available? + context "when binding_of_caller is loaded" do + before do + skip "binding_of_caller is not loaded" unless BetterErrors.binding_of_caller_available? + end + it "shows local variables" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include('local_a') - expect(html).to include("
:value_for_local_a
") - expect(html).to include('local_b') - expect(html).to include("
:value_for_local_b
") + expect(html).to have_tag('div.variables') do + with_tag('td.name', text: 'local_a') + with_tag('pre', text: ':value_for_local_a') + with_tag('td.name', text: 'local_b') + with_tag('pre', text: ':value_for_local_b') + end end it "shows instance variables" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include('' + '@inst_c') - expect(html).to include("
" + ":value_for_inst_c
") - expect(html).to include('' + '@inst_d') - expect(html).to include("
" + ":value_for_inst_d
") + expect(html).to have_tag('div.variables') do + with_tag('td.name', text: '@inst_c') + with_tag('pre', text: ':value_for_inst_c') + with_tag('td.name', text: '@inst_d') + with_tag('pre', text: ':value_for_inst_d') + end end it "does not show filtered variables" do allow(BetterErrors).to receive(:ignored_instance_variables).and_return([:@inst_d]) html = error_page.do_variables("index" => 0)[:html] - expect(html).to include('' + '@inst_c') - expect(html).to include("
" + ":value_for_inst_c
") - expect(html).not_to include('' + '@inst_d') - expect(html).not_to include("
" + ":value_for_inst_d
") + expect(html).to have_tag('div.variables') do + with_tag('td.name', text: '@inst_c') + with_tag('pre', text: ':value_for_inst_c') + end + expect(html).not_to have_tag('div.variables td.name', text: '@inst_d') end context 'when maximum_variable_inspect_size is set' do @@ -84,7 +93,7 @@ module BetterErrors it "shows the variable content" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include(content) + expect(html).to have_tag('div.variables', text: %r{#{content}}) end end @@ -122,8 +131,8 @@ def inspect it "includes an indication that the variable was too large" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to_not include(content) - expect(html).to include("Object too large") + expect(html).not_to have_tag('div.variables', text: %r{#{content}}) + expect(html).to have_tag('div.variables', text: /Object too large/) end end @@ -140,13 +149,16 @@ def initialize it "does not attempt to show the class name" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include('' + '@big_anonymous') - expect(html).to include('Object too large') - expect(html).to include('Adjust BetterErrors.maximum_variable_inspect_size') + expect(html).to have_tag('div.variables') do + with_tag('td.name', text: '@big_anonymous') + with_tag('.unsupported', text: /Object too large/) + with_tag('.unsupported', text: /Adjust BetterErrors.maximum_variable_inspect_size/) + end end end end end + context 'on a platform without ObjectSpace' do before do Object.send(:remove_const, :ObjectSpace) if Object.constants.include?(:ObjectSpace) @@ -165,7 +177,7 @@ def initialize it "shows the variable content" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include(content) + expect(html).to have_tag('div.variables', text: %r{#{content}}) end end @@ -202,6 +214,7 @@ def inspect let(:content) { 'A' * 1101 } it "includes an indication that the variable was too large" do + html = error_page.do_variables("index" => 0)[:html] expect(html).not_to have_tag('div.variables', text: %r{#{content}}) expect(html).to have_tag('div.variables', text: /Object too large/) @@ -222,9 +235,11 @@ def initialize it "does not attempt to show the class name" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include('' + '@big_anonymous') - expect(html).to include('Object too large') - expect(html).to include('Adjust BetterErrors.maximum_variable_inspect_size') + expect(html).to have_tag('div.variables') do + with_tag('td.name', text: '@big_anonymous') + with_tag('.unsupported', text: /Object too large/) + with_tag('.unsupported', text: /Adjust BetterErrors.maximum_variable_inspect_size/) + end end end end @@ -244,14 +259,20 @@ def initialize it "includes the content of large variables" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include(content) - expect(html).to_not include("Object too large") + expect(html).to have_tag('div.variables', text: %r{#{content}}) + expect(html).not_to have_tag('div.variables', text: /Object too large/) end end - else + end + + context "when binding_of_caller is not loaded" do + before do + skip "binding_of_caller is loaded" if BetterErrors.binding_of_caller_available? + end + it "tells the user to add binding_of_caller to their gemfile to get fancy features" do html = error_page.do_variables("index" => 0)[:html] - expect(html).to include(%{gem "binding_of_caller"}) + expect(html).not_to have_tag('div.variables', text: /gem "binding_of_caller"/) end end end @@ -260,7 +281,7 @@ def initialize allow(exception).to receive(:backtrace).and_return([ ":10:in `spawn_rack_application'" ]) - expect(response).to include("Source unavailable") + expect(response).notto have_tag('sds', text: /Source unavailable/) end context 'with an exception with blank lines' do @@ -304,6 +325,7 @@ def initialize(message = nil) ) end end + context 'with binding_of_caller available' do before do skip("Disabled without binding_of_caller") unless defined? ::BindingOfCaller From 64e65fa1842db1d45313c86f8f12f7dc1c89d2a5 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 26 Feb 2020 00:31:49 -0500 Subject: [PATCH 118/160] Fix spec looking for failure without valid path in backtrace --- spec/better_errors/error_page_spec.rb | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index c99f8e8d..5ea07403 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -278,10 +278,11 @@ def initialize end it "doesn't die if the source file is not a real filename" do + allow(exception).to receive(:__better_errors_bindings_stack).and_return([]) allow(exception).to receive(:backtrace).and_return([ ":10:in `spawn_rack_application'" ]) - expect(response).notto have_tag('sds', text: /Source unavailable/) + expect(response).to have_tag('.frames li .location .filename', text: '') end context 'with an exception with blank lines' do From 93e7967fdb05728bd63961f0c5d766b9cd49434d Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 25 Feb 2020 15:52:35 -0500 Subject: [PATCH 119/160] Add Ruby 2.6.5 and Rails 6.0 --- .travis.yml | 29 +++++++++++++++++++++++++++++ gemfiles/rails60.gemfile | 7 +++++++ gemfiles/rails60_boc.gemfile | 8 ++++++++ gemfiles/rails60_haml.gemfile | 8 ++++++++ 4 files changed, 52 insertions(+) create mode 100644 gemfiles/rails60.gemfile create mode 100644 gemfiles/rails60_boc.gemfile create mode 100644 gemfiles/rails60_haml.gemfile diff --git a/.travis.yml b/.travis.yml index 7e1b7a51..0b54094a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -12,20 +12,25 @@ rvm: - 2.3.8 - 2.4.9 - 2.5.7 + - 2.6.5 + - 2.7.0 - ruby-head gemfile: - gemfiles/rails42.gemfile - gemfiles/rails50.gemfile - gemfiles/rails51.gemfile - gemfiles/rails52.gemfile + - gemfiles/rails60.gemfile - gemfiles/rails42_haml.gemfile - gemfiles/rails50_haml.gemfile - gemfiles/rails51_haml.gemfile - gemfiles/rails52_haml.gemfile + - gemfiles/rails60_haml.gemfile - gemfiles/rails42_boc.gemfile - gemfiles/rails50_boc.gemfile - gemfiles/rails51_boc.gemfile - gemfiles/rails52_boc.gemfile + - gemfiles/rails60_boc.gemfile - gemfiles/rack.gemfile - gemfiles/rack_boc.gemfile - gemfiles/pry09.gemfile @@ -38,6 +43,12 @@ matrix: - gemfile: gemfiles/pry010.gemfile - gemfile: gemfiles/pry011.gemfile exclude: + - rvm: 2.2.10 + gemfile: gemfiles/rails60.gemfile + - rvm: 2.2.10 + gemfile: gemfiles/rails60_boc.gemfile + - rvm: 2.2.10 + gemfile: gemfiles/rails60_haml.gemfile - rvm: 2.3.8 gemfile: gemfiles/rails42.gemfile - rvm: 2.3.8 @@ -56,3 +67,21 @@ matrix: gemfile: gemfiles/rails42_boc.gemfile - rvm: 2.5.7 gemfile: gemfiles/rails42_haml.gemfile + - rvm: 2.6.5 + gemfile: gemfiles/rails42.gemfile + - rvm: 2.6.5 + gemfile: gemfiles/rails42_boc.gemfile + - rvm: 2.6.5 + gemfile: gemfiles/rails42_haml.gemfile + - rvm: 2.7.0 + gemfile: gemfiles/rails42.gemfile + - rvm: 2.7.0 + gemfile: gemfiles/rails42_boc.gemfile + - rvm: 2.7.0 + gemfile: gemfiles/rails42_haml.gemfile + - rvm: ruby-head + gemfile: gemfiles/rails42.gemfile + - rvm: ruby-head + gemfile: gemfiles/rails42_boc.gemfile + - rvm: ruby-head + gemfile: gemfiles/rails42_haml.gemfile diff --git a/gemfiles/rails60.gemfile b/gemfiles/rails60.gemfile new file mode 100644 index 00000000..55f89c5e --- /dev/null +++ b/gemfiles/rails60.gemfile @@ -0,0 +1,7 @@ +source "https://rubygems.org" + +gem "rails", "~> 6.0.0" + +gem 'coveralls', require: false + +gemspec path: "../" diff --git a/gemfiles/rails60_boc.gemfile b/gemfiles/rails60_boc.gemfile new file mode 100644 index 00000000..190c573c --- /dev/null +++ b/gemfiles/rails60_boc.gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "rails", "~> 6.0.0" +gem "binding_of_caller" + +gem 'coveralls', require: false + +gemspec path: "../" diff --git a/gemfiles/rails60_haml.gemfile b/gemfiles/rails60_haml.gemfile new file mode 100644 index 00000000..84d3401a --- /dev/null +++ b/gemfiles/rails60_haml.gemfile @@ -0,0 +1,8 @@ +source "https://rubygems.org" + +gem "rails", "~> 6.0.0" +gem "haml" + +gem 'coveralls', require: false + +gemspec path: "../" From a93e6413d5bb3963d17934a5f3e6c807fe01095d Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 25 Feb 2020 23:14:40 -0500 Subject: [PATCH 120/160] Fix nonspecific raise assertion --- spec/better_errors/stack_frame_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/better_errors/stack_frame_spec.rb b/spec/better_errors/stack_frame_spec.rb index 23a8982c..df96c90a 100644 --- a/spec/better_errors/stack_frame_spec.rb +++ b/spec/better_errors/stack_frame_spec.rb @@ -97,7 +97,7 @@ module BetterErrors it "raises on non-NameErrors" do frame = StackFrame.new("/abc/xyz/app/controllers/crap_controller.rb", 123, "index") allow(frame).to receive(:get_local_variable).and_raise(ArgumentError) - expect { frame.local_variable("foo") }.to raise_error + expect { frame.local_variable("foo") }.to raise_error(ArgumentError) end end From b47a3c8422f3854f1d96b163811d5af9d2b3c98e Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 25 Feb 2020 23:17:18 -0500 Subject: [PATCH 121/160] Fix old-style assertions --- spec/better_errors_spec.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/spec/better_errors_spec.rb b/spec/better_errors_spec.rb index ef3d83c8..9d796105 100644 --- a/spec/better_errors_spec.rb +++ b/spec/better_errors_spec.rb @@ -41,7 +41,7 @@ [:atom].each do |editor| it "uses atom:// scheme when set to #{editor.inspect}" do subject.editor = editor - subject.editor[].should start_with "atom://" + expect(subject.editor[]).to start_with "atom://" end end @@ -82,7 +82,7 @@ it "uses atom:// scheme when EDITOR=#{editor}" do ENV["EDITOR"] = editor subject.editor = subject.default_editor - subject.editor[].should start_with "atom://" + expect(subject.editor[]).to start_with "atom://" end end From 2d7774ed830fca8fe1d825a4c62a44204ef867c0 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 26 Feb 2020 15:09:06 -0500 Subject: [PATCH 122/160] Rails 6 requires Ruby 2.5+ --- .travis.yml | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/.travis.yml b/.travis.yml index 0b54094a..d2fd1f17 100644 --- a/.travis.yml +++ b/.travis.yml @@ -55,12 +55,24 @@ matrix: gemfile: gemfiles/rails42_boc.gemfile - rvm: 2.3.8 gemfile: gemfiles/rails42_haml.gemfile + - rvm: 2.3.8 + gemfile: gemfiles/rails60.gemfile + - rvm: 2.3.8 + gemfile: gemfiles/rails60_boc.gemfile + - rvm: 2.3.8 + gemfile: gemfiles/rails60_haml.gemfile - rvm: 2.4.9 gemfile: gemfiles/rails42.gemfile - rvm: 2.4.9 gemfile: gemfiles/rails42_boc.gemfile - rvm: 2.4.9 gemfile: gemfiles/rails42_haml.gemfile + - rvm: 2.4.9 + gemfile: gemfiles/rails60.gemfile + - rvm: 2.4.9 + gemfile: gemfiles/rails60_boc.gemfile + - rvm: 2.4.9 + gemfile: gemfiles/rails60_haml.gemfile - rvm: 2.5.7 gemfile: gemfiles/rails42.gemfile - rvm: 2.5.7 From 06a8b9dfbe8f1e1847f428027ef4c6fe9b4fe32e Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Mon, 2 Mar 2020 12:42:01 -0500 Subject: [PATCH 123/160] Revert "Fix spec errors with binding of caller" This reverts commit 641da2ac4d383a781dfc0acb23b9c7e5f17220f9. --- spec/better_errors/error_page_spec.rb | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 70cb62c4..a5c80511 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -10,10 +10,10 @@ module BetterErrors let(:exception_binding) { local_a = :value_for_local_a - local_b = :value_for_local_b + local_b = "value_for_local_b" @inst_c = :value_for_inst_c - @inst_d = :value_for_inst_d + @inst_d = "value_for_inst_d" binding } @@ -39,7 +39,7 @@ module BetterErrors expect(html).to include('local_a') expect(html).to include("
:value_for_local_a
") expect(html).to include('local_b') - expect(html).to include("
:value_for_local_b
") + expect(html).to include('
"value_for_local_b"
') end it "shows instance variables" do @@ -47,7 +47,7 @@ module BetterErrors expect(html).to include('' + '@inst_c') expect(html).to include("
" + ":value_for_inst_c
") expect(html).to include('' + '@inst_d') - expect(html).to include("
" + ":value_for_inst_d
") + expect(html).to include("
" + '"value_for_inst_d"
') end it "does not show filtered variables" do @@ -56,7 +56,7 @@ module BetterErrors expect(html).to include('' + '@inst_c') expect(html).to include("
" + ":value_for_inst_c
") expect(html).not_to include('' + '@inst_d') - expect(html).not_to include("
" + ":value_for_inst_d
") + expect(html).not_to include("
" + '"value_for_inst_d"
') end it "does not inspect value of ignored classes" do @@ -65,11 +65,11 @@ module BetterErrors expect(html).to include('local_a') expect(html).not_to include("
:value_for_local_a
") expect(html).to include('local_b') - expect(html).not_to include("
:value_for_local_b
") + expect(html).to include('
"value_for_local_b"
') expect(html).to include('' + '@inst_c') expect(html).not_to include("
" + ":value_for_inst_c
") expect(html).to include('' + '@inst_d') - expect(html).not_to include("
" + ":value_for_inst_d
") + expect(html).to include("
" + '"value_for_inst_d"
') expect(html).to include("(Class ignored. Remove Symbol from BetterErrors.ignored_classes if you need to see it.)") end From eb1de17b8b5e091e20a07a1a8fd3fb376684b31f Mon Sep 17 00:00:00 2001 From: Jared Moody Date: Mon, 2 Mar 2020 17:17:30 -0800 Subject: [PATCH 124/160] Add editor preset for VSCodium --- lib/better_errors.rb | 1 + 1 file changed, 1 insertion(+) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index 27a13d67..d00286fe 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -21,6 +21,7 @@ module BetterErrors { symbols: [:idea], sniff: /idea/i, url: "idea://open?file=%{file}&line=%{line}" }, { symbols: [:rubymine], sniff: /mine/i, url: "x-mine://open?file=%{file}&line=%{line}" }, { symbols: [:vscode, :code], sniff: /code/i, url: "vscode://file/%{file}:%{line}" }, + { symbols: [:vscodium, :codium], sniff: /codium/i, url: "vscodium://file/%{file}:%{line}" }, { symbols: [:atom], sniff: /atom/i, url: "atom://core/open/file?filename=%{file}&line=%{line}" }, ] From 5639d5fa8949ab8f1fedab4676f1629378323e92 Mon Sep 17 00:00:00 2001 From: Olle Jonsson Date: Wed, 4 Mar 2020 10:27:54 +0100 Subject: [PATCH 125/160] CI: Drop unused sudo: false directive --- .travis.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index d2fd1f17..62e47495 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,4 +1,3 @@ -sudo: false language: ruby cache: bundler notifications: From 5284c993ea427493623143146c93526cd1477c19 Mon Sep 17 00:00:00 2001 From: Yuhei Okazaki Date: Mon, 13 Apr 2020 10:32:32 +0900 Subject: [PATCH 126/160] Fix warning: __FILE__ in eval may not return location in binding --- lib/better_errors/raised_exception.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index f3ee36ae..bd40c279 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -36,8 +36,8 @@ def setup_backtrace def setup_backtrace_from_bindings @backtrace = exception.__better_errors_bindings_stack.map { |binding| - file = binding.eval "__FILE__" - line = binding.eval "__LINE__" + file = binding.source_location[0] + line = binding.source_location[1] name = binding.frame_description StackFrame.new(file, line, name, binding) } From 8942ee39ce446507fe70367cb38e84d6b4dbdb5f Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 18 Apr 2020 00:29:19 -0400 Subject: [PATCH 127/160] Show the last error, not its "cause" --- lib/better_errors/raised_exception.rb | 5 +- spec/better_errors/middleware_spec.rb | 80 ++++++++++++++------------- 2 files changed, 45 insertions(+), 40 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index f3ee36ae..9e804f77 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -4,9 +4,8 @@ class RaisedException attr_reader :exception, :message, :backtrace def initialize(exception) - if exception.respond_to?(:cause) - exception = exception.cause if exception.cause - elsif exception.respond_to?(:original_exception) && exception.original_exception + if exception.respond_to?(:original_exception) && exception.original_exception + # This supports some specific Rails exceptions, and is not intended to act the same as `#cause`. exception = exception.original_exception end diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 216051db..8a7ffa69 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -93,62 +93,68 @@ module BetterErrors expect(status).to eq(500) end - if Exception.new.respond_to?(:cause) - context "cause" do - class OtherException < Exception - def initialize(message) - super(message) + context "when the exception has a cause" do + before do + pending "This Ruby does not support `cause`" unless Exception.new.respond_to?(:cause) + end + + let(:app) { + Middleware.new(->env { + begin + raise "First Exception" + rescue + raise "Second Exception" end - end + }) + } - it "shows Original Exception if it responds_to and has an cause" do - app = Middleware.new(->env { - begin - raise "Original Exception" - rescue - raise OtherException.new("Other Exception") - end - }) + it "shows the exception as-is" do + status, _, body = app.call({}) - status, _, body = app.call({}) + expect(status).to eq(500) + expect(body.join).to match(/\n> Second Exception\n/) + expect(body.join).not_to match(/\n> First Exception\n/) + end + end - expect(status).to eq(500) - expect(body.join).not_to match(/\n> Other Exception\n/) - expect(body.join).to match(/\n> Original Exception\n/) + context "when the exception responds to #original_exception" do + class OriginalExceptionException < Exception + attr_reader :original_exception + + def initialize(message, original_exception = nil) + super(message) + @original_exception = original_exception end end - else - context "original_exception" do - class OriginalExceptionException < Exception - attr_reader :original_exception - - def initialize(message, original_exception = nil) - super(message) - @original_exception = original_exception - end - end - it "shows Original Exception if it responds_to and has an original_exception" do - app = Middleware.new(->env { - raise OriginalExceptionException.new("Other Exception", Exception.new("Original Exception")) + context 'and has one' do + let(:app) { + Middleware.new(->env { + raise OriginalExceptionException.new("Second Exception", Exception.new("First Exception")) }) + } + it "shows the original exception instead of the last-raised one" do status, _, body = app.call({}) expect(status).to eq(500) - expect(body.join).not_to match(/Other Exception/) - expect(body.join).to match(/Original Exception/) + expect(body.join).not_to match(/Second Exception/) + expect(body.join).to match(/First Exception/) end + end - it "won't crash if the exception responds_to but doesn't have an original_exception" do - app = Middleware.new(->env { - raise OriginalExceptionException.new("Other Exception") + context 'and does not have one' do + let(:app) { + Middleware.new(->env { + raise OriginalExceptionException.new("The Exception") }) + } + it "shows the exception as-is" do status, _, body = app.call({}) expect(status).to eq(500) - expect(body.join).to match(/Other Exception/) + expect(body.join).to match(/The Exception/) end end end From dbe7ca004dc5f358a0e808315a860437a68e7be1 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sat, 18 Apr 2020 11:19:16 -0400 Subject: [PATCH 128/160] Use Binding#source_location only when available --- lib/better_errors/raised_exception.rb | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index bd40c279..02683c10 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -36,8 +36,13 @@ def setup_backtrace def setup_backtrace_from_bindings @backtrace = exception.__better_errors_bindings_stack.map { |binding| - file = binding.source_location[0] - line = binding.source_location[1] + if binding.respond_to?(:source_location) # Ruby >= 2.6 + file = binding.source_location[0] + line = binding.source_location[1] + else + file = binding.eval "__FILE__" + line = binding.eval "__LINE__" + end name = binding.frame_description StackFrame.new(file, line, name, binding) } From af1991131d16c0d4857a04e5698b51f1c5815986 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 24 Apr 2020 11:56:42 -0400 Subject: [PATCH 129/160] Adjust phrasing of "ignored class" message --- lib/better_errors/error_page.rb | 2 +- spec/better_errors/error_page_spec.rb | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 0987df37..666e39a8 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -106,7 +106,7 @@ def text_heading(char, str) def inspect_value(obj) if BetterErrors.ignored_classes.include? obj.class.name - "(Class ignored. "\ + "(Instance of ignored class. "\ "#{obj.class.name ? "Remove #{CGI.escapeHTML(obj.class.name)} from" : "Modify"}"\ " BetterErrors.ignored_classes if you need to see it.)" else diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 676400a8..ef13e6a5 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -92,7 +92,7 @@ module BetterErrors end expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: 'local_b') - with_tag('.unsupported', text: /Instance of ErrorPageTestIgnoredClass ignored/) + with_tag('.unsupported', text: /Instance of ignored class/) with_tag('.unsupported', text: /BetterErrors\.ignored_classes/) end expect(html).to have_tag('div.variables tr') do @@ -101,7 +101,7 @@ module BetterErrors end expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: '@inst_d') - with_tag('.unsupported', text: /Instance of ErrorPageTestIgnoredClass ignored./) + with_tag('.unsupported', text: /Instance of ignored class/) with_tag('.unsupported', text: /BetterErrors\.ignored_classes/) end end From 4703817f7f49c0032e108b5ed708b80234f91a49 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 24 Apr 2020 13:47:16 -0400 Subject: [PATCH 130/160] Release 2.7.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index 314429c9..d825ebe8 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.6.0" + VERSION = "2.7.0" end From 73c02ede6f17f81ad70fae65c6faa0cddbba6b4d Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 13 May 2020 13:18:28 -0400 Subject: [PATCH 131/160] Show file and line within ActionView template --- lib/better_errors/raised_exception.rb | 4 +++ spec/better_errors/raised_exception_spec.rb | 31 ++++++++++++++++++++- 2 files changed, 34 insertions(+), 1 deletion(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index d029536c..63eae39e 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -57,6 +57,10 @@ def setup_backtrace_from_backtrace def massage_syntax_error case exception.class.to_s + when "ActionView::Template::Error" + if exception.respond_to?(:file_name) && exception.respond_to?(:line_number) + backtrace.unshift(StackFrame.new(exception.file_name, exception.line_number.to_i, "view template")) + end when "Haml::SyntaxError", "Sprockets::Coffeelint::Error" if /\A(.+?):(\d+)/ =~ exception.backtrace.first backtrace.unshift(StackFrame.new($1, $2.to_i, "")) diff --git a/spec/better_errors/raised_exception_spec.rb b/spec/better_errors/raised_exception_spec.rb index 76c51f72..99bc8218 100644 --- a/spec/better_errors/raised_exception_spec.rb +++ b/spec/better_errors/raised_exception_spec.rb @@ -18,7 +18,7 @@ module BetterErrors its(:message) { is_expected.to eq "something went wrong!" } end - context "when the exception is a syntax error" do + context "when the exception is a SyntaxError" do let(:exception) { SyntaxError.new("foo.rb:123: you made a typo!") } its(:message) { is_expected.to eq "you made a typo!" } @@ -50,6 +50,35 @@ module BetterErrors end end + context "when the exception is an ActionView::Template::Error" do + before do + stub_const( + "ActionView::Template::Error", + Class.new(StandardError) do + def file_name + "app/views/foo/bar.haml" + end + + def line_number + 42 + end + end + ) + end + + let(:exception) { + ActionView::Template::Error.new("undefined method `something!' for #") + } + + its(:message) { is_expected.to eq "undefined method `something!' for #" } + its(:type) { is_expected.to eq ActionView::Template::Error } + + it "has the right filename and line number in the backtrace" do + expect(subject.backtrace.first.filename).to eq("app/views/foo/bar.haml") + expect(subject.backtrace.first.line).to eq(42) + end + end + context "when the exception is a Coffeelint syntax error" do before do stub_const("Sprockets::Coffeelint::Error", Class.new(SyntaxError)) From 355966bb5a2a67bae065f72fea5930abca25088a Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Wed, 13 May 2020 13:41:58 -0400 Subject: [PATCH 132/160] Release 2.7.1 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index d825ebe8..78517e03 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.7.0" + VERSION = "2.7.1" end From 5960d9ae5fe2e11456e3ad8519bb3e84674b3ed3 Mon Sep 17 00:00:00 2001 From: Connor Shea Date: Wed, 13 May 2020 19:51:28 -0600 Subject: [PATCH 133/160] Add a button the error page if the error is actionable. This adds support for actionable exceptions in Rails. For example, when a migration needs to be run it'll offer a button that can run the migrations for the user. --- lib/better_errors/error_page.rb | 5 +++++ lib/better_errors/templates/main.erb | 10 ++++++++++ 2 files changed, 15 insertions(+) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 666e39a8..add04de4 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -62,6 +62,11 @@ def exception_message exception.message.lstrip end + def exception_actions + return [] unless defined?(ActiveSupport::ActionableError) + ActiveSupport::ActionableError.actions(exception.type) + end + def application_frames backtrace_frames.select(&:application?) end diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index b373f2f6..f029dc0d 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -744,6 +744,16 @@

<%= exception_type %> at <%= request_path %>

<%= exception_message %>

+ <% if exception_actions.any? %> + <% exception_actions.each do |action, _| %> +
+ + + + +
+ <% end %> + <% end %>
From 11427babd0d6891b996b496c528d15aa486f5334 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 May 2020 12:01:34 -0400 Subject: [PATCH 134/160] Add specs for actionable errors and include an element around the action forms, and move the use of ActionDispatch out of the template. --- lib/better_errors/error_page.rb | 9 ++++++- lib/better_errors/templates/main.erb | 20 +++++++------- spec/better_errors/error_page_spec.rb | 38 +++++++++++++++++++++++++++ 3 files changed, 57 insertions(+), 10 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index add04de4..1259ff5c 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -62,11 +62,18 @@ def exception_message exception.message.lstrip end - def exception_actions + def active_support_actions return [] unless defined?(ActiveSupport::ActionableError) + ActiveSupport::ActionableError.actions(exception.type) end + def action_dispatch_action_endpoint + return unless defined?(ActionDispatch::ActionableExceptions) + + ActionDispatch::ActionableExceptions.endpoint + end + def application_frames backtrace_frames.select(&:application?) end diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index f029dc0d..c3ced889 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -744,15 +744,17 @@

<%= exception_type %> at <%= request_path %>

<%= exception_message %>

- <% if exception_actions.any? %> - <% exception_actions.each do |action, _| %> -
- - - - -
- <% end %> + <% unless active_support_actions.empty? %> +
+ <% active_support_actions.each do |action, _| %> +
+ + + + +
+ <% end %> +
<% end %>
diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index ef13e6a5..01fb3508 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -37,6 +37,44 @@ module BetterErrors expect(response).to have_tag('.exception h2', /ZeroDivisionError/) end + context 'when ActiveSupport::ActionableError is available' do + before do + skip "ActiveSupport missing on this platform" unless Object.constants.include?(:ActiveSupport) + skip "ActionableError missing on this platform" unless ActiveSupport.constants.include?(:ActionableError) + end + + context 'when ActiveSupport provides one or more actions for this error type' do + let(:exception_class) { + Class.new(StandardError) do + include ActiveSupport::ActionableError + + action "Do a thing" do + puts "Did a thing" + end + end + } + let(:exception) { exception_binding.eval("raise exception_class") rescue $! } + + it "includes a fix-action form for each action" do + expect(response).to have_tag('.fix-actions') do + with_tag('form.button_to') + with_tag('form.button_to input[type=submit][value="Do a thing"]') + end + end + end + + context 'when ActiveSupport does provide any actions for this error type' do + let(:exception_class) { + Class.new(StandardError) + } + let(:exception) { exception_binding.eval("raise exception_class") rescue $! } + + it "does not include a fix-action form" do + expect(response).not_to have_tag('.fix-actions') + end + end + end + context "variable inspection" do let(:exception) { exception_binding.eval("raise") rescue $! } From 776a12e5f8b29fe4059dd486da8f6c8aa47f29b3 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 May 2020 12:03:10 -0400 Subject: [PATCH 135/160] Improve layout of multiline exception messages These look good when output to the console, but double-newlines make the exception harder to read in BE and push any action buttons further down. --- lib/better_errors/error_page.rb | 2 +- lib/better_errors/templates/main.erb | 12 ++++++++++-- 2 files changed, 11 insertions(+), 3 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 1259ff5c..d4fe8d84 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -59,7 +59,7 @@ def exception_type end def exception_message - exception.message.lstrip + exception.message.strip.gsub(/(\r?\n\s*\r?\n)+/, "\n") end def active_support_actions diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index c3ced889..a945d99c 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -146,6 +146,14 @@ } /* Heading */ + header.exception .fix-actions { + margin-top: .5em; + } + + header.exception .fix-actions input[type=submit] { + font-weight: bold; + } + header.exception h2 { font-weight: 200; font-size: 11pt; @@ -153,7 +161,7 @@ header.exception h2, header.exception p { - line-height: 1.4em; + line-height: 1.5em; overflow: hidden; white-space: pre; text-overflow: ellipsis; @@ -166,7 +174,7 @@ header.exception p { font-weight: 200; - font-size: 20pt; + font-size: 17pt; color: white; } From c65b24335453ed1809b238bd33e9a8da5ad59964 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 May 2020 12:03:37 -0400 Subject: [PATCH 136/160] Improve backtrace when a BE template raises error This is purely for BE development. --- lib/better_errors/error_page.rb | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index d4fe8d84..1f049f39 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -28,6 +28,11 @@ def id def render(template_name = "main") binding.eval(self.class.template(template_name).src) + rescue => e + # Fix the backtrace, which doesn't identify the template that failed (within Better Errors). + # We don't know the line number, so just injecting the template path has to be enough. + e.backtrace.unshift "#{self.class.template_path(template_name)}:0" + raise end def do_variables(opts) From 87cc62d7dfeef345a28cee3e68a867fffe41af1f Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 May 2020 12:15:13 -0400 Subject: [PATCH 137/160] Fix wording of context Co-authored-by: Connor Shea --- spec/better_errors/error_page_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 01fb3508..0e75af51 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -63,7 +63,7 @@ module BetterErrors end end - context 'when ActiveSupport does provide any actions for this error type' do + context 'when ActiveSupport does not provide any actions for this error type' do let(:exception_class) { Class.new(StandardError) } From eb71f479e9ebafbdc947e47ccb7ad9ef9d786965 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 May 2020 14:00:34 -0400 Subject: [PATCH 138/160] Make blank target link optional, add specs --- lib/better_errors/templates/variable_info.erb | 9 +++- spec/better_errors/error_page_spec.rb | 44 +++++++++++++------ 2 files changed, 38 insertions(+), 15 deletions(-) diff --git a/lib/better_errors/templates/variable_info.erb b/lib/better_errors/templates/variable_info.erb index 2b1bae41..24f21cd5 100644 --- a/lib/better_errors/templates/variable_info.erb +++ b/lib/better_errors/templates/variable_info.erb @@ -1,7 +1,14 @@
<%== html_formatted_code_block @frame %> diff --git a/spec/better_errors/error_page_spec.rb b/spec/better_errors/error_page_spec.rb index 0e75af51..74d4f2bb 100644 --- a/spec/better_errors/error_page_spec.rb +++ b/spec/better_errors/error_page_spec.rb @@ -76,15 +76,44 @@ module BetterErrors end context "variable inspection" do + let(:html) { error_page.do_variables("index" => 0)[:html] } let(:exception) { exception_binding.eval("raise") rescue $! } + it 'includes an editor link for the full path of the current frame' do + expect(html).to have_tag('.location .filename') do + with_tag('a[href*="better_errors"]') + end + end + + context 'when BETTER_ERRORS_INSIDE_FRAME is set in the environment' do + before do + ENV['BETTER_ERRORS_INSIDE_FRAME'] = '1' + end + after do + ENV['BETTER_ERRORS_INSIDE_FRAME'] = nil + end + + it 'includes an editor link with target=_blank' do + expect(html).to have_tag('.location .filename') do + with_tag('a[href*="better_errors"][target="_blank"]') + end + end + end + + context 'when BETTER_ERRORS_INSIDE_FRAME is not set in the environment' do + it 'includes an editor link without target=_blank' do + expect(html).to have_tag('.location .filename') do + with_tag('a[href*="better_errors"]:not([target="_blank"])') + end + end + end + context "when binding_of_caller is loaded" do before do skip "binding_of_caller is not loaded" unless BetterErrors.binding_of_caller_available? end it "shows local variables" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: 'local_a') with_tag('pre', text: ':value_for_local_a') @@ -96,7 +125,6 @@ module BetterErrors end it "shows instance variables" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: '@inst_c') with_tag('pre', text: ':value_for_inst_c') @@ -123,7 +151,6 @@ module BetterErrors } it "does not include that value" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: 'local_a') with_tag('pre', text: ':value_for_local_a') @@ -147,7 +174,6 @@ module BetterErrors it "does not show filtered variables" do allow(BetterErrors).to receive(:ignored_instance_variables).and_return([:@inst_d]) - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: '@inst_c') with_tag('pre', text: ':value_for_inst_c') @@ -174,7 +200,6 @@ module BetterErrors let(:content) { 'A' * 480 } it "shows the variable content" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables', text: %r{#{content}}) end end @@ -199,7 +224,6 @@ def inspect } it "shows the variable content" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables', text: /shortval/) end end @@ -212,7 +236,6 @@ def inspect let(:content) { 'A' * 1101 } it "includes an indication that the variable was too large" do - html = error_page.do_variables("index" => 0)[:html] expect(html).not_to have_tag('div.variables', text: %r{#{content}}) expect(html).to have_tag('div.variables', text: /Object too large/) end @@ -230,7 +253,6 @@ def initialize } it "does not attempt to show the class name" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: '@big_anonymous') with_tag('.unsupported', text: /Object too large/) @@ -258,7 +280,6 @@ def initialize let(:content) { 'A' * 480 } it "shows the variable content" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables', text: %r{#{content}}) end end @@ -283,7 +304,6 @@ def inspect } it "shows the variable content" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables', text: /shortval/) end end @@ -297,7 +317,6 @@ def inspect it "includes an indication that the variable was too large" do - html = error_page.do_variables("index" => 0)[:html] expect(html).not_to have_tag('div.variables', text: %r{#{content}}) expect(html).to have_tag('div.variables', text: /Object too large/) end @@ -316,7 +335,6 @@ def initialize } it "does not attempt to show the class name" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables tr') do with_tag('td.name', text: '@big_anonymous') with_tag('.unsupported', text: /Object too large/) @@ -340,7 +358,6 @@ def initialize let(:content) { 'A' * 100_001 } it "includes the content of large variables" do - html = error_page.do_variables("index" => 0)[:html] expect(html).to have_tag('div.variables', text: %r{#{content}}) expect(html).not_to have_tag('div.variables', text: /Object too large/) end @@ -353,7 +370,6 @@ def initialize end it "tells the user to add binding_of_caller to their gemfile to get fancy features" do - html = error_page.do_variables("index" => 0)[:html] expect(html).not_to have_tag('div.variables', text: /gem "binding_of_caller"/) end end From 7204a5bedadabaf6b66ae5ddeece767697c1c001 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 14 May 2020 14:13:34 -0400 Subject: [PATCH 139/160] Update README to reflect new environment variable and include EDITOR instructions. --- README.md | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/README.md b/README.md index 5ea231bc..d428c13d 100644 --- a/README.md +++ b/README.md @@ -35,6 +35,28 @@ end _Note: If you discover that Better Errors isn't working - particularly after upgrading from version 0.5.0 or less - be sure to set `config.consider_all_requests_local = true` in `config/environments/development.rb`._ +### Optional: Set `EDITOR` + +For many reasons outside of Better Errors, you should have the `EDITOR` environment variable set to your preferred +editor. +Better Errors, like many other tools, will use that environment variable to show a link that opens your +editor to the file and line from the console. + +By default the links will open TextMate-protocol links. + +To see if your editor is supported or to set up a different editor, see [the wiki](https://github.com/BetterErrors/better_errors/wiki/Link-to-your-editor). + +### Optional: Set `BETTER_ERRORS_INSIDE_FRAME` + +If your application is running inside of an iframe, or if you have a Content Security Policy that disallows links +to other protocols, the editor links will not work. + +To work around this set `BETTER_ERRORS_INSIDE_FRAME=1` in the environment, and the links will include `target=_blank`, +allowing the link to open regardless of the policy. + +_This works because it opens the editor from a new browser tab, escaping from the restrictions of your site._ +_Unfortunately it leaves behind an empty tab each time, so only use this if needed._ + ## Security **NOTE:** It is *critical* you put better\_errors only in the **development** section of your Gemfile. From 2630c68ec143ad3114bd81ea84a9dafffc255af2 Mon Sep 17 00:00:00 2001 From: Igor Victor Date: Tue, 1 Sep 2020 14:08:19 +0200 Subject: [PATCH 140/160] Update .travis.yml --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index 62e47495..12396261 100644 --- a/.travis.yml +++ b/.travis.yml @@ -14,6 +14,7 @@ rvm: - 2.6.5 - 2.7.0 - ruby-head + - truffleruby-head gemfile: - gemfiles/rails42.gemfile - gemfiles/rails50.gemfile From 44ac479de1aa5dc132eead346ebc5e1967ac134b Mon Sep 17 00:00:00 2001 From: Igor Victor Date: Tue, 1 Sep 2020 15:11:27 +0200 Subject: [PATCH 141/160] Exclude failing matricies --- .travis.yml | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/.travis.yml b/.travis.yml index 12396261..b2313e02 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,13 +7,6 @@ notifications: # https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook - secure: "YnHYbTq51ySistjvOxsuNhyg4GLuUffEJstTYeGYXiBF7HG5h43IVYo8KNuLzwkgsOYBcNo+YMdQX7qCqJffSbhsr1FZRSzBmjFFxcyD4hu+ukM2theZ4mePVAZiePscYvQPRNY4hIb4d3egStJEytkalDhB3sOebF57tIaCssg=" rvm: - - 2.2.10 - - 2.3.8 - - 2.4.9 - - 2.5.7 - - 2.6.5 - - 2.7.0 - - ruby-head - truffleruby-head gemfile: - gemfiles/rails42.gemfile @@ -97,3 +90,15 @@ matrix: gemfile: gemfiles/rails42_boc.gemfile - rvm: ruby-head gemfile: gemfiles/rails42_haml.gemfile + - rvm: truffleruby-head + gemfile: gemfiles/rails42_boc.gemfile + - rvm: truffleruby-head + gemfile: gemfiles/rails50_boc.gemfile + - rvm: truffleruby-head + gemfile: gemfiles/rails51_boc.gemfile + - rvm: truffleruby-head + gemfile: gemfiles/rails52_boc.gemfile + - rvm: truffleruby-head + gemfile: gemfiles/rails60_boc.gemfile + - rvm: truffleruby-head + gemfile: gemfiles/rack_boc.gemfile From 08cade63a08aafd6f246e8325d1300050b79c2ef Mon Sep 17 00:00:00 2001 From: Igor Victor Date: Tue, 1 Sep 2020 15:24:24 +0200 Subject: [PATCH 142/160] Add truffleruby-head to the CI --- .travis.yml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/.travis.yml b/.travis.yml index b2313e02..0193b6d9 100644 --- a/.travis.yml +++ b/.travis.yml @@ -7,6 +7,13 @@ notifications: # https://coveralls.zendesk.com/hc/en-us/articles/203484329-Parallel-Build-Webhook - secure: "YnHYbTq51ySistjvOxsuNhyg4GLuUffEJstTYeGYXiBF7HG5h43IVYo8KNuLzwkgsOYBcNo+YMdQX7qCqJffSbhsr1FZRSzBmjFFxcyD4hu+ukM2theZ4mePVAZiePscYvQPRNY4hIb4d3egStJEytkalDhB3sOebF57tIaCssg=" rvm: + - 2.2.10 + - 2.3.8 + - 2.4.9 + - 2.5.7 + - 2.6.5 + - 2.7.0 + - ruby-head - truffleruby-head gemfile: - gemfiles/rails42.gemfile From 617e65eab750d266295e66d0c355a8ebaf6ce605 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 13 Sep 2020 10:22:42 -0400 Subject: [PATCH 143/160] Add CSRF to error page and internal calls --- lib/better_errors/error_page.rb | 2 +- lib/better_errors/middleware.rb | 41 +++++++++++++++++--- lib/better_errors/templates/main.erb | 2 + spec/better_errors/middleware_spec.rb | 55 ++++++++++++++++++++------- 4 files changed, 80 insertions(+), 20 deletions(-) diff --git a/lib/better_errors/error_page.rb b/lib/better_errors/error_page.rb index 1f049f39..05a7e7bf 100644 --- a/lib/better_errors/error_page.rb +++ b/lib/better_errors/error_page.rb @@ -26,7 +26,7 @@ def id @id ||= SecureRandom.hex(8) end - def render(template_name = "main") + def render(template_name = "main", csrf_token = nil) binding.eval(self.class.template(template_name).src) rescue => e # Fix the backtrace, which doesn't identify the template that failed (within Better Errors). diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 262cf3b2..6eee8b4d 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -1,5 +1,6 @@ require "json" require "ipaddr" +require "securerandom" require "set" require "rack" @@ -39,6 +40,8 @@ def self.allow_ip!(addr) allow_ip! "127.0.0.0/8" allow_ip! "::1/128" rescue nil # windows ruby doesn't have ipv6 support + CSRF_TOKEN_COOKIE_NAME = 'BetterErrors-CSRF-Token' + # A new instance of BetterErrors::Middleware # # @param app The Rack app/middleware to wrap with Better Errors @@ -89,11 +92,14 @@ def protected_app_call(env) end def show_error_page(env, exception=nil) + request = Rack::Request.new(env) + csrf_token = request.cookies[CSRF_TOKEN_COOKIE_NAME] || SecureRandom.uuid + type, content = if @error_page if text?(env) [ 'plain', @error_page.render('text') ] else - [ 'html', @error_page.render ] + [ 'html', @error_page.render('main', csrf_token) ] end else [ 'html', no_errors_page ] @@ -104,12 +110,21 @@ def show_error_page(env, exception=nil) status_code = ActionDispatch::ExceptionWrapper.new(env, exception).status_code end - [status_code, { "Content-Type" => "text/#{type}; charset=utf-8" }, [content]] + headers = { + "Content-Type" => "text/#{type}; charset=utf-8", + } + response = Rack::Response.new(content, status_code, headers) + + unless request.cookies[CSRF_TOKEN_COOKIE_NAME] + response.set_cookie(CSRF_TOKEN_COOKIE_NAME, value: csrf_token, httponly: true, same_site: :strict) + end + + response.finish end def text?(env) env["HTTP_X_REQUESTED_WITH"] == "XMLHttpRequest" || - !env["HTTP_ACCEPT"].to_s.include?('html') + !env["HTTP_ACCEPT"].to_s.include?('html') end def log_exception @@ -133,9 +148,15 @@ def internal_call(env, opts) return no_errors_json_response unless @error_page return invalid_error_json_response if opts[:id] != @error_page.id - env["rack.input"].rewind - response = @error_page.send("do_#{opts[:method]}", JSON.parse(env["rack.input"].read)) - [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump(response)]] + request = Rack::Request.new(env) + return invalid_csrf_token_json_response unless request.cookies[CSRF_TOKEN_COOKIE_NAME] + + request.body.rewind + body = JSON.parse(request.body.read) + return invalid_csrf_token_json_response unless request.cookies[CSRF_TOKEN_COOKIE_NAME] == body['csrfToken'] + + response = @error_page.send("do_#{opts[:method]}", body) + [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump(response)]] end def no_errors_page @@ -170,5 +191,13 @@ def invalid_error_json_response "and the exception is no longer available in memory.", )]] end + + def invalid_csrf_token_json_response + [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + error: "Invalid CSRF Token", + explanation: "The browser session might have been cleared, " + + "or something went wrong.", + )]] + end end end diff --git a/lib/better_errors/templates/main.erb b/lib/better_errors/templates/main.erb index a945d99c..1ab68559 100644 --- a/lib/better_errors/templates/main.erb +++ b/lib/better_errors/templates/main.erb @@ -800,6 +800,7 @@ (function() { var OID = "<%= id %>"; + var csrfToken = "<%= csrf_token %>"; var previousFrame = null; var previousFrameInfo = null; @@ -810,6 +811,7 @@ var req = new XMLHttpRequest(); req.open("POST", "//" + window.location.host + <%== uri_prefix.gsub("<", "<").inspect %> + "/__better_errors/" + OID + "/" + method, true); req.setRequestHeader("Content-Type", "application/json"); + opts.csrfToken = csrfToken; req.send(JSON.stringify(opts)); req.onreadystatechange = function() { if(req.readyState == 4) { diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 8a7ffa69..d410a5f6 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -161,7 +161,7 @@ def initialize(message, original_exception = nil) it "returns ExceptionWrapper's status_code" do ad_ew = double("ActionDispatch::ExceptionWrapper") - allow(ad_ew).to receive('new').with({}, exception) { double("ExceptionWrapper", status_code: 404) } + allow(ad_ew).to receive('new').with(anything, exception) { double("ExceptionWrapper", status_code: 404) } stub_const('ActionDispatch::ExceptionWrapper', ad_ew) status, headers, body = app.call({}) @@ -229,18 +229,17 @@ def initialize(message, original_exception = nil) context "requesting the variables for a specific frame" do let(:env) { {} } let(:result) { - app.call( - "PATH_INFO" => "/__better_errors/#{id}/#{method}", - # This is a POST request, and this is the body of the request. - "rack.input" => StringIO.new('{"index": 0}'), - ) + app.call(request_env) } + let(:request_env) { + Rack::MockRequest.env_for("/__better_errors/#{id}/variables", input: StringIO.new(JSON.dump(request_body_data))) + } + let(:request_body_data) { {"index": 0} } let(:status) { result[0] } let(:headers) { result[1] } let(:body) { result[2].join } let(:json_body) { JSON.parse(body) } let(:id) { 'abcdefg' } - let(:method) { 'variables' } context 'when no errors have been recorded' do it 'returns a JSON error' do @@ -291,14 +290,44 @@ def initialize(message, original_exception = nil) end end - context 'and it matches the request', :focus do + context 'and its ID matches the requested ID' do let(:id) { error_page.id } - it 'returns a JSON error' do - expect(error_page).to receive(:do_variables).and_return(html: "") - expect(json_body).to match( - 'html' => '', - ) + context 'when the body csrfToken matches the CSRF token cookie' do + let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } + before do + request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken123" + end + + it 'returns the HTML content' do + expect(error_page).to receive(:do_variables).and_return(html: "") + expect(json_body).to match( + 'html' => '', + ) + end + end + + context 'when the body csrfToken does not match the CSRF token cookie' do + let(:request_body_data) { {"index": 0, "csrfToken": "csrfToken123"} } + before do + request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken456" + end + + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Invalid CSRF Token', + 'explanation' => /session might have been cleared/, + ) + end + end + + context 'when there is no CSRF token in the request' do + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Invalid CSRF Token', + 'explanation' => /session might have been cleared/, + ) + end end end end From 764bf3b20bea70006575aa6fbd94bb18cf8080ec Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 13 Sep 2020 10:25:00 -0400 Subject: [PATCH 144/160] Fix incorrect mime type in JSON error responses --- lib/better_errors/middleware.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 6eee8b4d..dac2ae5c 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -178,14 +178,14 @@ def no_errors_json_response "The application has been restarted since this page loaded, " + "or the framework is reloading all gems before each request " end - [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump( error: 'No exception information available', explanation: explanation, )]] end def invalid_error_json_response - [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump( error: "Session expired", explanation: "This page was likely opened from a previous exception, " + "and the exception is no longer available in memory.", @@ -193,7 +193,7 @@ def invalid_error_json_response end def invalid_csrf_token_json_response - [200, { "Content-Type" => "text/plain; charset=utf-8" }, [JSON.dump( + [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump( error: "Invalid CSRF Token", explanation: "The browser session might have been cleared, " + "or something went wrong.", From ef064610db574506c6285a6daf2ab62ef406c5a8 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 13 Sep 2020 11:35:26 -0400 Subject: [PATCH 145/160] Work around weirdness in older Rack::Response --- lib/better_errors/middleware.rb | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index dac2ae5c..11036128 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -110,16 +110,17 @@ def show_error_page(env, exception=nil) status_code = ActionDispatch::ExceptionWrapper.new(env, exception).status_code end - headers = { - "Content-Type" => "text/#{type}; charset=utf-8", - } - response = Rack::Response.new(content, status_code, headers) + response = Rack::Response.new(content, status_code, { "Content-Type" => "text/#{type}; charset=utf-8" }) unless request.cookies[CSRF_TOKEN_COOKIE_NAME] response.set_cookie(CSRF_TOKEN_COOKIE_NAME, value: csrf_token, httponly: true, same_site: :strict) end - response.finish + # In older versions of Rack, the body returned here is actually a Rack::BodyProxy which seems to be a bug. + # (It contains status, headers and body and does not act like an array of strings.) + # Since we already have status code and body here, there's no need to use the ones in the Rack::Response. + (_status_code, headers, _body) = response.finish + [status_code, headers, [content]] end def text?(env) From 4f05b45f23277872438689d14c22fab7f03ad0b7 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Sun, 13 Sep 2020 12:29:01 -0400 Subject: [PATCH 146/160] Middleware specs to cover more CSRF edge cases and refactor the specs to be more clear. --- spec/better_errors/middleware_spec.rb | 161 +++++++++++++++++--------- 1 file changed, 109 insertions(+), 52 deletions(-) diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index d410a5f6..44b38fd1 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -4,9 +4,14 @@ module BetterErrors describe Middleware do let(:app) { Middleware.new(->env { ":)" }) } let(:exception) { RuntimeError.new("oh no :(") } + let(:status) { response_env[0] } + let(:headers) { response_env[1] } + let(:body) { response_env[2].join } - it "passes non-error responses through" do - expect(app.call({})).to eq(":)") + context 'when the application raises no exception' do + it "passes non-error responses through" do + expect(app.call({})).to eq(":)") + end end it "calls the internal methods" do @@ -24,11 +29,6 @@ module BetterErrors app.call("PATH_INFO" => "/__better_errors/") end - it "shows the error page on any subfolder path" do - expect(app).to receive :show_error_page - app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors/") - end - it "doesn't show the error page to a non-local address" do expect(app).not_to receive :better_errors_call app.call("REMOTE_ADDR" => "1.2.3.4") @@ -62,34 +62,71 @@ module BetterErrors expect { app.call("REMOTE_ADDR" => "0:0:0:0:0:0:0:1%0" ) }.to_not raise_error end - context "when requesting the /__better_errors manually" do - let(:app) { Middleware.new(->env { ":)" }) } + context "when /__better_errors is requested directly" do + let(:response_env) { app.call("PATH_INFO" => "/__better_errors") } - it "shows that no errors have been recorded" do - status, headers, body = app.call("PATH_INFO" => "/__better_errors") - expect(body.join).to match /No errors have been recorded yet./ - end + context "when no error has been recorded since startup" do + it "shows that no errors have been recorded" do + expect(body).to match /No errors have been recorded yet./ + end - it 'does not attempt to use ActionDispatch::ExceptionWrapper with a nil exception' do - ad_ew = double("ActionDispatch::ExceptionWrapper") - stub_const('ActionDispatch::ExceptionWrapper', ad_ew) - expect(ad_ew).to_not receive :new + it 'does not attempt to use ActionDispatch::ExceptionWrapper on the nil exception' do + ad_ew = double("ActionDispatch::ExceptionWrapper") + stub_const('ActionDispatch::ExceptionWrapper', ad_ew) + expect(ad_ew).to_not receive :new + + response_env + end + + context 'when requested inside a subfolder path' do + let(:response_env) { app.call("PATH_INFO" => "/any_sub/folder/__better_errors") } - status, headers, body = app.call("PATH_INFO" => "/__better_errors") + it "shows that no errors have been recorded" do + expect(body).to match /No errors have been recorded yet./ + end + end end - it "shows that no errors have been recorded on any subfolder path" do - status, headers, body = app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors") - expect(body.join).to match /No errors have been recorded yet./ + context 'when an error has been recorded' do + let(:app) { + Middleware.new(->env do + # Only raise on the first request + raise exception unless @already_raised + @already_raised = true + end) + } + before do + app.call({}) + end + + it 'returns the information of the most recent error' do + expect(body).to include("oh no :(") + end + + it 'does not attempt to use ActionDispatch::ExceptionWrapper' do + ad_ew = double("ActionDispatch::ExceptionWrapper") + stub_const('ActionDispatch::ExceptionWrapper', ad_ew) + expect(ad_ew).to_not receive :new + + response_env + end + + context 'when inside a subfolder path' do + let(:response_env) { app.call("PATH_INFO" => "/any_sub/folder/__better_errors") } + + it "shows the error page on any subfolder path" do + expect(app).to receive :show_error_page + app.call("PATH_INFO" => "/any_sub/folder/path/__better_errors/") + end + end end end context "when handling an error" do let(:app) { Middleware.new(->env { raise exception }) } + let(:response_env) { app.call({}) } it "returns status 500" do - status, headers, body = app.call({}) - expect(status).to eq(500) end @@ -109,11 +146,9 @@ module BetterErrors } it "shows the exception as-is" do - status, _, body = app.call({}) - expect(status).to eq(500) - expect(body.join).to match(/\n> Second Exception\n/) - expect(body.join).not_to match(/\n> First Exception\n/) + expect(body).to match(/\n> Second Exception\n/) + expect(body).not_to match(/\n> First Exception\n/) end end @@ -135,11 +170,9 @@ def initialize(message, original_exception = nil) } it "shows the original exception instead of the last-raised one" do - status, _, body = app.call({}) - expect(status).to eq(500) - expect(body.join).not_to match(/Second Exception/) - expect(body.join).to match(/First Exception/) + expect(body).not_to match(/Second Exception/) + expect(body).to match(/First Exception/) end end @@ -151,10 +184,8 @@ def initialize(message, original_exception = nil) } it "shows the exception as-is" do - status, _, body = app.call({}) - expect(status).to eq(500) - expect(body.join).to match(/The Exception/) + expect(body).to match(/The Exception/) end end end @@ -164,28 +195,57 @@ def initialize(message, original_exception = nil) allow(ad_ew).to receive('new').with(anything, exception) { double("ExceptionWrapper", status_code: 404) } stub_const('ActionDispatch::ExceptionWrapper', ad_ew) - status, headers, body = app.call({}) - expect(status).to eq(404) end it "returns UTF-8 error pages" do - status, headers, body = app.call({}) - expect(headers["Content-Type"]).to match /charset=utf-8/ end - it "returns text pages by default" do - status, headers, body = app.call({}) - + it "returns text content by default" do expect(headers["Content-Type"]).to match /text\/plain/ end - it "returns HTML pages by default" do - # Chrome's 'Accept' header looks similar this. - status, headers, body = app.call("HTTP_ACCEPT" => "text/html,application/xhtml+xml;q=0.9,*/*") + context 'when a CSRF token cookie is not specified' do + it 'includes a newly-generated CSRF token cookie' do + expect(headers).to include( + 'Set-Cookie' => /BetterErrors-CSRF-Token=[-a-z0-9]+; HttpOnly; SameSite=Strict/ + ) + end + end + + context 'when a CSRF token cookie is specified' do + let(:response_env) { app.call({ 'HTTP_COOKIE' => 'BetterErrors-CSRF-Token=abc123' }) } + + it 'does not set a new CSRF token cookie' do + expect(headers).not_to include('Set-Cookie') + end + end + + context 'when the Accept header specifies HTML first' do + let(:response_env) { app.call("HTTP_ACCEPT" => "text/html,application/xhtml+xml;q=0.9,*/*") } + + it "returns HTML content" do + expect(headers["Content-Type"]).to match /text\/html/ + end + + it 'includes the newly-generated CSRF token in the body of the page' do + matches = headers['Set-Cookie'].match(/BetterErrors-CSRF-Token=(?[-a-z0-9]+); HttpOnly; SameSite=Strict/) + expect(body).to include(matches[:tok]) + end - expect(headers["Content-Type"]).to match /text\/html/ + context 'when a CSRF token cookie is specified' do + let(:response_env) { + app.call({ + 'HTTP_COOKIE' => 'BetterErrors-CSRF-Token=csrfTokenGHI', + "HTTP_ACCEPT" => "text/html,application/xhtml+xml;q=0.9,*/*", + }) + } + + it 'includes that CSRF token in the body of the page' do + expect(body).to include('csrfTokenGHI') + end + end end context 'the logger' do @@ -196,7 +256,7 @@ def initialize(message, original_exception = nil) it "receives the exception as a fatal message" do expect(logger).to receive(:fatal).with(/RuntimeError/) - app.call({}) + response_env end context 'when Rails is being used' do @@ -208,7 +268,7 @@ def initialize(message, original_exception = nil) expect(logger).to receive(:fatal) do |message| expect(message).to_not match(/rspec-core/) end - app.call({}) + response_env end end context 'when Rails is not being used' do @@ -220,7 +280,7 @@ def initialize(message, original_exception = nil) expect(logger).to receive(:fatal) do |message| expect(message).to match(/rspec-core/) end - app.call({}) + response_env end end end @@ -228,16 +288,13 @@ def initialize(message, original_exception = nil) context "requesting the variables for a specific frame" do let(:env) { {} } - let(:result) { + let(:response_env) { app.call(request_env) } let(:request_env) { Rack::MockRequest.env_for("/__better_errors/#{id}/variables", input: StringIO.new(JSON.dump(request_body_data))) } let(:request_body_data) { {"index": 0} } - let(:status) { result[0] } - let(:headers) { result[1] } - let(:body) { result[2].join } let(:json_body) { JSON.parse(body) } let(:id) { 'abcdefg' } From 446c192ac35d561372d2e862a6be63572f8e0e16 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 15 Sep 2020 16:24:38 -0400 Subject: [PATCH 147/160] Validate content-type of internal calls --- lib/better_errors/middleware.rb | 9 +++++++++ spec/better_errors/middleware_spec.rb | 29 ++++++++++++++++++++++----- 2 files changed, 33 insertions(+), 5 deletions(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 11036128..da7bf361 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -156,6 +156,8 @@ def internal_call(env, opts) body = JSON.parse(request.body.read) return invalid_csrf_token_json_response unless request.cookies[CSRF_TOKEN_COOKIE_NAME] == body['csrfToken'] + return not_acceptable_json_response unless request.content_type == 'application/json' + response = @error_page.send("do_#{opts[:method]}", body) [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump(response)]] end @@ -200,5 +202,12 @@ def invalid_csrf_token_json_response "or something went wrong.", )]] end + + def not_acceptable_json_response + [406, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump( + error: "Request not acceptable", + explanation: "The internal request did not match an acceptable content type.", + )]] + end end end diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 44b38fd1..b35b7da2 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -356,11 +356,30 @@ def initialize(message, original_exception = nil) request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken123" end - it 'returns the HTML content' do - expect(error_page).to receive(:do_variables).and_return(html: "") - expect(json_body).to match( - 'html' => '', - ) + context 'when the Content-Type of the request is application/json' do + before do + request_env['CONTENT_TYPE'] = 'application/json' + end + + it 'returns JSON containing the HTML content' do + expect(error_page).to receive(:do_variables).and_return(html: "") + expect(json_body).to match( + 'html' => '', + ) + end + end + + context 'when the Content-Type of the request is application/json' do + before do + request_env['HTTP_CONTENT_TYPE'] = 'application/json' + end + + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Request not acceptable', + 'explanation' => /did not match an acceptable content type/, + ) + end end end From aa073f6f07ee05894a56e3cf79710e809051b0f3 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 15 Sep 2020 16:33:07 -0400 Subject: [PATCH 148/160] Validate internal call method names --- lib/better_errors/middleware.rb | 16 ++- spec/better_errors/middleware_spec.rb | 148 +++++++++++++++++++++++++- 2 files changed, 158 insertions(+), 6 deletions(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index da7bf361..aab0210d 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -75,7 +75,7 @@ def allow_ip?(env) def better_errors_call(env) case env["PATH_INFO"] when %r{/__better_errors/(?.+?)/(?\w+)\z} - internal_call env, $~ + internal_call(env, $~[:id], $~[:method]) when %r{/__better_errors/?\z} show_error_page env else @@ -145,9 +145,10 @@ def backtrace_frames end end - def internal_call(env, opts) + def internal_call(env, id, method) + return not_found_json_response unless %w[variables eval].include?(method) return no_errors_json_response unless @error_page - return invalid_error_json_response if opts[:id] != @error_page.id + return invalid_error_json_response if id != @error_page.id request = Rack::Request.new(env) return invalid_csrf_token_json_response unless request.cookies[CSRF_TOKEN_COOKIE_NAME] @@ -158,7 +159,7 @@ def internal_call(env, opts) return not_acceptable_json_response unless request.content_type == 'application/json' - response = @error_page.send("do_#{opts[:method]}", body) + response = @error_page.send("do_#{method}", body) [200, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump(response)]] end @@ -203,6 +204,13 @@ def invalid_csrf_token_json_response )]] end + def not_found_json_response + [404, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump( + error: "Not found", + explanation: "Not a recognized internal call.", + )]] + end + def not_acceptable_json_response [406, { "Content-Type" => "application/json; charset=utf-8" }, [JSON.dump( error: "Request not acceptable", diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index b35b7da2..6a6a48f6 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -294,7 +294,7 @@ def initialize(message, original_exception = nil) let(:request_env) { Rack::MockRequest.env_for("/__better_errors/#{id}/variables", input: StringIO.new(JSON.dump(request_body_data))) } - let(:request_body_data) { {"index": 0} } + let(:request_body_data) { { "index" => 0 } } let(:json_body) { JSON.parse(body) } let(:id) { 'abcdefg' } @@ -384,7 +384,131 @@ def initialize(message, original_exception = nil) end context 'when the body csrfToken does not match the CSRF token cookie' do - let(:request_body_data) { {"index": 0, "csrfToken": "csrfToken123"} } + let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } + before do + request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken456" + end + + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Invalid CSRF Token', + 'explanation' => /session might have been cleared/, + ) + end + end + + context 'when there is no CSRF token in the request' do + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Invalid CSRF Token', + 'explanation' => /session might have been cleared/, + ) + end + end + end + end + end + + context "requesting eval for a specific frame" do + let(:env) { {} } + let(:response_env) { + app.call(request_env) + } + let(:request_env) { + Rack::MockRequest.env_for("/__better_errors/#{id}/eval", input: StringIO.new(JSON.dump(request_body_data))) + } + let(:request_body_data) { { "index" => 0, source: "do_a_thing" } } + let(:json_body) { JSON.parse(body) } + let(:id) { 'abcdefg' } + + context 'when no errors have been recorded' do + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'No exception information available', + 'explanation' => /application has been restarted/, + ) + end + + context 'when Middleman is in use' do + let!(:middleman) { class_double("Middleman").as_stubbed_const } + it 'returns a JSON error' do + expect(json_body['explanation']) + .to match(/Middleman reloads all dependencies/) + end + end + + context 'when Shotgun is in use' do + let!(:shotgun) { class_double("Shotgun").as_stubbed_const } + + it 'returns a JSON error' do + expect(json_body['explanation']) + .to match(/The shotgun gem/) + end + + context 'when Hanami is also in use' do + let!(:hanami) { class_double("Hanami").as_stubbed_const } + it 'returns a JSON error' do + expect(json_body['explanation']) + .to match(/--no-code-reloading/) + end + end + end + end + + context 'when an error has been recorded' do + let(:error_page) { ErrorPage.new(exception, env) } + before do + app.instance_variable_set('@error_page', error_page) + end + + context 'but it does not match the request' do + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Session expired', + 'explanation' => /no longer available in memory/, + ) + end + end + + context 'and its ID matches the requested ID' do + let(:id) { error_page.id } + + context 'when the body csrfToken matches the CSRF token cookie' do + let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } + before do + request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken123" + end + + context 'when the Content-Type of the request is application/json' do + before do + request_env['CONTENT_TYPE'] = 'application/json' + end + + it 'returns JSON containing the eval result' do + expect(error_page).to receive(:do_eval).and_return(prompt: '#', result: "much_stuff_here") + expect(json_body).to match( + 'prompt' => '#', + 'result' => 'much_stuff_here', + ) + end + end + + context 'when the Content-Type of the request is application/json' do + before do + request_env['HTTP_CONTENT_TYPE'] = 'application/json' + end + + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Request not acceptable', + 'explanation' => /did not match an acceptable content type/, + ) + end + end + end + + context 'when the body csrfToken does not match the CSRF token cookie' do + let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } before do request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken456" end @@ -408,5 +532,25 @@ def initialize(message, original_exception = nil) end end end + + context "requesting an invalid internal method" do + let(:env) { {} } + let(:response_env) { + app.call(request_env) + } + let(:request_env) { + Rack::MockRequest.env_for("/__better_errors/#{id}/invalid", input: StringIO.new(JSON.dump(request_body_data))) + } + let(:request_body_data) { { "index" => 0 } } + let(:json_body) { JSON.parse(body) } + let(:id) { 'abcdefg' } + + it 'returns a JSON error' do + expect(json_body).to match( + 'error' => 'Not found', + 'explanation' => /recognized internal call/, + ) + end + end end end From 39395368110c8fac4374c813f7f0d3cd3888f973 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 15 Sep 2020 17:36:55 -0400 Subject: [PATCH 149/160] Release 2.8.0 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index 78517e03..e5f0a866 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.7.1" + VERSION = "2.8.0" end From 32fc91d1b4c7c0ff19323ebc3a1c601f5d4dc772 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Tue, 15 Sep 2020 18:03:33 -0400 Subject: [PATCH 150/160] Show real cause of ActionView::Template::Error --- lib/better_errors/raised_exception.rb | 18 ++++-- spec/better_errors/raised_exception_spec.rb | 67 +++++++++++---------- 2 files changed, 48 insertions(+), 37 deletions(-) diff --git a/lib/better_errors/raised_exception.rb b/lib/better_errors/raised_exception.rb index 63eae39e..f47812f6 100644 --- a/lib/better_errors/raised_exception.rb +++ b/lib/better_errors/raised_exception.rb @@ -4,8 +4,18 @@ class RaisedException attr_reader :exception, :message, :backtrace def initialize(exception) - if exception.respond_to?(:original_exception) && exception.original_exception - # This supports some specific Rails exceptions, and is not intended to act the same as `#cause`. + if exception.class.name == "ActionView::Template::Error" && exception.respond_to?(:cause) + # Rails 6+ exceptions of this type wrap the "real" exception, and the real exception + # is actually more useful than the ActionView-provided wrapper. Once Better Errors + # supports showing all exceptions in the cause stack, this should go away. Or perhaps + # this can be changed to provide guidance by showing the second error in the cause stack + # under this condition. + exception = exception.cause if exception.cause + elsif exception.respond_to?(:original_exception) && exception.original_exception + # This supports some specific Rails exceptions, and this is not intended to act the same as + # the Ruby's {Exception#cause}. + # It's possible this should only support ActionView::Template::Error, but by not changing + # this we're preserving longstanding behavior of Better Errors with Rails < 6. exception = exception.original_exception end @@ -57,10 +67,6 @@ def setup_backtrace_from_backtrace def massage_syntax_error case exception.class.to_s - when "ActionView::Template::Error" - if exception.respond_to?(:file_name) && exception.respond_to?(:line_number) - backtrace.unshift(StackFrame.new(exception.file_name, exception.line_number.to_i, "view template")) - end when "Haml::SyntaxError", "Sprockets::Coffeelint::Error" if /\A(.+?):(\d+)/ =~ exception.backtrace.first backtrace.unshift(StackFrame.new($1, $2.to_i, "")) diff --git a/spec/better_errors/raised_exception_spec.rb b/spec/better_errors/raised_exception_spec.rb index 99bc8218..e5fe6837 100644 --- a/spec/better_errors/raised_exception_spec.rb +++ b/spec/better_errors/raised_exception_spec.rb @@ -10,12 +10,32 @@ module BetterErrors its(:message) { is_expected.to eq "whoops" } its(:type) { is_expected.to eq RuntimeError } - context "when the exception wraps another exception" do + context 'when the exception is an ActionView::Template::Error that responds to #cause (Rails 6+)' do + before do + stub_const( + "ActionView::Template::Error", + Class.new(StandardError) do + def cause + RuntimeError.new("something went wrong!") + end + end + ) + end + let(:exception) { + ActionView::Template::Error.new("undefined method `something!' for #") + } + + its(:message) { is_expected.to eq "something went wrong!" } + its(:type) { is_expected.to eq RuntimeError } + end + + context 'when the exception is a Rails < 6 exception that has an #original_exception' do let(:original_exception) { RuntimeError.new("something went wrong!") } let(:exception) { double(:original_exception => original_exception) } its(:exception) { is_expected.to eq original_exception } - its(:message) { is_expected.to eq "something went wrong!" } + its(:message) { is_expected.to eq "something went wrong!" } + its(:type) { is_expected.to eq RuntimeError } end context "when the exception is a SyntaxError" do @@ -50,35 +70,20 @@ module BetterErrors end end - context "when the exception is an ActionView::Template::Error" do - before do - stub_const( - "ActionView::Template::Error", - Class.new(StandardError) do - def file_name - "app/views/foo/bar.haml" - end - - def line_number - 42 - end - end - ) - end - - let(:exception) { - ActionView::Template::Error.new("undefined method `something!' for #") - } - - its(:message) { is_expected.to eq "undefined method `something!' for #" } - its(:type) { is_expected.to eq ActionView::Template::Error } - - it "has the right filename and line number in the backtrace" do - expect(subject.backtrace.first.filename).to eq("app/views/foo/bar.haml") - expect(subject.backtrace.first.line).to eq(42) - end - end - + # context "when the exception is an ActionView::Template::Error" do + # + # let(:exception) { + # ActionView::Template::Error.new("undefined method `something!' for #") + # } + # + # its(:message) { is_expected.to eq "undefined method `something!' for #" } + # + # it "has the right filename and line number in the backtrace" do + # expect(subject.backtrace.first.filename).to eq("app/views/foo/bar.haml") + # expect(subject.backtrace.first.line).to eq(42) + # end + # end + # context "when the exception is a Coffeelint syntax error" do before do stub_const("Sprockets::Coffeelint::Error", Class.new(SyntaxError)) From a9d1c4b74732840ea988031ce529ce6edf034791 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 17 Sep 2020 17:46:28 -0400 Subject: [PATCH 151/160] Release 2.8.1 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index e5f0a866..98591d6a 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.8.0" + VERSION = "2.8.1" end From bb316391ca2043693d870273dce5412b853daba0 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 24 Sep 2020 10:02:06 -0400 Subject: [PATCH 152/160] Fix CSRF token cookie path --- lib/better_errors/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index aab0210d..43394a9b 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -113,7 +113,7 @@ def show_error_page(env, exception=nil) response = Rack::Response.new(content, status_code, { "Content-Type" => "text/#{type}; charset=utf-8" }) unless request.cookies[CSRF_TOKEN_COOKIE_NAME] - response.set_cookie(CSRF_TOKEN_COOKIE_NAME, value: csrf_token, httponly: true, same_site: :strict) + response.set_cookie(CSRF_TOKEN_COOKIE_NAME, value: csrf_token, path: "/", httponly: true, same_site: :strict) end # In older versions of Rack, the body returned here is actually a Rack::BodyProxy which seems to be a bug. From da0e0d971bfc32b646e6a86d959086b3779e340b Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 24 Sep 2020 10:03:08 -0400 Subject: [PATCH 153/160] Fix old CSRF token being used after upgrade --- lib/better_errors/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 43394a9b..8215c70b 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -40,7 +40,7 @@ def self.allow_ip!(addr) allow_ip! "127.0.0.0/8" allow_ip! "::1/128" rescue nil # windows ruby doesn't have ipv6 support - CSRF_TOKEN_COOKIE_NAME = 'BetterErrors-CSRF-Token' + CSRF_TOKEN_COOKIE_NAME = "BetterErrors-#{VERSION}-CSRF-Token" # A new instance of BetterErrors::Middleware # From 41eb0adf7fcdb926e276ee69f1cebec1a1bdf7e1 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 24 Sep 2020 10:15:08 -0400 Subject: [PATCH 154/160] Fix the specs I broke in #478 :facepalm: --- spec/better_errors/middleware_spec.rb | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 6a6a48f6..4f5e9bcb 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -209,13 +209,13 @@ def initialize(message, original_exception = nil) context 'when a CSRF token cookie is not specified' do it 'includes a newly-generated CSRF token cookie' do expect(headers).to include( - 'Set-Cookie' => /BetterErrors-CSRF-Token=[-a-z0-9]+; HttpOnly; SameSite=Strict/ + 'Set-Cookie' => /BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=[-a-z0-9]+; path=\/; HttpOnly; SameSite=Strict/, ) end end context 'when a CSRF token cookie is specified' do - let(:response_env) { app.call({ 'HTTP_COOKIE' => 'BetterErrors-CSRF-Token=abc123' }) } + let(:response_env) { app.call({ 'HTTP_COOKIE' => "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=abc123" }) } it 'does not set a new CSRF token cookie' do expect(headers).not_to include('Set-Cookie') @@ -230,14 +230,14 @@ def initialize(message, original_exception = nil) end it 'includes the newly-generated CSRF token in the body of the page' do - matches = headers['Set-Cookie'].match(/BetterErrors-CSRF-Token=(?[-a-z0-9]+); HttpOnly; SameSite=Strict/) + matches = headers['Set-Cookie'].match(/BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=(?[-a-z0-9]+); path=\/; HttpOnly; SameSite=Strict/) expect(body).to include(matches[:tok]) end context 'when a CSRF token cookie is specified' do let(:response_env) { app.call({ - 'HTTP_COOKIE' => 'BetterErrors-CSRF-Token=csrfTokenGHI', + 'HTTP_COOKIE' => "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=csrfTokenGHI", "HTTP_ACCEPT" => "text/html,application/xhtml+xml;q=0.9,*/*", }) } @@ -353,7 +353,7 @@ def initialize(message, original_exception = nil) context 'when the body csrfToken matches the CSRF token cookie' do let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } before do - request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken123" + request_env["HTTP_COOKIE"] = "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=csrfToken123" end context 'when the Content-Type of the request is application/json' do @@ -386,7 +386,7 @@ def initialize(message, original_exception = nil) context 'when the body csrfToken does not match the CSRF token cookie' do let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } before do - request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken456" + request_env["HTTP_COOKIE"] = "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=csrfToken456" end it 'returns a JSON error' do @@ -476,7 +476,7 @@ def initialize(message, original_exception = nil) context 'when the body csrfToken matches the CSRF token cookie' do let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } before do - request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken123" + request_env["HTTP_COOKIE"] = "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=csrfToken123" end context 'when the Content-Type of the request is application/json' do @@ -510,7 +510,7 @@ def initialize(message, original_exception = nil) context 'when the body csrfToken does not match the CSRF token cookie' do let(:request_body_data) { { "index" => 0, "csrfToken" => "csrfToken123" } } before do - request_env["HTTP_COOKIE"] = "BetterErrors-CSRF-Token=csrfToken456" + request_env["HTTP_COOKIE"] = "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token=csrfToken456" end it 'returns a JSON error' do From be7475b7a5bce98bdee64aa373c7c65397521196 Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Thu, 24 Sep 2020 10:17:36 -0400 Subject: [PATCH 155/160] Release 2.8.2 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index 98591d6a..e49a5c48 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.8.1" + VERSION = "2.8.2" end From 0ac88dcfd60a5340ae7212d3a07a38ce8e65892e Mon Sep 17 00:00:00 2001 From: Addison Martin Date: Thu, 1 Oct 2020 20:10:23 -0400 Subject: [PATCH 156/160] Fixed 'uninitialized constant BetterErrors::Middleware::VERSION' in lib/better_errors/middleware.rb by using BetterErrors::Version, not the nonexistent VERSION constant of Middleware. --- lib/better_errors/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 8215c70b..3a437819 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -40,7 +40,7 @@ def self.allow_ip!(addr) allow_ip! "127.0.0.0/8" allow_ip! "::1/128" rescue nil # windows ruby doesn't have ipv6 support - CSRF_TOKEN_COOKIE_NAME = "BetterErrors-#{VERSION}-CSRF-Token" + CSRF_TOKEN_COOKIE_NAME = "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token" # A new instance of BetterErrors::Middleware # From 527f8b092bbf7f8967aeea313470c9053ca3118a Mon Sep 17 00:00:00 2001 From: Rafael Nunes Date: Fri, 2 Oct 2020 12:15:57 +1000 Subject: [PATCH 157/160] Fix CSRF_TOKEN_COOKIE_NAME wrong reference to VERSION constant --- lib/better_errors/middleware.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/middleware.rb b/lib/better_errors/middleware.rb index 8215c70b..3a437819 100644 --- a/lib/better_errors/middleware.rb +++ b/lib/better_errors/middleware.rb @@ -40,7 +40,7 @@ def self.allow_ip!(addr) allow_ip! "127.0.0.0/8" allow_ip! "::1/128" rescue nil # windows ruby doesn't have ipv6 support - CSRF_TOKEN_COOKIE_NAME = "BetterErrors-#{VERSION}-CSRF-Token" + CSRF_TOKEN_COOKIE_NAME = "BetterErrors-#{BetterErrors::VERSION}-CSRF-Token" # A new instance of BetterErrors::Middleware # From 90789f99ff1a5575f79758db562c810d20d64a25 Mon Sep 17 00:00:00 2001 From: Rafael Nunes Date: Fri, 2 Oct 2020 21:35:12 +1000 Subject: [PATCH 158/160] Moves version require up to guarantee dependants can access it --- lib/better_errors.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors.rb b/lib/better_errors.rb index ee7a48bd..8cd6b7ec 100644 --- a/lib/better_errors.rb +++ b/lib/better_errors.rb @@ -3,6 +3,7 @@ require "coderay" require "uri" +require "better_errors/version" require "better_errors/code_formatter" require "better_errors/inspectable_value" require "better_errors/error_page" @@ -10,7 +11,6 @@ require "better_errors/raised_exception" require "better_errors/repl" require "better_errors/stack_frame" -require "better_errors/version" module BetterErrors POSSIBLE_EDITOR_PRESETS = [ From 65c562c3da658908191e87d5debe86d877d5fcbe Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 2 Oct 2020 23:28:13 -0400 Subject: [PATCH 159/160] Release 2.8.3 --- lib/better_errors/version.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/better_errors/version.rb b/lib/better_errors/version.rb index e49a5c48..1476281a 100644 --- a/lib/better_errors/version.rb +++ b/lib/better_errors/version.rb @@ -1,3 +1,3 @@ module BetterErrors - VERSION = "2.8.2" + VERSION = "2.8.3" end From 931ffa04cf7153f2d54c30eac798017368447e6e Mon Sep 17 00:00:00 2001 From: Robin Daugherty Date: Fri, 30 Oct 2020 16:39:44 -0400 Subject: [PATCH 160/160] Mention path in text response --- lib/better_errors/templates/text.erb | 7 +++++-- spec/better_errors/middleware_spec.rb | 4 ++-- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/lib/better_errors/templates/text.erb b/lib/better_errors/templates/text.erb index f51f1eed..0a99cc4b 100644 --- a/lib/better_errors/templates/text.erb +++ b/lib/better_errors/templates/text.erb @@ -1,7 +1,10 @@ <%== text_heading("=", "%s at %s" % [exception_type, request_path]) %> -> <%== exception_message %> -<% if backtrace_frames.any? %> +<%== exception_message %> + +> To access an interactive console with this error, point your browser to: /__better_errors + +<% if backtrace_frames.any? -%> <%== text_heading("-", "%s, line %i" % [first_frame.pretty_path, first_frame.line]) %> diff --git a/spec/better_errors/middleware_spec.rb b/spec/better_errors/middleware_spec.rb index 4f5e9bcb..0cdd8216 100644 --- a/spec/better_errors/middleware_spec.rb +++ b/spec/better_errors/middleware_spec.rb @@ -147,8 +147,8 @@ module BetterErrors it "shows the exception as-is" do expect(status).to eq(500) - expect(body).to match(/\n> Second Exception\n/) - expect(body).not_to match(/\n> First Exception\n/) + expect(body).to match(/\nSecond Exception\n/) + expect(body).not_to match(/\nFirst Exception\n/) end end