Skip to content

Commit 5eab793

Browse files
committed
minor fixes, tutorial:remote:update task
1 parent b549f48 commit 5eab793

6 files changed

Lines changed: 100 additions & 2 deletions

File tree

Install.md

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,13 @@ gulp config:nginx --prefix /opt/local/etc/nginx --root /js/javascript-nodejs --e
6464
Если уже есть nginx, то можно без `--clear`. Тогда команда только скопирует файлы из директории nginx (с минимальной шаблонизацией) в указанную директорию.
6565
Основные конфиги будут перезаписаны, но в `sites-enabled` останутся и будут подключены и другие сайты.
6666

67+
Также рекомендуется в `/etc/hosts` добавить строку:
68+
```
69+
127.0.0.1 javascript.in
70+
```
71+
72+
Такое имя хоста стоит в конфигурации Nginx.
73+
6774
## 7. `npm install`
6875

6976
В директории, в которую клонировали, запустите:
@@ -101,6 +108,10 @@ gulp tutorial:import --root /js/javascript-tutorial
101108

102109
Это поднимет сразу и сайт и механизмы автосборки стилей-скриптов и livereload.
103110

111+
Обратите внимание: ходить на сайт нужно через Nginx (обычно порт 80), не напрямую в Node.JS (не будет статики).
112+
113+
Если в `/etc/hosts` есть строка `127.0.0.1 javascript.in`, то адрес будет http://javascript.in/
114+
104115
# TroubleShooting
105116

106117
Если что-то не работает -- [пишите issue](https://github.com/iliakan/javascript-nodejs/issues/new).

gulpfile.js

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -146,6 +146,9 @@ gulp.task('dev', function(callback) {
146146
});
147147

148148
gulp.task('tutorial:import', ['cache:clean'], lazyRequireTask('tutorial/tasks/tutorialImport'));
149+
150+
gulp.task('tutorial:remote:update', lazyRequireTask('tutorial/tasks/remoteUpdate'));
151+
149152
gulp.task('figures:import', lazyRequireTask('tutorial/tasks/figuresImport'));
150153

151154
gulp.task('tutorial:kill:content', ['cache:clean'], lazyRequireTask('tutorial/tasks/killContent'));
Lines changed: 80 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,80 @@
1+
/**
2+
* Copy local collections to remove mongo without drop
3+
* (drop breaks elastic)
4+
*/
5+
6+
var co = require('co');
7+
var fs = require('fs');
8+
var path = require('path');
9+
var log = require('log')();
10+
var del = require('del');
11+
var gutil = require('gulp-util');
12+
var execSync = require('child_process').execSync;
13+
14+
module.exports = function(options) {
15+
16+
return function() {
17+
18+
var args = require('yargs')
19+
.usage("Path to host is required.")
20+
.demand(['host'])
21+
.argv;
22+
23+
var collections = ['tasks', 'plunks', 'articles', 'references'];
24+
25+
var host = args.host;
26+
return co(function* () {
27+
28+
del.sync('dump');
29+
collections.forEach(function(coll) {
30+
exec('mongodump -d js -c ' + coll);
31+
});
32+
exec('mv dump/js dump/js_sync');
33+
exec('ssh ' + args.host + ' "rm -rf dump"');
34+
35+
// copy/overwrite collections from js_sync to js and then remove non-existing ids
36+
fs.writeFileSync("/tmp/cmd.js", collections.map(function(coll) {
37+
var cmd = "db.getSiblingDB('js_sync').C.copyTo(db.C); \n\
38+
vals = db.getSiblingDB('js_sync').C.find({}, {id:1}).map(function(a){return a._id;}); \n\
39+
db.C.remove({_id: {$nin: vals}})".replace(/C/g, coll);
40+
41+
return cmd;
42+
43+
}).join("\n\n"));
44+
45+
exec('scp -r -C dump ' + host + ':');
46+
exec('ssh ' + host + ' "mongorestore --drop"');
47+
48+
exec('scp /tmp/cmd.js ' + host + ':/tmp/');
49+
exec('ssh ' + host + ' "mongo js /tmp/cmd.js"');
50+
51+
});
52+
};
53+
};
54+
55+
function exec(cmd) {
56+
gutil.log(cmd);
57+
execSync(cmd, {stdio: 'inherit'});
58+
}
59+
60+
/*
61+
#!/bin/bash
62+
63+
64+
rm -rf dump &&
65+
mongodump -d js -c tasks &&
66+
mongodump -d js -c plunks &&
67+
mongodump -d js -c articles &&
68+
mongodump -d js -c references &&
69+
ssh nightly 'rm -rf dump' &&
70+
scp -r -C dump nightly: &&
71+
ssh nightly 'mongorestore --drop ' &&
72+
rsync -rlDv /js/javascript-nodejs/public/ nightly:/js/javascript-nodejs/current/public/ &&
73+
ssh nightly 'cd /js/javascript-nodejs/current/scripts/elastic; bash db' &&
74+
echo "Tutorial updated"
75+
76+
77+
db.getSiblingDB('js_sync').articles.copyTo(db.articles)
78+
vals = db.getSiblingDB('js_sync').articles.find({}, {id:1}).map(function(a){return a._id;})
79+
db.articles.remove({_id: {$nin: vals}})
80+
*/

handlers/tutorial/templates/tutorial.jade

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,9 @@ block content
5050
+e('h3').brick-title
5151
+e('a').brick-title-link(href=folder.url)= folder.title
5252
+e.brick-content!= folder.content
53+
+e('ul')
54+
each child in folder.children
55+
li= child.title
5356

5457
script(src=script("tutorial"))
5558
script tutorial.init();

nginx/ssl.conf

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
11
ssl_session_cache shared:SSL:10m;
22
ssl_session_timeout 5m;
3-
ssl_stapling on;
43
ssl_protocols SSLv3 TLSv1;
54
ssl_certificate cert/cert.pem;
65
ssl_certificate_key cert/cert.key;

scripts/updateRemoteTutorial.sh

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,14 @@
11
#!/bin/bash
2+
3+
24
rm -rf dump &&
35
mongodump -d js -c tasks &&
46
mongodump -d js -c plunks &&
57
mongodump -d js -c articles &&
68
mongodump -d js -c references &&
79
ssh nightly 'rm -rf dump' &&
810
scp -r -C dump nightly: &&
9-
ssh nightly 'mongorestore --drop' &&
11+
ssh nightly 'mongorestore --drop ' &&
1012
rsync -rlDv /js/javascript-nodejs/public/ nightly:/js/javascript-nodejs/current/public/ &&
1113
ssh nightly 'cd /js/javascript-nodejs/current/scripts/elastic; bash db' &&
1214
echo "Tutorial updated"

0 commit comments

Comments
 (0)