diff --git a/lib/sinatra/base.rb b/lib/sinatra/base.rb index aef747e794..1d9f3be8c9 100644 --- a/lib/sinatra/base.rb +++ b/lib/sinatra/base.rb @@ -1743,29 +1743,21 @@ def cleaned_caller(keep = 3) end end - # Fixes encoding issues by - # * defaulting to UTF-8 - # * casting params to Encoding.default_external - # - # The latter might not be necessary if Rack handles it one day. - # Keep an eye on Rack's LH #100. - def force_encoding(*args) settings.force_encoding(*args) end - if defined? Encoding - def self.force_encoding(data, encoding = default_encoding) - return if data == settings || data.is_a?(Tempfile) - if data.respond_to? :force_encoding - data.force_encoding(encoding).encode! - elsif data.respond_to? :each_value - data.each_value { |v| force_encoding(v, encoding) } - elsif data.respond_to? :each - data.each { |v| force_encoding(v, encoding) } - end - data + # Fixes encoding issues by defaulting to UTF-8 + def self.force_encoding(data, encoding = default_encoding) + return if data == settings || data.is_a?(Tempfile) + if data.respond_to? :force_encoding + data.force_encoding(encoding).encode! + elsif data.respond_to? :each_value + data.each_value { |v| force_encoding(v, encoding) } + elsif data.respond_to? :each + data.each { |v| force_encoding(v, encoding) } end - else - def self.force_encoding(data, *) data end + data end + def force_encoding(*args) settings.force_encoding(*args) end + reset! set :environment, (ENV['APP_ENV'] || ENV['RACK_ENV'] || :development).to_sym