rhoconnect 3.0.0.beta1 → 3.0.0.beta3
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +16 -2
- data/Gemfile +14 -5
- data/Gemfile.lock +13 -23
- data/Rakefile +86 -0
- data/bench/bench_runner.rb +5 -4
- data/bench/benchapp/Gemfile +17 -8
- data/bench/blobapp/Gemfile +13 -14
- data/doc/adapters-crm.txt +226 -0
- data/doc/adapters-intro.txt +18 -0
- data/doc/client.txt +29 -2
- data/doc/heroku-addon.txt +54 -0
- data/doc/install.txt +1 -2
- data/doc/migration.txt +18 -6
- data/doc/net-plugin.txt +276 -0
- data/doc/plugin-intro.txt +6 -0
- data/doc/push.txt +1 -1
- data/doc/rails-plugin.txt +116 -0
- data/doc/rest-api.txt +2 -2
- data/doc/settings.txt +59 -0
- data/doc/tutorial.txt +8 -5
- data/generators/rhoconnect.rb +30 -0
- data/generators/templates/application/Gemfile +16 -7
- data/generators/templates/application/gitignore +4 -0
- data/install.sh +74 -106
- data/installer/deb-scripts/LICENSE +75 -0
- data/installer/deb-scripts/install.sh +300 -0
- data/installer/deb-scripts/scripts/rho_connect_install_constants.rb +32 -0
- data/installer/deb-scripts/scripts/rho_connect_install_installers.rb +103 -0
- data/installer/deb-scripts/scripts/rho_connect_install_utilities.rb +110 -0
- data/installer/deb-scripts/scripts/rhoinstaller.rb +55 -0
- data/installer/deb-scripts/utils/README +67 -0
- data/installer/deb-scripts/utils/create_texts.rb +76 -0
- data/installer/deb-scripts/utils/redis_init_script +124 -0
- data/installer/deb-scripts/utils/redis_log_rotate +8 -0
- data/installer/unix-like/install.sh +361 -0
- data/installer/unix-like/post-install.sh +8 -0
- data/installer/unix-like/pre-install.sh +8 -0
- data/installer/unix-like/rho_connect_install_constants.rb +9 -14
- data/installer/unix-like/rho_connect_install_debian.rb +7 -5
- data/installer/unix-like/rho_connect_install_dnd.rb +6 -6
- data/installer/unix-like/rho_connect_install_get_params.rb +1 -1
- data/installer/unix-like/rho_connect_install_installers.rb +39 -38
- data/installer/unix-like/rho_connect_install_utilities.rb +9 -10
- data/installer/unix-like/rho_connect_install_yum.rb +6 -5
- data/installer/unix-like/rhoinstaller.rb +8 -3
- data/installer/utils/create_texts.rb +313 -85
- data/installer/windows/rhosync.nsi +5 -5
- data/lib/rhoconnect/api/application/clientcreate.rb +1 -1
- data/lib/rhoconnect/api/application/clientregister.rb +1 -1
- data/lib/rhoconnect/api/application/clientreset.rb +1 -1
- data/lib/rhoconnect/client.rb +0 -1
- data/lib/rhoconnect/client_sync.rb +1 -0
- data/lib/rhoconnect/console/app/routes/home.rb +1 -1
- data/lib/rhoconnect/console/app/routes/user.rb +8 -3
- data/lib/rhoconnect/console/app/views/adapter.erb +2 -2
- data/lib/rhoconnect/console/app/views/ping.erb +14 -2
- data/lib/rhoconnect/console/app/views/users.erb +8 -1
- data/lib/rhoconnect/jobs/ping_job.rb +11 -3
- data/lib/rhoconnect/model.rb +2 -2
- data/lib/rhoconnect/read_state.rb +2 -0
- data/lib/rhoconnect/server.rb +4 -3
- data/lib/rhoconnect/source.rb +33 -6
- data/lib/rhoconnect/source_adapter.rb +5 -9
- data/lib/rhoconnect/source_sync.rb +11 -5
- data/lib/rhoconnect/store.rb +7 -4
- data/lib/rhoconnect/tasks.rb +3 -3
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect.rb +22 -8
- data/rhoconnect.gemspec +4 -22
- data/spec/api/application/rhoconnect_api_spec.rb +54 -8
- data/spec/api/source/get_source_params_spec.rb +2 -1
- data/spec/api/source/list_sources_spec.rb +3 -3
- data/spec/app_spec.rb +8 -1
- data/spec/apps/rhotestapp/settings/settings.yml +10 -5
- data/spec/apps/rhotestapp/sources/other_adapter.rb +7 -0
- data/spec/client_sync_spec.rb +5 -8
- data/spec/dynamic_adapter_spec.rb +8 -8
- data/spec/generator/generator_spec.rb +4 -2
- data/spec/jobs/ping_job_spec.rb +53 -0
- data/spec/model_spec.rb +2 -2
- data/spec/rhosync_spec.rb +1 -1
- data/spec/server/server_spec.rb +3 -14
- data/spec/source_sync_spec.rb +84 -2
- data/spec/support/shared_examples.rb +2 -2
- data/tasks/redis.rake +2 -2
- metadata +30 -41
- data/spec/api/rhosync_api_spec.rb.orig +0 -606
@@ -1,6 +1,8 @@
|
|
1
|
-
$:.unshift File.expand_path(File.dirname(__FILE__))
|
1
|
+
$:.unshift File.expand_path(File.join(File.dirname(__FILE__),'..','unix-like'))
|
2
2
|
|
3
3
|
require 'optparse'
|
4
|
+
require 'rho_connect_install_constants'
|
5
|
+
require 'fileutils'
|
4
6
|
|
5
7
|
options = {}
|
6
8
|
|
@@ -10,7 +12,7 @@ optparse = OptionParser.new do |opts|
|
|
10
12
|
options[:dist] = dist
|
11
13
|
end #do
|
12
14
|
|
13
|
-
options[:prefix] = '/opt/rhoconnect
|
15
|
+
options[:prefix] = '/opt/rhoconnect'
|
14
16
|
opts.on( '-p', '--prefix RHODIR', 'Specify RHODIR as the prefix directory.' ) do |dir|
|
15
17
|
options[:prefix] = dir
|
16
18
|
end #do
|
@@ -24,6 +26,12 @@ optparse = OptionParser.new do |opts|
|
|
24
26
|
opts.on( '-r', '--rubyVer VERSION', 'Specify VERSION as the verion of ruby that is installed.' ) do |rubyVer|
|
25
27
|
options[:rubyVersion] = rubyVer
|
26
28
|
end #do
|
29
|
+
|
30
|
+
options[:web_server] = "nginx"
|
31
|
+
opts.on('-w', '--web-server Server', ' Specify that you are using web server SERVER') do |server|
|
32
|
+
options[:web_server] = server
|
33
|
+
end #do
|
34
|
+
|
27
35
|
end #do
|
28
36
|
|
29
37
|
optparse.parse!
|
@@ -33,12 +41,15 @@ optparse.parse!
|
|
33
41
|
@redis = options[:redis]
|
34
42
|
@ruby_version = options[:rubyVersion]
|
35
43
|
@profile = (@dist == 'debian') ? '~/.profile' : '~/.bash_profile'
|
44
|
+
@server = options[:web_server]
|
45
|
+
|
46
|
+
def passenger_version
|
47
|
+
(`#{@prefix}/bin/passenger --version`.match /\d+\.\d+\.\d+/)[0]
|
48
|
+
end
|
36
49
|
|
37
50
|
# create_redis_init
|
38
51
|
# Creates the redis initialization file and places it into the correct directory
|
39
52
|
def create_redis_init
|
40
|
-
redisInit="/etc/init.d/redis"
|
41
|
-
|
42
53
|
redis_init_script = <<'_REDIS_INIT_SCRIPT_'
|
43
54
|
#!/usr/bin/env bash
|
44
55
|
### BEGIN INIT INFO
|
@@ -66,8 +77,8 @@ fi
|
|
66
77
|
# Default config variables that have not been set.
|
67
78
|
port="${port:-6379}"
|
68
79
|
prefix="${prefix:-/opt/rhoconnect}"
|
69
|
-
redis="${prefix}bin/redis-server"
|
70
|
-
redis_cli="${prefix}bin/redis-cli"
|
80
|
+
redis="${prefix}/bin/redis-server"
|
81
|
+
redis_cli="${prefix}/bin/redis-cli"
|
71
82
|
pidfile="${pidfile:-/var/run/redis.pid}"
|
72
83
|
config="${config:-/opt/rhoconnect/etc/redis.conf}"
|
73
84
|
user="${user:-root}"
|
@@ -166,10 +177,11 @@ case "$1" in
|
|
166
177
|
esac
|
167
178
|
_REDIS_INIT_SCRIPT_
|
168
179
|
|
180
|
+
redisInit="/etc/init.d/redis"
|
169
181
|
File.open(redisInit, 'w') { |f| f << redis_init_script }
|
182
|
+
|
170
183
|
# Make the init script executable
|
171
184
|
`chmod +x #{redisInit}`
|
172
|
-
|
173
185
|
# Set run levels
|
174
186
|
if @dist == 'debian'
|
175
187
|
`update-rc.d -f redis defaults`
|
@@ -196,6 +208,167 @@ _REDIS_LOGRORATE_CONF_
|
|
196
208
|
File.open('/etc/logrotate.d/redis', 'w') { |f| f << redis_logrotate_conf }
|
197
209
|
end
|
198
210
|
|
211
|
+
#
|
212
|
+
# Nginx stuff ...
|
213
|
+
|
214
|
+
def create_nginx_init
|
215
|
+
nginx_init_script = <<'_NGINX_INIT_SCRIPT_'
|
216
|
+
#!/bin/sh
|
217
|
+
# Author: Ryan Norbauer http://norbauerinc.com
|
218
|
+
# Modified: Geoffrey Grosenbach http://topfunky.com
|
219
|
+
# Modified: Clement NEDELCU
|
220
|
+
# Modified: Alexander Babichev
|
221
|
+
# Reproduced with express authorization from its contributors
|
222
|
+
|
223
|
+
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
|
224
|
+
DESC="nginx daemon"
|
225
|
+
NAME=nginx
|
226
|
+
DAEMON=/opt/nginx/sbin/$NAME
|
227
|
+
SCRIPTNAME=/etc/init.d/$NAME
|
228
|
+
|
229
|
+
# If the daemon file is not found, terminate the script.
|
230
|
+
test -x $DAEMON || exit 0
|
231
|
+
|
232
|
+
d_start() {
|
233
|
+
$DAEMON || echo -n " already running"
|
234
|
+
}
|
235
|
+
|
236
|
+
d_stop() {
|
237
|
+
$DAEMON -s quit || echo -n " not running"
|
238
|
+
}
|
239
|
+
|
240
|
+
d_reload() {
|
241
|
+
$DAEMON -s reload || echo -n " could not reload"
|
242
|
+
}
|
243
|
+
|
244
|
+
case "$1" in
|
245
|
+
start)
|
246
|
+
echo -n "Starting $DESC: $NAME"
|
247
|
+
d_start
|
248
|
+
echo "."
|
249
|
+
;;
|
250
|
+
stop)
|
251
|
+
echo -n "Stopping $DESC: $NAME"
|
252
|
+
d_stop
|
253
|
+
echo "."
|
254
|
+
;;
|
255
|
+
reload)
|
256
|
+
echo -n "Reloading $DESC configuration ... "
|
257
|
+
d_reload
|
258
|
+
echo "reloaded."
|
259
|
+
;;
|
260
|
+
restart)
|
261
|
+
echo -n "Restarting $DESC: $NAME"
|
262
|
+
d_stop
|
263
|
+
# Sleep for two seconds before starting again, this should give the
|
264
|
+
# Nginx daemon some time to perform a graceful stop.
|
265
|
+
sleep 2
|
266
|
+
d_start
|
267
|
+
echo "."
|
268
|
+
;;
|
269
|
+
*)
|
270
|
+
echo "Usage: $SCRIPTNAME {start|stop|restart|reload}" >&2
|
271
|
+
exit 3
|
272
|
+
;;
|
273
|
+
esac
|
274
|
+
|
275
|
+
exit 0
|
276
|
+
_NGINX_INIT_SCRIPT_
|
277
|
+
|
278
|
+
nginx_script = '/etc/init.d/nginx'
|
279
|
+
File.open(nginx_script, 'w') { |f| f << nginx_init_script }
|
280
|
+
# Make the init script executable
|
281
|
+
`chmod +x #{nginx_script}`
|
282
|
+
|
283
|
+
# Set run levels
|
284
|
+
# if @dist == 'debian'
|
285
|
+
# #`update-rc.d -f nginx defaults`
|
286
|
+
# else
|
287
|
+
# #`/sbin/chkconfig nginx on`
|
288
|
+
# end
|
289
|
+
|
290
|
+
end
|
291
|
+
|
292
|
+
def create_nginx_logrotate
|
293
|
+
nginx_logrorate_conf = <<'_NGINX_LOGRORATE_CONF_'
|
294
|
+
/opt/nginx/logs/*log {
|
295
|
+
missingok
|
296
|
+
notifempty
|
297
|
+
rotate 4
|
298
|
+
size 100k
|
299
|
+
delaycompress
|
300
|
+
sharedscripts
|
301
|
+
postrotate
|
302
|
+
test ! -f /opt/nginx/logs/nginx.pid || kill -USR1 `cat /opt/nginx/logs/nginx.pid`
|
303
|
+
endscript
|
304
|
+
}
|
305
|
+
_NGINX_LOGRORATE_CONF_
|
306
|
+
|
307
|
+
File.open('/etc/logrotate.d/nginx', 'w') { |f| f << nginx_logrorate_conf }
|
308
|
+
end
|
309
|
+
|
310
|
+
def create_nginx_conf_files
|
311
|
+
nginx_server_conf = <<'_NGINX_CONF_'
|
312
|
+
user nginx;
|
313
|
+
|
314
|
+
worker_processes 4;
|
315
|
+
|
316
|
+
error_log logs/error.log;
|
317
|
+
pid logs/nginx.pid;
|
318
|
+
|
319
|
+
events {
|
320
|
+
worker_connections 1024;
|
321
|
+
}
|
322
|
+
|
323
|
+
http {
|
324
|
+
include mime.types;
|
325
|
+
default_type application/octet-stream;
|
326
|
+
|
327
|
+
sendfile on;
|
328
|
+
keepalive_timeout 65;
|
329
|
+
#gzip on;
|
330
|
+
|
331
|
+
include /opt/nginx/conf/conf.d/*.conf;
|
332
|
+
}
|
333
|
+
_NGINX_CONF_
|
334
|
+
|
335
|
+
# create 'nginx' user if it does not exist
|
336
|
+
user_nginx = `cat /etc/passwd | cut -d: -f1 | grep nginx`
|
337
|
+
if user_nginx.empty?
|
338
|
+
puts "Creating 'nginx' user ..."
|
339
|
+
if @dist == 'debian'
|
340
|
+
`adduser --system --home /opt/nginx/html --no-create-home --disabled-login --disabled-password --group nginx`
|
341
|
+
else
|
342
|
+
`/usr/sbin/useradd -M -r -s /sbin/nologin -d /opt/nginx/html nginx`
|
343
|
+
end
|
344
|
+
end
|
345
|
+
|
346
|
+
FileUtils.mv("/opt/nginx/conf/nginx.conf", "/opt/nginx/conf/nginx.conf.bak") unless File.exist? "/opt/nginx/conf/nginx.conf.bak"
|
347
|
+
File.open('/opt/nginx/conf/nginx.conf', 'w' ) { |f| f << nginx_server_conf }
|
348
|
+
|
349
|
+
Dir.mkdir "/opt/nginx/conf/conf.d" unless File.exist? "/opt/nginx/conf/conf.d"
|
350
|
+
rho_vhost_conf = <<'_VHOST_CONF_'
|
351
|
+
server {
|
352
|
+
listen 80;
|
353
|
+
server_name www.yourhost.com; # <-- your server domain name!
|
354
|
+
root /opt/nginx/html/rhoapp/public; # <--- be sure to point to 'public' folder of your application!
|
355
|
+
passenger_enabled on;
|
356
|
+
}
|
357
|
+
_VHOST_CONF_
|
358
|
+
File.open('/opt/nginx/conf/conf.d/rhoconnect.conf', 'w' ) { |f| f << rho_vhost_conf }
|
359
|
+
|
360
|
+
passenger_conf = <<_PASSENGER_CONF_
|
361
|
+
passenger_root /opt/rhoconnect/lib/ruby/gems/1.8/gems/passenger-#{passenger_version};
|
362
|
+
passenger_ruby /opt/rhoconnect/bin/ruby;
|
363
|
+
passenger_max_pool_size 20;
|
364
|
+
passenger_min_instances 6;
|
365
|
+
_PASSENGER_CONF_
|
366
|
+
File.open('/opt/nginx/conf/conf.d/passenger.conf', 'w' ) { |f| f << passenger_conf }
|
367
|
+
end
|
368
|
+
|
369
|
+
# End of nginx stuff ...
|
370
|
+
|
371
|
+
|
199
372
|
# generate_common_info
|
200
373
|
# Generates the readme info that is common across all distributions
|
201
374
|
def generate_common_info
|
@@ -207,62 +380,57 @@ To finish this setup, please complete the following...
|
|
207
380
|
1) Add necessary bins to the path(s) of the users who will
|
208
381
|
be using this software. You may also wish to add these items
|
209
382
|
to your #{@profile} to automatically add them upon login.
|
210
|
-
|
211
|
-
|
212
|
-
A) All bins in the main bin deposit:
|
213
|
-
export PATH=#{@prefix}bin:$PATH
|
383
|
+
export PATH=#{@prefix}/bin:$PATH
|
214
384
|
|
215
|
-
|
216
|
-
export PATH=#{@prefix}ruby/1.8/bin:$PATH
|
217
|
-
|
218
|
-
Or if you had other versions of ruby installed previously to running
|
385
|
+
If you had other versions of ruby installed previously to running
|
219
386
|
this installation, you may instead wish to simply create an alias
|
220
|
-
for the newly installed ruby
|
221
|
-
|
222
|
-
Ex:
|
223
|
-
|
224
|
-
alias #{@ruby_version}=#{@prefix}bin/ruby
|
387
|
+
for the newly installed ruby:
|
388
|
+
alias #{@ruby_version}=#{@prefix}/bin/ruby
|
225
389
|
|
226
|
-
|
390
|
+
_README_
|
227
391
|
|
228
|
-
|
392
|
+
if @dist == "yum"
|
393
|
+
rpm_lib = <<_RPM_LIB_
|
394
|
+
Add #{@prefix}/lib to your library path like so:
|
395
|
+
export LD_LIBRARY_PATH=#{@prefix}/lib:$LD_LIBRARY_PATH
|
229
396
|
|
230
|
-
|
397
|
+
Note: You may also want to add this line to #{@profile}
|
231
398
|
|
232
|
-
|
233
|
-
|
399
|
+
_RPM_LIB_
|
400
|
+
# concatenate _RPM_LIB_ onto _README_
|
401
|
+
readme = readme + rpm_lib
|
402
|
+
end #if
|
234
403
|
|
404
|
+
readme_2 = <<_README2_
|
235
405
|
2) Rhoconnect installer configured redis server with the following settings:
|
236
406
|
|
237
|
-
|
238
|
-
|
239
|
-
|
240
|
-
|
407
|
+
A) redis.conf file is located in #{@prefix}/etc/ directory with properties:
|
408
|
+
daemonize yes
|
409
|
+
pidfile /var/run/redis.pid
|
410
|
+
logfile /var/log/redis.log
|
241
411
|
|
242
|
-
|
412
|
+
B) Redis logrotate settings for /var/log/redis.log files defined in '/etc/logrotate.d/redis':
|
243
413
|
|
244
|
-
|
414
|
+
/var/log/redis.log {
|
245
415
|
rotate 3
|
246
416
|
missingok
|
247
417
|
notifempty
|
248
418
|
size 250k
|
249
419
|
create 0644 root root
|
250
420
|
compress
|
251
|
-
|
421
|
+
}
|
252
422
|
|
253
|
-
|
254
|
-
|
255
|
-
|
423
|
+
C) Redis start-up script '/etc/init.d/redis'.
|
424
|
+
You can start/stop redis server by running the following commands:
|
425
|
+
/etc/init.d/redis {start|stop}
|
256
426
|
|
257
427
|
3) Setup rhoconnect application directory
|
258
|
-
|
259
|
-
|
260
|
-
|
261
|
-
|
262
|
-
|
263
|
-
|
264
|
-
|
265
|
-
_README_
|
428
|
+
|
429
|
+
Put your application code in a directory called /var/www/rhoconnect
|
430
|
+
(make sure this is the root of your application directory, i.e. /var/www/rhoconnect/config.ru should exist).
|
431
|
+
|
432
|
+
_README2_
|
433
|
+
readme = readme + readme_2
|
266
434
|
|
267
435
|
readme
|
268
436
|
end #generate_common_info
|
@@ -275,8 +443,8 @@ def create_passenger_load
|
|
275
443
|
end # if
|
276
444
|
|
277
445
|
passenger_load = <<_PASSENGER_LOAD_
|
278
|
-
LoadModule passenger_module /opt/rhoconnect/lib/ruby/gems/1.8/gems/passenger
|
279
|
-
PassengerRoot /opt/rhoconnect/lib/ruby/gems/1.8/gems/passenger
|
446
|
+
LoadModule passenger_module /opt/rhoconnect/lib/ruby/gems/1.8/gems/passenger-#{passenger_version}/ext/apache2/mod_passenger.so
|
447
|
+
PassengerRoot /opt/rhoconnect/lib/ruby/gems/1.8/gems/passenger-#{passenger_version}
|
280
448
|
PassengerRuby /opt/rhoconnect/bin/ruby
|
281
449
|
_PASSENGER_LOAD_
|
282
450
|
|
@@ -291,12 +459,12 @@ def create_apache_vhost
|
|
291
459
|
end
|
292
460
|
vhost = <<_VHOST_
|
293
461
|
<VirtualHost *:80>
|
294
|
-
ServerName
|
295
|
-
DocumentRoot /var/www/
|
462
|
+
ServerName www.yourhost.com
|
463
|
+
DocumentRoot /var/www/rhoapp/public
|
296
464
|
PassengerMaxPoolSize 20
|
297
465
|
PassengerMinInstances 6
|
298
466
|
#...
|
299
|
-
<Directory /var/www/rhoconnect/public
|
467
|
+
<Directory /var/www/rhoconnect/public>
|
300
468
|
AllowOverride all
|
301
469
|
Options -MultiViews
|
302
470
|
</Directory>
|
@@ -306,43 +474,66 @@ _VHOST_
|
|
306
474
|
File.open( vhost_file, 'w' ) { |f| f << vhost }
|
307
475
|
end #create_apache_vhost
|
308
476
|
|
309
|
-
#
|
310
|
-
|
311
|
-
def create_debian_readme
|
477
|
+
# The debian Apache2 specific part of the readme and places it in options[:prefix]
|
478
|
+
def debian_apache_readme
|
312
479
|
readme = <<_README_
|
313
|
-
4)
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
318
|
-
|
319
|
-
|
320
|
-
|
321
|
-
|
322
|
-
|
323
|
-
|
324
|
-
|
325
|
-
|
480
|
+
4) Installer created the following Apache2 configuration files:
|
481
|
+
- rhoconnect application template (/etc/apache2/sites-available/rhoconnect)
|
482
|
+
- passenger module (/etc/apache2/mods-available/passenger.load)
|
483
|
+
|
484
|
+
To complete setup of web server
|
485
|
+
A) Configure virtual host for rhoconnect application:
|
486
|
+
Edit the file /etc/apache2/sites-available/rhoconnect so that it reflects your specifications.
|
487
|
+
|
488
|
+
B) Enable the virtual host:
|
489
|
+
sudo a2ensite rhoconnect
|
490
|
+
|
491
|
+
C) Load the passenger.load module
|
492
|
+
sudo a2enmod passenger
|
493
|
+
|
494
|
+
D) Start server to pick up the changes:
|
495
|
+
sudo /etc/init.d/apache2 start
|
326
496
|
_README_
|
327
497
|
|
328
498
|
readme
|
329
|
-
end
|
330
|
-
|
331
|
-
#
|
332
|
-
|
333
|
-
def create_yum_readme
|
499
|
+
end
|
500
|
+
|
501
|
+
# The non-debian Apache2 specific part of the readme file and places it in options[:prefix]
|
502
|
+
def yum_apache_readme
|
334
503
|
readme = <<_README_
|
335
|
-
4)
|
336
|
-
|
337
|
-
|
338
|
-
|
504
|
+
4) Installer created the following Apache2 configuration files:
|
505
|
+
- rhoconnect application template (/etc/httpd/conf.d/rhoconnect.conf)
|
506
|
+
- passenger module (/etc/httpd/conf.d/passenger.conf)
|
507
|
+
|
508
|
+
To complete setup of web server
|
509
|
+
A) Configure virtual host for rhoconnect application:
|
510
|
+
Edit the file /etc/httpd/conf.d/rhoconnect.conf so that it reflects your specifications.
|
339
511
|
|
340
|
-
|
341
|
-
|
512
|
+
B) As root user start server to pick up the changes:
|
513
|
+
/sbin/service httpd start
|
342
514
|
_README_
|
343
515
|
|
344
516
|
readme
|
345
|
-
end
|
517
|
+
end
|
518
|
+
|
519
|
+
def nginx_readme
|
520
|
+
readme = <<_NGINX_README_
|
521
|
+
4) Installer compiled Nginx web server (/opt/nginx) with the following configuration files:
|
522
|
+
- Nginx start-up script (/etc/init.d/nginx)
|
523
|
+
- Nginx logrotate settings (/etc/logrotate.d/nginx)
|
524
|
+
- Nginx configuration file (/opt/nginx/conf/nginx.conf)
|
525
|
+
- passenger configuration file and virtual host template for rhoconnect application
|
526
|
+
(/opt/nginx/conf/conf.d/passenger.conf and /opt/nginx/conf/conf.d/rhoconnect.conf)
|
527
|
+
|
528
|
+
To complete setup of web server
|
529
|
+
A) Configure virtual host for rhoconnect application:
|
530
|
+
Edit the file /opt/nginx/conf/conf.d/rhoconnect.conf so that it reflects your specifications.
|
531
|
+
|
532
|
+
B) As root user start server to pick up the changes:
|
533
|
+
/etc/init.d/nginx start
|
534
|
+
_NGINX_README_
|
535
|
+
readme
|
536
|
+
end
|
346
537
|
|
347
538
|
def create_texts
|
348
539
|
if @redis
|
@@ -350,17 +541,54 @@ def create_texts
|
|
350
541
|
create_redis_logrotate
|
351
542
|
end
|
352
543
|
|
353
|
-
|
354
|
-
|
544
|
+
if @server == 'nginx'
|
545
|
+
create_nginx_init
|
546
|
+
create_nginx_logrotate
|
547
|
+
create_nginx_conf_files
|
548
|
+
distro_info = nginx_readme
|
549
|
+
else
|
550
|
+
create_passenger_load
|
551
|
+
create_apache_vhost
|
552
|
+
distro_info = (@dist == 'debian') ? debian_apache_readme : yum_apache_readme
|
553
|
+
end
|
355
554
|
|
356
|
-
|
357
|
-
|
358
|
-
|
555
|
+
common_info = generate_common_info
|
556
|
+
readme = common_info + distro_info
|
557
|
+
File.open("#{@prefix}/README", 'w') { |f| f << readme }
|
558
|
+
|
559
|
+
afterwords = <<_IT_SHOULD_BE_DONE_
|
560
|
+
|
561
|
+
Thank you for choosing Rhomobile for your cross-platform app needs!
|
562
|
+
To finish this setup, please complete the following...
|
563
|
+
|
564
|
+
1) Add necessary bins to the path(s) of the users who will
|
565
|
+
be using this software. You may also wish to add these items
|
566
|
+
to your #{@profile} to automatically add them upon login.
|
567
|
+
export PATH=#{@prefix}/bin:$PATH
|
568
|
+
|
569
|
+
_IT_SHOULD_BE_DONE_
|
570
|
+
|
571
|
+
puts afterwords +
|
572
|
+
if @server == 'nginx'
|
573
|
+
server_todo_list = <<_NGINX_TO_DO_
|
574
|
+
2) Complete setup Nginx web server
|
575
|
+
A) Configure virtual host for your rhoconnect application:
|
576
|
+
Edit the file /opt/nginx/conf/conf.d/rhoconnect.conf so that it reflects your specifications.
|
577
|
+
B) As root user start server to pick up the changes:
|
578
|
+
/etc/init.d/nginx start
|
579
|
+
|
580
|
+
_NGINX_TO_DO_
|
581
|
+
else
|
582
|
+
server_todo_list = <<_APACHE2_TO_DO_
|
583
|
+
2) Complete setup of Apache2 web server
|
584
|
+
A) Configure virtual host for your rhoconnect application:
|
585
|
+
Edit the file /etc/httpd/conf.d/rhoconnect.conf so that it reflects your specifications.
|
586
|
+
B) As root user start server to pick up the changes:
|
587
|
+
/sbin/service httpd start
|
588
|
+
|
589
|
+
_APACHE2_TO_DO_
|
590
|
+
end + "For more details see #{@prefix}/README file."
|
359
591
|
|
360
|
-
File.open("#{@prefix}README", 'w') do |f|
|
361
|
-
f << generate_common_info
|
362
|
-
f << distro_info
|
363
|
-
end
|
364
592
|
end #create_texts
|
365
593
|
|
366
594
|
create_texts
|
@@ -99,7 +99,7 @@ section "uninstall"
|
|
99
99
|
Push "PATH"
|
100
100
|
Push "R"
|
101
101
|
Push "HKLM"
|
102
|
-
Push "$INSTDIR\redis-2.2.
|
102
|
+
Push "$INSTDIR\redis-2.2.13"
|
103
103
|
Call un.EnvVarUpdate
|
104
104
|
Pop $R0
|
105
105
|
|
@@ -170,25 +170,25 @@ Section "Redis" redisSection
|
|
170
170
|
|
171
171
|
SetOutPath $INSTDIR
|
172
172
|
|
173
|
-
File /r "redis-2.2.
|
173
|
+
File /r "redis-2.2.13"
|
174
174
|
|
175
175
|
;add to path here
|
176
176
|
|
177
177
|
Push "PATH"
|
178
178
|
Push "P"
|
179
179
|
Push "HKLM"
|
180
|
-
Push "$INSTDIR\redis-2.2.
|
180
|
+
Push "$INSTDIR\redis-2.2.13"
|
181
181
|
Call EnvVarUpdate
|
182
182
|
Pop $R0
|
183
183
|
|
184
184
|
Push "REDIS_HOME"
|
185
185
|
Push "P"
|
186
186
|
Push "HKLM"
|
187
|
-
Push "$INSTDIR\redis-2.2.
|
187
|
+
Push "$INSTDIR\redis-2.2.13"
|
188
188
|
Call EnvVarUpdate
|
189
189
|
Pop $R0
|
190
190
|
|
191
|
-
ExecWait '$INSTDIR\redis-2.2.
|
191
|
+
ExecWait '$INSTDIR\redis-2.2.13\redis-service.exe install' $0
|
192
192
|
StrCmp $0 "0" continue wrong
|
193
193
|
|
194
194
|
wrong:
|
@@ -3,6 +3,6 @@ Server.api :clientcreate, :application, :get do |params,user,server|
|
|
3
3
|
server.content_type :json
|
4
4
|
client = Client.create(:user_id => server.current_user.id,:app_id => server.current_app.id)
|
5
5
|
client.update_fields(params)
|
6
|
-
{ "client" => { "client_id" => client.id.to_s } }.
|
6
|
+
{ "client" => { "client_id" => client.id.to_s } }.to_json
|
7
7
|
end
|
8
8
|
end
|
data/lib/rhoconnect/client.rb
CHANGED
@@ -11,6 +11,7 @@ module Rhoconnect
|
|
11
11
|
raise ArgumentError.new(UNKNOWN_CLIENT) unless client
|
12
12
|
raise ArgumentError.new(UNKNOWN_SOURCE) unless source
|
13
13
|
@source,@client,@p_size = source,client,p_size ? p_size.to_i : 500
|
14
|
+
@client.last_sync = Time.now if @client
|
14
15
|
@source_sync = SourceSync.new(@source)
|
15
16
|
end
|
16
17
|
|
@@ -28,7 +28,7 @@ class RhoconnectConsole::Server
|
|
28
28
|
:links => [
|
29
29
|
{ :url => url_path('/homepage'), :selected => true, :title => 'Info' },
|
30
30
|
{ :url => url_path('/doc/select'), :title => 'Server Document' },
|
31
|
-
{ :url => url_path('/adapter'), :title => '
|
31
|
+
{ :url => url_path('/adapter'), :title => 'Backend App URL' },
|
32
32
|
{ :url => url_path('/users'), :title => 'Users' }
|
33
33
|
]
|
34
34
|
}
|
@@ -8,7 +8,7 @@ class RhoconnectConsole::Server
|
|
8
8
|
:links => [
|
9
9
|
{ :url => url_path('/homepage'), :title => 'Info' },
|
10
10
|
{ :url => url_path('/doc/select'), :title => 'Server Document' },
|
11
|
-
{ :url => url_path('/adapter'), :title => '
|
11
|
+
{ :url => url_path('/adapter'), :title => 'Backend App URL' },
|
12
12
|
{ :url => url_path('/users'), :selected => true, :title => 'Users' }
|
13
13
|
]
|
14
14
|
}
|
@@ -108,10 +108,15 @@ class RhoconnectConsole::Server
|
|
108
108
|
|
109
109
|
post '/user/ping' do
|
110
110
|
params['sources'] = params['sources'].split(',')
|
111
|
+
params[:user_id] = params[:user_id].split(',')
|
111
112
|
handle_api_error("Error while pinging") do
|
112
113
|
RhoconnectApi::ping(session[:server],session[:token],params[:user_id],params)
|
113
114
|
end
|
114
|
-
|
115
|
-
|
115
|
+
users = CGI.escape(params[:user_id].join(','))
|
116
|
+
if params[:user_id].size == 1
|
117
|
+
redirect url_path(session[:errors] ? "/user/ping?user_id=#{users}" : "/user?user_id=#{users}"), 303
|
118
|
+
else
|
119
|
+
redirect url_path(session[:errors] ? "/user/ping?user_id=#{users}" : "/users"), 303
|
120
|
+
end
|
116
121
|
end
|
117
122
|
end
|
@@ -1,9 +1,9 @@
|
|
1
|
-
<h1>Set
|
1
|
+
<h1>Set Backend App URL</h1>
|
2
2
|
<%=show_errors%>
|
3
3
|
<form action="<%=url_path('/adapter/create')%>" method='POST'>
|
4
4
|
<table>
|
5
5
|
<tr>
|
6
|
-
<td>
|
6
|
+
<td>backend app url: </td>
|
7
7
|
<td><input style='padding-left:5px;width:300px' name='adapter_url' value='<%=@adapter%>'/></td>
|
8
8
|
</tr>
|
9
9
|
<tr>
|
@@ -1,8 +1,20 @@
|
|
1
|
-
|
1
|
+
<%users = params[:user_id].split(',')%>
|
2
|
+
<%if users.size == 1%>
|
3
|
+
<h1>Ping <%=users[0]%></h1>
|
4
|
+
<%else%>
|
5
|
+
<h1>Ping Users</h1>
|
6
|
+
<%end%>
|
2
7
|
<%=show_errors%>
|
3
8
|
<form method="POST" action="<%=url_path('user/ping')%>">
|
4
|
-
<input type="hidden" name="user_id" value="<%=params[:user_id]%>">
|
5
9
|
<table>
|
10
|
+
<%if users.size == 1%>
|
11
|
+
<input type="hidden" name="user_id" value="<%=params[:user_id]%>">
|
12
|
+
<%else%>
|
13
|
+
<tr>
|
14
|
+
<td>Users:</td>
|
15
|
+
<td><input type="text" name="user_id" value="<%=params[:user_id]%>" size=64/></td>
|
16
|
+
</tr>
|
17
|
+
<%end%>
|
6
18
|
<tr>
|
7
19
|
<td>Message:</td>
|
8
20
|
<td><input type="text" name="message" value="push message" size=64/></td>
|