require "rubygems" require "openssl" # let this here or Sequel causes Thin to crash later on... require "yaml" require "yajl" require "logger" require "haml" require "sequel" require "sequel/extensions/blank" require "sequel/extensions/inflector" require "sinatra/base" require "sinatra/async" require "sinatra/respond_to" require "rack-flash" require "string_cleaner" require "lib/rack_fix" # until rack escape UTF-8 as expected module <%= name %> class App < Sinatra::Base # load environment config def self.config @@config ||= begin filename = File.join(File.dirname(__FILE__), "config", "#{environment}.yml") File.exists?(filename) ? YAML.load_file(filename) : {:db => {:uri => "sqlite:/"}} end end configure do set :root, File.dirname(__FILE__) set :static, true set :public, File.join(root, "public") set :views, File.join(root, "views") enable :logging enable :sessions # setup logger and connect to db FileUtils.mkdir_p File.join(root, "log") logger = Logger.new(File.join(root, "log", "#{environment}.log")) logger.level = production? ? Logger::ERROR : Logger::DEBUG Sequel.connect(config[:db][:uri], :loggers => [logger]) # load models Dir.glob(File.join(root, "models", "*.rb")).each do |m| require m end # load helpers helpers do alias_method :h, :escape_html def config <%= name %>::App.config end Dir.glob(File.join(root, "helpers", "*.rb")).each do |h| require h module_name = "#{File.basename(h, ".rb").camelize}Helper" include <%= name %>.const_get(module_name) if <%= name %>.const_defined?(module_name) end end use Rack::Session::Cookie use Rack::Flash end # load fake controllers Dir.glob(File.join(root, "controllers", "*.rb")).each do |c| require c end end end # define default port if launched directly via "ruby app.rb" if $0 == __FILE__ <%= name %>::App.run! :host => "localhost", :port => 4567 end