# encoding: utf-8 require 'haml' require 'i18n' require 'i18n/backend/fallbacks' require 'rack/contrib/locale' require 'sprockets-helpers' module LocalPac module App class ApplicationController < Sinatra::Base set :root, File.expand_path('../../', __FILE__) set :haml, :format => :html5 def local_storage return @local_storage if @local_storage if settings.respond_to? :local_storage @local_storage = settings.local_storage else @local_storage = LocalPac::LocalStorage.new end end use Rack::Deflater use Rack::Locale not_found do I18n.t('errors.not_found', name: env['sinatra.error'].message) end error do I18n.t('errors.default', message: env['sinatra.error'].message) end error Exceptions::GivenUrlInvalid do @error_summary = I18n.t('errors.invalid_url.summary') @error_details = I18n.t('errors.invalid_url.details', url: env['sinatra.error'].message) haml :error, layout: :application end configure :profile do require 'ruby-prof' use Rack::RubyProf, files: '/tmp/profiles' use Rack::CommonLogger, LocalPac::AccessLogger.new(LocalPac.config.access_log) set :raise_errors, false set :local_storage, LocalPac::LocalStorage.new end configure :production do use Rack::CommonLogger, LocalPac::AccessLogger.new(LocalPac.config.access_log) set :raise_errors, false set :local_storage, LocalPac::LocalStorage.new end configure :development do set :raise_errors, true end configure :test do use Rack::CommonLogger, LocalPac::NullAccessLogger.new set :raise_errors, true end configure do mime_type :proxy_pac_file, 'application/x-ns-proxy-autoconfig' I18n::Backend::Simple.send(:include, I18n::Backend::Fallbacks) I18n.load_path = Dir[File.join(settings.root, 'locales', '*.yml')] I18n.backend.load_translations I18n.enforce_available_locales = true end helpers do include Sprockets::Helpers def h(text) Rack::Utils.escape_html(text) end def t(*args) I18n.t(*args) end end end end end