Files
node/node_modules/derby-examples/todos/src/server/index.coffee
2012-05-30 23:00:06 -04:00

55 lines
1.3 KiB
CoffeeScript

http = require 'http'
path = require 'path'
express = require 'express'
gzippo = require 'gzippo'
derby = require 'derby'
todos = require '../todos'
serverError = require './serverError'
## SERVER CONFIGURATION ##
ONE_YEAR = 1000 * 60 * 60 * 24 * 365
root = path.dirname path.dirname __dirname
publicPath = path.join root, 'public'
(expressApp = express())
.use(express.favicon())
# Gzip static files and serve from memory
.use(gzippo.staticGzip publicPath, maxAge: ONE_YEAR)
# Gzip dynamically rendered content
.use(express.compress())
# Uncomment to add form data parsing support
# .use(express.bodyParser())
# .use(express.methodOverride())
# Uncomment and supply secret to add Derby session handling
# Derby session middleware creates req.model and subscribes to _session
# .use(express.cookieParser 'secret_sauce')
# .use(express.session cookie: {maxAge: ONE_YEAR})
# .use(todos.session())
# The router method creates an express middleware from the app's routes
.use(todos.router())
.use(expressApp.router)
.use(serverError root)
module.exports = server = http.createServer expressApp
## SERVER ONLY ROUTES ##
expressApp.all '*', (req) ->
throw "404: #{req.url}"
## STORE SETUP ##
derby.use(require 'racer-db-mongo')
todos.createStore
listen: server
db: {type: 'Mongo', uri: 'mongodb://localhost/derby-todos'}