Skip to content

Commit d00701c

Browse files
committed
set previousRevisionKey before activating a new revision
1 parent 69a0449 commit d00701c

File tree

4 files changed

+36
-7
lines changed

4 files changed

+36
-7
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ For detailed information on what plugin hooks are and how they work, please refe
5656

5757
- `configure`
5858
- `upload`
59+
- `willActivate`
5960
- `activate`
6061
- `didDeploy`
6162

index.js

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,19 @@ module.exports = {
7777
.catch(this._errorMessage.bind(this));
7878
},
7979

80+
willActivate: function(/* context */) {
81+
var redisDeployClient = this.readConfig('redisDeployClient');
82+
var keyPrefix = this.readConfig('keyPrefix');
83+
84+
var revisionKey = redisDeployClient.activeRevision(keyPrefix);
85+
86+
return {
87+
revisionData: {
88+
previousRevisionKey: revisionKey
89+
}
90+
};
91+
},
92+
8093
activate: function(/* context */) {
8194
var redisDeployClient = this.readConfig('redisDeployClient');
8295
var revisionKey = this.readConfig('revisionKey');

lib/redis.js

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ module.exports = CoreObject.extend({
6464
fetchRevisions: function(keyPrefix) {
6565
return Promise.hash({
6666
revisions: this._listRevisions(keyPrefix),
67-
current: this._activeRevision(keyPrefix)
67+
current: this.activeRevision(keyPrefix)
6868
}).then(function(results) {
6969
return results.revisions.map(function(revision) {
7070
return {
@@ -75,6 +75,11 @@ module.exports = CoreObject.extend({
7575
});
7676
},
7777

78+
activeRevision: function(keyPrefix) {
79+
var currentKey = keyPrefix + ':current';
80+
return this._client.get(currentKey);
81+
},
82+
7883
_listRevisions: function(keyPrefix) {
7984
var client = this._client;
8085
var listKey = keyPrefix + ':revisions';
@@ -115,18 +120,13 @@ module.exports = CoreObject.extend({
115120
return client.zadd(listKey, score, revisionKey);
116121
},
117122

118-
_activeRevision: function(keyPrefix) {
119-
var currentKey = keyPrefix + ':current';
120-
return this._client.get(currentKey);
121-
},
122-
123123
_trimRecentUploadsList: function(keyPrefix, maxEntries) {
124124
var client = this._client;
125125
var listKey = keyPrefix + ':revisions';
126126

127127
return Promise.hash({
128128
revisionsToBeRemoved: client.zrange(listKey, 0, -(maxEntries + 1)),
129-
current: this._activeRevision(keyPrefix)
129+
current: this.activeRevision(keyPrefix)
130130
}).then(function(results) {
131131
var revisions = results.revisionsToBeRemoved;
132132
var current = results.current;

tests/unit/lib/redis-nodetest.js

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -171,6 +171,21 @@ describe('redis', function() {
171171
});
172172
});
173173

174+
describe('#willActivate', function() {
175+
it('sets the previous revision to the current revision', function() {
176+
var currentRevision = 'q';
177+
178+
var redis = new Redis({}, new FakeRedis(FakeClient.extend({
179+
get: function() {
180+
return currentRevision;
181+
}
182+
})));
183+
184+
var result = redis.activeRevision('key-prefix');
185+
assert.equal(result, 'q');
186+
});
187+
}),
188+
174189
describe('#activate', function() {
175190
it('rejects if the revisionKey doesn\'t exist in list of uploaded revisions', function() {
176191
var redis = new Redis({}, new FakeRedis(FakeClient.extend({

0 commit comments

Comments
 (0)