diff --git a/lib/server/index.js b/lib/server/index.js index 6289083fee..d52b979bd9 100644 --- a/lib/server/index.js +++ b/lib/server/index.js @@ -1,5 +1,5 @@ // Generated by CoffeeScript 1.3.3 -var MongoStore, ONE_YEAR, app, derby, exports, express, expressApp, gzippo, http, path, publicPath, racer, root, server, serverError; +var ONE_YEAR, app, derby, express, expressApp, gzippo, http, path, publicPath, racer, root, server, serverError, store; http = require('http'); @@ -9,8 +9,6 @@ express = require('express'); gzippo = require('gzippo'); -MongoStore = require('connect-mongo')(express); - derby = require('derby'); app = require('../app'); @@ -21,37 +19,39 @@ racer = require('derby/node_modules/racer'); racer.set('transports', ['xhr-polling']); +racer.set('bundle timeout', 5000); + +expressApp = express(); + +server = http.createServer(expressApp); + +module.exports = server; + +derby.use(require('racer-db-mongo')); + +store = derby.createStore({ + db: { + type: 'Mongo', + uri: process.env.NODE_DB_URI + }, + listen: server +}); + ONE_YEAR = 1000 * 60 * 60 * 24 * 365; root = path.dirname(path.dirname(__dirname)); publicPath = path.join(root, 'public'); -(expressApp = express()).use(express.favicon()).use(gzippo.staticGzip(publicPath, { +expressApp.use(express.favicon()).use(gzippo.staticGzip(publicPath, { maxAge: ONE_YEAR -})).use(express.compress()).use(express.cookieParser('secret_sauce')).use(express.session({ - secret: 'secret_sauce', +})).use(express.compress()).use(express.cookieParser()).use(store.sessionMiddleware({ + secret: process.env.SESSION_SECRET || 'YOUR SECRET HERE', cookie: { maxAge: ONE_YEAR - }, - store: new MongoStore({ - url: process.env.NODE_DB_URI, - collection: 'express-sessions' - }) -})).use(app.session()).use(app.router()).use(expressApp.router).use(serverError(root)); - -exports = module.exports = server = http.createServer(expressApp); + } +})).use(store.modelMiddleware()).use(app.router()).use(expressApp.router).use(serverError(root)); expressApp.all('*', function(req) { throw "404: " + req.url; }); - -derby.use(require('racer-db-mongo')); - -exports.store = app.createStore({ - listen: server, - db: { - type: 'Mongo', - uri: process.env.NODE_DB_URI - } -}); diff --git a/package.json b/package.json index cb23c9aa09..2c3e2d8bda 100644 --- a/package.json +++ b/package.json @@ -1,13 +1,13 @@ { "name": "habitrpg", "description": "A habit tracker app which treats your goals like a Role Playing Game.", - "version": "0.0.0-52", + "version": "0.0.0-53", "main": "./server.js", "dependencies": { "derby": "*", "express": "3.0.0beta4", "gzippo": ">=0.1.4", - "racer-db-mongo": "*", + "racer-db-mongo": ">=0.3.11", "connect-mongo": ">=0.1.9", "derby-ui-boot": "*", "guid": "*" diff --git a/src/server/index.coffee b/src/server/index.coffee index 181fb089ac..04f2c208e1 100644 --- a/src/server/index.coffee +++ b/src/server/index.coffee @@ -2,26 +2,36 @@ http = require 'http' path = require 'path' express = require 'express' gzippo = require 'gzippo' -MongoStore = require('connect-mongo')(express) derby = require 'derby' app = require '../app' serverError = require './serverError' + +## RACER CONFIGURATION ## + racer = require 'derby/node_modules/racer' - racer.set('transports', ['xhr-polling']) - +racer.set('bundle timeout', 5000) ## SERVER CONFIGURATION ## +expressApp = express() +server = http.createServer expressApp +module.exports = server + +derby.use(require 'racer-db-mongo') +store = derby.createStore + db: {type: 'Mongo', uri: process.env.NODE_DB_URI} + listen: server +#require('./queries')(store) + ONE_YEAR = 1000 * 60 * 60 * 24 * 365 root = path.dirname path.dirname __dirname publicPath = path.join root, 'public' -(expressApp = express()) +expressApp .use(express.favicon()) # Gzip static files and serve from memory .use(gzippo.staticGzip publicPath, maxAge: ONE_YEAR) - # Gzip dynamically rendered content .use(express.compress()) @@ -29,37 +39,27 @@ publicPath = path.join root, 'public' # .use(express.bodyParser()) # .use(express.methodOverride()) - # Derby session middleware creates req.model and subscribes to _session - .use(express.cookieParser 'secret_sauce') - .use(express.session - secret: 'secret_sauce' + # Uncomment and supply secret to add Derby session handling + # Derby session middleware creates req.session and socket.io sessions + .use(express.cookieParser()) + .use(store.sessionMiddleware + secret: process.env.SESSION_SECRET || 'YOUR SECRET HERE' cookie: {maxAge: ONE_YEAR} - store: new MongoStore(url: process.env.NODE_DB_URI, collection: 'express-sessions') ) - .use(app.session()) - # The router method creates an express middleware from the app's routes + # Adds req.getModel method + .use(store.modelMiddleware()) + # Creates an express middleware from the app's routes .use(app.router()) .use(expressApp.router) .use(serverError root) -exports = module.exports = server = http.createServer expressApp - ## SERVER ONLY ROUTES ## expressApp.all '*', (req) -> throw "404: #{req.url}" - -## STORE SETUP ## - -derby.use(require 'racer-db-mongo') - -exports.store = app.createStore - listen: server - db: {type: 'Mongo', uri: process.env.NODE_DB_URI} - # Would implement cron here, using node-cron & https://github.com/codeparty/derby/issues/99#issuecomment-6596460 # But it's not working # cronJob = require("cron").CronJob