forked from linnovate/mean
-
Notifications
You must be signed in to change notification settings - Fork 0
/
server.coffee
71 lines (56 loc) · 1.74 KB
/
server.coffee
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
"use strict"
###
Module dependencies.
###
express = require "express"
fs = require "fs"
passport = require "passport"
logger = require "mean-logger"
###
Main application entry file.
Please note that the order of loading is important.
###
# Load configurations
# Set the node enviornment variable if not set before
process.env.NODE_ENV = process.env.NODE_ENV or "development"
# Initializing system variables
config = require "./config/config"
mongoose = require "mongoose"
# Bootstrap db connection
db = mongoose.connect config.db
# Bootstrap models
models_path = __dirname + "/app/models"
walk = (path) ->
fs.readdirSync(path).forEach (file) ->
newPath = path + "/" + file
stat = fs.statSync(newPath)
if stat.isFile()
require newPath if /(.*)\.(js$)/.test(file)
else walk newPath if stat.isDirectory()
walk models_path
# Bootstrap passport config
require("./config/passport") passport
app = express()
# Express settings
require("./config/express") app, passport, db
# Bootstrap routes
routes_path = __dirname + "/app/routes"
walk = (path) ->
fs.readdirSync(path).forEach (file) ->
newPath = path + "/" + file
stat = fs.statSync(newPath)
if stat.isFile()
require(newPath) app, passport if /(.*)\.(js$|coffee$)/.test(file)
# We skip the app/routes/middlewares directory as it is meant to be
# used and shared by routes as further middlewares and is not a
# route by itself
else walk newPath if stat.isDirectory() and file isnt "middlewares"
walk routes_path
# Start the app by listening on <port>
port = process.env.PORT or config.port
app.listen port
console.log "Express app started on port " + port
# Initializing logger
logger.init app, passport, mongoose
# Expose app
exports = module.exports = app