From: Blake Mizerany Date: Fri, 30 Nov 2007 02:35:06 +0000 (-0800) Subject: * Default error messages X-Git-Url: https://repo.or.cz/w/sinatra.git/commitdiff_plain/9ee50b308247b18326111b81272944c5c7ce2090 * Default error messages * Use SINATRA_ENV var if set --- diff --git a/Rakefile b/Rakefile index adbf2fd..0011b2f 100644 --- a/Rakefile +++ b/Rakefile @@ -4,5 +4,6 @@ require 'rake/testtask' task :default => :test Rake::TestTask.new do |t| + ENV['SINATRA_ENV'] = 'test' t.pattern = "test/*_test.rb" end diff --git a/images/404.png b/images/404.png new file mode 100644 index 0000000..902110e Binary files /dev/null and b/images/404.png differ diff --git a/images/500.png b/images/500.png new file mode 100644 index 0000000..57c84c3 Binary files /dev/null and b/images/500.png differ diff --git a/lib/sinatra.rb b/lib/sinatra.rb index 9bb99a6..8585118 100644 --- a/lib/sinatra.rb +++ b/lib/sinatra.rb @@ -64,7 +64,7 @@ module Sinatra class Event - URI_CHAR = '[^/?:,&#]'.freeze unless defined?(URI_CHAR) + URI_CHAR = '[^/?:,&#\.]'.freeze unless defined?(URI_CHAR) PARAM = /:(#{URI_CHAR}+)/.freeze unless defined?(PARAM) attr_reader :path, :block, :param_keys, :pattern @@ -328,6 +328,11 @@ def layout(name = :layout, &b) Sinatra.application.define_layout(name, &b) end +def configures(*envs, &b) + yield if envs.include?(Sinatra.application.options.env) || + envs.empty? +end + ### Misc Core Extensions module Kernel @@ -445,3 +450,74 @@ at_exit do raise $! if $! Sinatra.run if Sinatra.application.options.run end + +ENV['SINATRA_ENV'] = 'test' if $0 =~ /_test\.rb$/ +Sinatra::Application.default_options.merge!( + :env => (ENV['SINATRA_ENV'] || 'development').to_sym +) + +configures :development do + + get '/sinatra_custom_images/:image.png' do + File.read(File.dirname(__FILE__) + "/../images/#{params[:image]}.png") + end + + error 404 do + %Q( + + +

Sinatra doesn't know this diddy.

+ + + + ) + end + + error 500 do + @error = request.env['sinatra.error'] + %Q( + + + +
+ +
+

#{@error.message}

+
#{@error.backtrace.join("\n")}
+
+ + + ) + end + +end