Skip to content
This repository was archived by the owner on Aug 8, 2023. It is now read-only.

Commit 78dd55e

Browse files
committed
Add v2.6.2
1 parent 929660c commit 78dd55e

12 files changed

+103
-38
lines changed

core/built/assets/ghost-dark-09a4ad1ce73f34d44589e5e40313318a.css core/built/assets/ghost-dark-2503e67d91cc80999d1ac53a90bf2eb1.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/built/assets/ghost.min-6ec029bbb20e60039f2218cb1dfbda7c.css core/built/assets/ghost.min-1b13c62f5c1d56fd1d1f0ebc951a3d26.css

+1-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/built/assets/ghost.min-e2b6c53a249cb6882852db3ebfc9829b.js core/built/assets/ghost.min-2faf9f5c52906b91112aade6dd90ca58.js

+6-7
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/built/assets/vendor.min-4267009638f156224c1b0468b72f2410.js core/built/assets/vendor.min-a282d655f9b0929434826d02f2158e38.js

+13-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

core/server/api/v2/settings.js

+37-6
Original file line numberDiff line numberDiff line change
@@ -126,18 +126,49 @@ module.exports = {
126126
.then(() => {
127127
const siteApp = require('../../web/site/app');
128128

129-
try {
130-
return siteApp.reload();
131-
} catch (err) {
132-
// bring back backup, otherwise your Ghost blog is broken
129+
const bringBackValidRoutes = () => {
130+
urlService.resetGenerators({releaseResourcesOnly: true});
131+
133132
return fs.copy(backupRoutesPath, `${config.getContentPath('settings')}/routes.yaml`)
134133
.then(() => {
135134
return siteApp.reload();
136-
})
137-
.then(() => {
135+
});
136+
};
137+
138+
try {
139+
siteApp.reload();
140+
} catch (err) {
141+
return bringBackValidRoutes()
142+
.finally(() => {
138143
throw err;
139144
});
140145
}
146+
147+
let tries = 0;
148+
149+
function isBlogRunning() {
150+
return Promise.delay(1000)
151+
.then(() => {
152+
if (!urlService.hasFinished()) {
153+
if (tries > 5) {
154+
throw new common.errors.InternalServerError({
155+
message: 'Could not load routes.yaml file.'
156+
});
157+
}
158+
159+
tries = tries + 1;
160+
return isBlogRunning();
161+
}
162+
});
163+
}
164+
165+
return isBlogRunning()
166+
.catch((err) => {
167+
return bringBackValidRoutes()
168+
.finally(() => {
169+
throw err;
170+
});
171+
});
141172
});
142173
}
143174
},

core/server/services/url/Queue.js

+1-2
Original file line numberDiff line numberDiff line change
@@ -126,8 +126,7 @@ class Queue extends EventEmitter {
126126
err: err
127127
}));
128128

129-
// just try again
130-
this.run(options);
129+
// @NOTE: The url service stays in maintenance mode. There is nothing we can do if an url generator fails.
131130
}
132131
} else {
133132
// CASE 1: zero tolerance, kill run fn

core/server/services/url/utils.js

+14-2
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ const moment = require('moment-timezone'),
66
cheerio = require('cheerio'),
77
config = require('../../config'),
88
settingsCache = require('../settings/cache'),
9-
BASE_API_PATH = '/ghost/api/',
9+
BASE_API_PATH = '/ghost/api',
1010
STATIC_IMAGE_URL_PREFIX = 'content/images';
1111

1212
/**
@@ -16,6 +16,17 @@ const moment = require('moment-timezone'),
1616
* @return {string} API Path for version
1717
*/
1818
function getApiPath(options) {
19+
const versionPath = getVersionPath(options);
20+
return `${BASE_API_PATH}${versionPath}`;
21+
}
22+
23+
/**
24+
* Returns path containing only the path for the specific version asked or deprecated by default
25+
* @param {Object} options {version} for which to get the path(stable, actice, deprecated),
26+
* {type} admin|content: defaults to {version: deprecated, type: content}
27+
* @return {string} API version path
28+
*/
29+
function getVersionPath(options) {
1930
const apiVersions = config.get('api:versions');
2031
let requestedVersion = options.version || 'deprecated';
2132
let requestedVersionType = options.type || 'content';
@@ -24,7 +35,7 @@ function getApiPath(options) {
2435
versionData = apiVersions[versionData];
2536
}
2637
let versionPath = versionData[requestedVersionType];
27-
return `${BASE_API_PATH}${versionPath}/`;
38+
return `/${versionPath}/`;
2839
}
2940

3041
/**
@@ -466,6 +477,7 @@ module.exports.redirect301 = redirect301;
466477
module.exports.createUrl = createUrl;
467478
module.exports.deduplicateDoubleSlashes = deduplicateDoubleSlashes;
468479
module.exports.getApiPath = getApiPath;
480+
module.exports.getVersionPath = getVersionPath;
469481
module.exports.getBlogUrl = getBlogUrl;
470482

471483
/**

core/server/web/admin/views/default-prod.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535

3636
<link rel="stylesheet" href="assets/vendor.min-e71cb5c677f51d517625c8c87005a74a.css">
37-
<link rel="stylesheet" href="assets/ghost.min-6ec029bbb20e60039f2218cb1dfbda7c.css" title="light">
37+
<link rel="stylesheet" href="assets/ghost.min-1b13c62f5c1d56fd1d1f0ebc951a3d26.css" title="light">
3838

3939

4040

@@ -52,8 +52,8 @@
5252
<div id="ember-basic-dropdown-wormhole"></div>
5353

5454

55-
<script src="assets/vendor.min-4267009638f156224c1b0468b72f2410.js"></script>
56-
<script src="assets/ghost.min-e2b6c53a249cb6882852db3ebfc9829b.js"></script>
55+
<script src="assets/vendor.min-a282d655f9b0929434826d02f2158e38.js"></script>
56+
<script src="assets/ghost.min-2faf9f5c52906b91112aade6dd90ca58.js"></script>
5757

5858
</body>
5959
</html>

core/server/web/admin/views/default.html

+3-3
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@
3434

3535

3636
<link rel="stylesheet" href="assets/vendor.min-e71cb5c677f51d517625c8c87005a74a.css">
37-
<link rel="stylesheet" href="assets/ghost.min-6ec029bbb20e60039f2218cb1dfbda7c.css" title="light">
37+
<link rel="stylesheet" href="assets/ghost.min-1b13c62f5c1d56fd1d1f0ebc951a3d26.css" title="light">
3838

3939

4040

@@ -52,8 +52,8 @@
5252
<div id="ember-basic-dropdown-wormhole"></div>
5353

5454

55-
<script src="assets/vendor.min-4267009638f156224c1b0468b72f2410.js"></script>
56-
<script src="assets/ghost.min-e2b6c53a249cb6882852db3ebfc9829b.js"></script>
55+
<script src="assets/vendor.min-a282d655f9b0929434826d02f2158e38.js"></script>
56+
<script src="assets/ghost.min-2faf9f5c52906b91112aade6dd90ca58.js"></script>
5757

5858
</body>
5959
</html>

core/server/web/api/index.js

+21
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
const debug = require('ghost-ignition').debug('web:api:default:app');
2+
const express = require('express');
3+
const urlUtils = require('../../services/url/utils');
4+
const errorHandler = require('../shared/middlewares/error-handler');
5+
6+
module.exports = function setupApiApp() {
7+
debug('Parent API setup start');
8+
const apiApp = express();
9+
10+
// Mount different API versions
11+
apiApp.use(urlUtils.getVersionPath({version: 'v0.1'}), require('./v0.1/app')());
12+
apiApp.use(urlUtils.getVersionPath({version: 'v2', type: 'content'}), require('./v2/content/app')());
13+
apiApp.use(urlUtils.getVersionPath({version: 'v2', type: 'admin'}), require('./v2/admin/app')());
14+
15+
// Error handling for requests to non-existent API versions
16+
apiApp.use(errorHandler.resourceNotFound);
17+
apiApp.use(errorHandler.handleJSONResponse);
18+
19+
debug('Parent API setup end');
20+
return apiApp;
21+
};

core/server/web/parent-app.js

+2-4
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ const config = require('../config');
44
const compress = require('compression');
55
const netjet = require('netjet');
66
const shared = require('./shared');
7-
const urlUtils = require('../services/url/utils');
87

98
module.exports = function setupParentApp(options = {}) {
109
debug('ParentApp setup start');
@@ -36,11 +35,10 @@ module.exports = function setupParentApp(options = {}) {
3635
parentApp.use(shared.middlewares.ghostLocals);
3736

3837
// Mount the apps on the parentApp
38+
3939
// API
4040
// @TODO: finish refactoring the API app
41-
parentApp.use(urlUtils.getApiPath({version: 'v0.1'}), require('./api/v0.1/app')());
42-
parentApp.use(urlUtils.getApiPath({version: 'v2', type: 'content'}), require('./api/v2/content/app')());
43-
parentApp.use(urlUtils.getApiPath({version: 'v2', type: 'admin'}), require('./api/v2/admin/app')());
41+
parentApp.use('/ghost/api', require('./api')());
4442

4543
// ADMIN
4644
parentApp.use('/ghost', require('./admin')());

package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "ghost",
3-
"version": "2.6.1",
3+
"version": "2.6.2",
44
"description": "The professional publishing platform",
55
"author": "Ghost Foundation",
66
"homepage": "https://ghost.org",

0 commit comments

Comments
 (0)