mirror of
https://github.com/TryGhost/Ghost.git
synced 2024-12-01 13:54:35 +03:00
0b79abf5b2
Background: - Ghosts existing boot process is split across multiple files, has affordances for outdated ways of running Ghost and is generally non-linear making it nigh-impossible to follow - The web of dependencies that are loaded on boot are also impossible to unpick, which makes it really hard to decouple Ghost - With 4.0 we want to introduce a new, linear, simpler, clearer way to boot up Ghost to unlock decoupling Ghost into much smaller pieces This commit: - adds a new ghost.js file which switches between boot mode with `node index` or `node index old` so that if we find bugs we can work around them this week - Note: the old boot process will go away very soon, but ghost.js will remain as the interface between the command to start Ghost and the application code - reworks the database migration process into a standalone utility, so that the DB is handled as one simple step of the boot process, decoupled from everything else - is missing tests for this new db utility - leaves a lot of work to do around loading core code, services, express apps in a sensible order, as work to fix this would start to break the old boot process - doesn't use the new maintenance app because we aren't restarting the server here, instead we have the concept of a "core app" that starts in maintenance mode - need to think about how apps will be decoupled in the near future
23 lines
692 B
JavaScript
23 lines
692 B
JavaScript
const express = require('./shared/express');
|
|
const rootApp = express('root');
|
|
|
|
const fs = require('fs');
|
|
const path = require('path');
|
|
|
|
// We never want middleware functions to be anonymous
|
|
const maintenanceMiddleware = (req, res, next) => {
|
|
if (!req.app.get('maintenance')) {
|
|
return next();
|
|
}
|
|
res.set({
|
|
'Cache-Control': 'no-cache, private, no-store, must-revalidate, max-stale=0, post-check=0, pre-check=0'
|
|
});
|
|
res.writeHead(503, {'content-type': 'text/html'});
|
|
fs.createReadStream(path.resolve(__dirname, './server/views/maintenance.html')).pipe(res);
|
|
};
|
|
|
|
rootApp.enable('maintenance');
|
|
rootApp.use(maintenanceMiddleware);
|
|
|
|
module.exports = rootApp;
|