rhoconnect 3.0.0.rc1 → 3.0.0
Sign up to get free protection for your applications and to get access to all the features.
- data/{CHANGELOG → CHANGELOG.md} +8 -1
- data/CREDITS +6 -1
- data/Gemfile.lock +19 -1
- data/Rakefile +12 -13
- data/bench/blobapp/settings/license.key +1 -1
- data/doc/authentication.txt +1 -1
- data/doc/install.txt +1 -1
- data/doc/rest-api.txt +11 -0
- data/doc/settings.txt +0 -22
- data/generators/templates/application/Gemfile +2 -0
- data/generators/templates/application/config.ru +5 -0
- data/install.sh +17 -6
- data/installer/{utils → unix-like}/create_texts.rb +2 -2
- data/installer/unix-like/rho_connect_install_checkers.rb +2 -3
- data/installer/unix-like/rho_connect_install_constants.rb +22 -29
- data/installer/unix-like/rho_connect_install_installers.rb +18 -43
- data/installer/unix-like/rho_connect_install_utilities.rb +1 -0
- data/installer/unix-like/rhoinstaller.rb +12 -5
- data/installer/utils/constants.rb +45 -0
- data/installer/utils/nix_installation.rake +0 -0
- data/installer/utils/unix_install_test.rb +258 -0
- data/lib/rhoconnect/api/source/push_deletes.rb +4 -1
- data/lib/rhoconnect/api/source/push_objects.rb +4 -1
- data/lib/rhoconnect/document.rb +8 -0
- data/lib/rhoconnect/source.rb +7 -33
- data/lib/rhoconnect/source_adapter.rb +9 -5
- data/lib/rhoconnect/source_sync.rb +49 -29
- data/lib/rhoconnect/store.rb +51 -0
- data/lib/rhoconnect/tasks.rb +20 -1
- data/lib/rhoconnect/version.rb +1 -1
- data/rhoconnect.gemspec +1 -1
- data/spec/source_sync_spec.rb +0 -50
- data/spec/store_spec.rb +36 -1
- data/tasks/redis.rake +17 -0
- metadata +9 -9
- data/installer/utils/install_test.rb +0 -152
data/{CHANGELOG → CHANGELOG.md}
RENAMED
@@ -1,4 +1,11 @@
|
|
1
|
-
## 3.0.0
|
1
|
+
## 3.0.0 (2011-09-30)
|
2
|
+
* #18888077 - implement Redis transactions optimization for push_objects and push_deletes
|
3
|
+
* added 2 rake tasks (build:rpm and build:deb) to generate packaged software for popular linux servers
|
4
|
+
(CentOS/Ubuntu). The package includes ruby enterprise, redis and nginx servers, passenger,
|
5
|
+
and rhoconnect gem with all dependencies
|
6
|
+
* #19116273 - created new redis:startbg task for Rhostudio
|
7
|
+
|
8
|
+
## 3.0.0.rc1 (2011-09-27)
|
2
9
|
* load sqlite3 gem on demand, fixes issue with generator requiring it
|
3
10
|
* #18934311 - create :startbg task for Rhostudio
|
4
11
|
|
data/CREDITS
CHANGED
@@ -35,4 +35,9 @@ RhoConnect uses following other projects:
|
|
35
35
|
|
36
36
|
bundler 1.0.10 (http://gembundler.com/)
|
37
37
|
License: MIT (http://www.opensource.org/licenses/mit-license.php)
|
38
|
-
|
38
|
+
|
39
|
+
Nginx 1.0.6 (http://www.nginx.org/)
|
40
|
+
License: 2-clause BSD-like (http://nginx.org/LICENSE)
|
41
|
+
|
42
|
+
fpm 0.3.9 (https://github.com/jordansissel/fpm)
|
43
|
+
License: MIT (https://github.com/jordansissel/fpm/blob/master/LICENSE)
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rhoconnect (3.0.0
|
4
|
+
rhoconnect (3.0.0)
|
5
5
|
bundler (~> 1.0)
|
6
6
|
json (~> 1.5.0)
|
7
7
|
rake (= 0.9.2)
|
@@ -17,20 +17,32 @@ GEM
|
|
17
17
|
remote: http://rubygems.org/
|
18
18
|
specs:
|
19
19
|
addressable (2.2.6)
|
20
|
+
bouncy-castle-java (1.5.0146.1)
|
20
21
|
crack (0.3.1)
|
22
|
+
dbd-jdbc (0.1.4)
|
23
|
+
dbi (0.4.5)
|
24
|
+
deprecated (= 2.0.1)
|
25
|
+
deprecated (2.0.1)
|
21
26
|
diff-lcs (1.1.3)
|
22
27
|
extlib (0.9.15)
|
23
28
|
ffaker (1.8.1)
|
24
29
|
fpm (0.3.9)
|
25
30
|
json
|
26
31
|
highline (1.6.2)
|
32
|
+
jdbc-sqlite3 (3.7.2)
|
33
|
+
jruby-jars (1.6.4)
|
34
|
+
jruby-openssl (0.7.4)
|
35
|
+
bouncy-castle-java
|
36
|
+
jruby-rack (1.0.10)
|
27
37
|
json (1.5.4)
|
38
|
+
json (1.5.4-java)
|
28
39
|
mime-types (1.16)
|
29
40
|
rack (1.3.3)
|
30
41
|
rack-test (0.6.1)
|
31
42
|
rack (>= 1.0)
|
32
43
|
rake (0.9.2)
|
33
44
|
rcov (0.9.10)
|
45
|
+
rcov (0.9.10-java)
|
34
46
|
redis (2.2.2)
|
35
47
|
redis-namespace (1.0.3)
|
36
48
|
redis (< 3.0.0)
|
@@ -63,11 +75,17 @@ GEM
|
|
63
75
|
uuidtools (2.1.2)
|
64
76
|
vegas (0.1.8)
|
65
77
|
rack (>= 1.0.0)
|
78
|
+
warbler (1.3.2)
|
79
|
+
jruby-jars (>= 1.4.0)
|
80
|
+
jruby-rack (>= 1.0.0)
|
81
|
+
rake (>= 0.8.7)
|
82
|
+
rubyzip (>= 0.9.4)
|
66
83
|
webmock (1.6.4)
|
67
84
|
addressable (> 2.2.5, ~> 2.2)
|
68
85
|
crack (>= 0.1.7)
|
69
86
|
|
70
87
|
PLATFORMS
|
88
|
+
java
|
71
89
|
ruby
|
72
90
|
|
73
91
|
DEPENDENCIES
|
data/Rakefile
CHANGED
@@ -105,12 +105,10 @@ def build_pkg(dist, arch, deps)
|
|
105
105
|
|
106
106
|
Dir.mkdir("#{workspace}")
|
107
107
|
Dir.mkdir("#{workspace}/unix-like")
|
108
|
-
Dir.mkdir("#{workspace}/utils")
|
109
108
|
|
110
109
|
# Copy all necessary Files into the workspace
|
111
110
|
system("cp install.sh Gemfile Gemfile.lock #{workspace}")
|
112
111
|
system("cp -r installer/unix-like/* #{workspace}/unix-like")
|
113
|
-
system("cp -r installer/utils/create_texts.rb #{workspace}/utils")
|
114
112
|
system("cp pkg/#{gem_name} #{workspace}")
|
115
113
|
|
116
114
|
# cd into the pkg dir so that fpm will create the package into the pkg dir.
|
@@ -128,7 +126,6 @@ def build_pkg(dist, arch, deps)
|
|
128
126
|
end #do
|
129
127
|
|
130
128
|
# Create the package
|
131
|
-
puts fpm_cmd
|
132
129
|
system(fpm_cmd)
|
133
130
|
# Leave no trace...
|
134
131
|
system("rm -rf #{workspace}")
|
@@ -137,13 +134,14 @@ end #build_pkg
|
|
137
134
|
desc "Build Debian DEB rhoconnect-#{Rhoconnect::VERSION}_all.deb package into the pkg directory"
|
138
135
|
task "build:deb" => :build do
|
139
136
|
deps = [
|
137
|
+
"wget (>= 1.0)", "make (>= 3.0)", "patch (>= 2.0)",
|
140
138
|
"build-essential (>= 0)",
|
141
|
-
"zlib1g-dev (>=
|
142
|
-
"libssl-dev (>= 0)",
|
139
|
+
"zlib1g (>= 1.2.3)", "zlib1g-dev (>= 1.2.3)",
|
140
|
+
"libssl0.9.8 (>= 0)", "libssl-dev (>= 0.9.8)",
|
143
141
|
"libcurl4-openssl-dev (>= 0)",
|
144
|
-
"libreadline5-dev (>= 0)",
|
145
|
-
"
|
146
|
-
"libsqlite3-dev (>= 3.7.4)"
|
142
|
+
"libreadline5 (>= 0)", "libreadline5-dev (>= 0)",
|
143
|
+
# "libreadline6 (>= 0)", "libreadline6-dev (>= 0)",
|
144
|
+
"libsqlite3-0 (>= 3.7.4)", "libsqlite3-dev (>= 3.7.4)"
|
147
145
|
]
|
148
146
|
|
149
147
|
build_pkg "deb", "all", deps
|
@@ -152,12 +150,13 @@ end #build:deb
|
|
152
150
|
desc "Build Red Hat RPM rhoconnect-#{Rhoconnect::VERSION}.noarch.rpm package into the pkg directory"
|
153
151
|
task "build:rpm" => :build do
|
154
152
|
deps = [
|
153
|
+
"wget >= 1.0", "make >= 3.0", "patch >= 2.0",
|
155
154
|
"gcc-c++ >= 4.1.2",
|
156
|
-
"zlib-devel >= 1.2.3",
|
157
|
-
"curl-devel >= 7.15.5",
|
158
|
-
"pcre-devel >= 6.6",
|
159
|
-
"openssl-devel >= 0.9.8e",
|
160
|
-
"readline-devel >= 5.1"
|
155
|
+
"zlib >= 1.2.3", "zlib-devel >= 1.2.3",
|
156
|
+
"curl >= 7.15.5", "curl-devel >= 7.15.5",
|
157
|
+
"pcre >= 6.6", "pcre-devel >= 6.6",
|
158
|
+
"openssl >= 0.9.8e", "openssl-devel >= 0.9.8e",
|
159
|
+
"readline-devel >= 5.1", "readline-devel >= 5.1"
|
161
160
|
]
|
162
161
|
|
163
162
|
build_pkg "rpm", "noarch", deps
|
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
858fc60fadfde40273d0ac505906969318aa4931d1a2c4aeb24d98393c74379f60e226651601969874257f7f1fbda9b099ecd551a641519aa46819947fda0191
|
data/doc/authentication.txt
CHANGED
@@ -28,7 +28,7 @@ If your backend service requires authentication, simply add code to the authenti
|
|
28
28
|
## Changing Login
|
29
29
|
If your actual user name is different than the username that is input into the client, you can change the username by returning a string instead of true if authentication was successful.
|
30
30
|
|
31
|
-
|
31
|
+
:::ruby
|
32
32
|
def authenticate(username, password, session)
|
33
33
|
success = false
|
34
34
|
# ... connect to backend using API and authenticate ...
|
data/doc/install.txt
CHANGED
data/doc/rest-api.txt
CHANGED
@@ -113,6 +113,11 @@ Push new objects or object updates to RhoConnect. These changes will be sent to
|
|
113
113
|
}.to_json,
|
114
114
|
:content_type => :json
|
115
115
|
)
|
116
|
+
|
117
|
+
**NOTE: Normally, `push_objects` method will refresh the whole :md document in Redis. However, in case of large-size
|
118
|
+
documents, `push_objects` method can be optimized by invoking only the necessary updates. This can help reducing
|
119
|
+
the number of transactions with Redis. To force the optimization, user can use the `:rebuild_md => false` flag
|
120
|
+
in the `push_objects` parameters hash.
|
116
121
|
|
117
122
|
### `push_deletes`
|
118
123
|
Delete objects from RhoConnect. These objects will be deleted from the device the next time it synchronizes.
|
@@ -132,6 +137,12 @@ Delete objects from RhoConnect. These objects will be deleted from the device th
|
|
132
137
|
:content_type => :json
|
133
138
|
)
|
134
139
|
|
140
|
+
**NOTE: Normally, `push_deletes` method will refresh the whole :md document in Redis. However, in case of large-size
|
141
|
+
documents, `push_deletes` method can be optimized by invoking only the necessary updates. This can help reducing
|
142
|
+
the number of transactions with Redis. To force the optimization, user can use the `:rebuild_md => false` flag
|
143
|
+
in the `push_deletes` parameters hash.
|
144
|
+
|
145
|
+
|
135
146
|
### `list_users`
|
136
147
|
List users registered with this RhoConnect application.
|
137
148
|
|
data/doc/settings.txt
CHANGED
@@ -34,26 +34,4 @@ Typical source settings include:
|
|
34
34
|
default application poll interval
|
35
35
|
even if source has its own setting.
|
36
36
|
:partition_type: <app|user> - default partition type for the source
|
37
|
-
:retry_limit: <number_of_retries> - this option allows to for the user to
|
38
|
-
perform sync upto <number_of_retries> times
|
39
|
-
in case of previous sync failure.
|
40
|
-
Normally, each sync resets the refresh time
|
41
|
-
according to the polling interval regardless
|
42
|
-
of the sync success or failure. In case of failure,
|
43
|
-
it may not be a desired scenario because user will
|
44
|
-
be getting an error on all sync attempts until
|
45
|
-
the next polling interval will expire. This setting
|
46
|
-
allows to overcome this issue.The following flow
|
47
|
-
shows the algorithm in place:
|
48
|
-
|
49
|
-
1) If sync fails and :retry_limit is set to N > 0,
|
50
|
-
refresh_time is not updated for next N retries (or until any of them succeeds).
|
51
|
-
Here 'retry' means that user will be able to initiate another sync request
|
52
|
-
(since refresh_time is not updated).
|
53
|
-
|
54
|
-
2) If one of the retry succeeds - source's refresh time is updated and retry counter is reset.
|
55
|
-
3) If the `:retry_limit` is reached and all attempts have failed -
|
56
|
-
source's refresh time is updated to prevent excessive polling on the permanently down backend.
|
57
|
-
4) Also, if more then `:poll_interval` seconds has elapsed
|
58
|
-
since last refresh_time - source's retry counter is reset.
|
59
37
|
|
@@ -21,10 +21,12 @@ gem 'trinidad', :platforms => :jruby
|
|
21
21
|
group :development do
|
22
22
|
# By default to run application thin web server is used
|
23
23
|
gem 'thin', :platforms => [:ruby, :mswin, :mingw]
|
24
|
+
gem 'rhomobile-debug', ">= 1.0.2"
|
24
25
|
end
|
25
26
|
|
26
27
|
group :test do
|
27
28
|
gem 'rack-test', '>= 0.5.3', :require => "rack/test"
|
28
29
|
gem 'rspec', '~> 2.6.0'
|
29
30
|
gem 'rcov', '>= 0.9.8'
|
31
|
+
gem 'rhomobile-debug', ">= 1.0.2"
|
30
32
|
end
|
@@ -3,6 +3,11 @@ require 'rubygems'
|
|
3
3
|
require 'bundler'
|
4
4
|
Bundler.require
|
5
5
|
|
6
|
+
if ENV['DEBUG'] == 'yes'
|
7
|
+
ENV['APP_TYPE'] = 'rhosync'
|
8
|
+
require 'debugger'
|
9
|
+
end
|
10
|
+
|
6
11
|
# Try to load vendor-ed rhoconnect, otherwise load the gem
|
7
12
|
begin
|
8
13
|
require 'vendor/rhoconnect/lib/rhoconnect/server'
|
data/install.sh
CHANGED
@@ -8,6 +8,13 @@ if [ "$(id -u)" != "0" ]; then
|
|
8
8
|
exit 1
|
9
9
|
fi
|
10
10
|
|
11
|
+
# Check if web server is running on port 80
|
12
|
+
if [[ `echo "close" | telnet localhost 80 2>&1 | grep "Connected"` ]]; then
|
13
|
+
echo "Web server on port 80 is running."
|
14
|
+
echo "Please stop it and then re-run the installation script."
|
15
|
+
exit 1
|
16
|
+
fi
|
17
|
+
|
11
18
|
timeInitial=`date +%H%M%S`
|
12
19
|
installTime=$timeInitial
|
13
20
|
|
@@ -209,7 +216,7 @@ setRubyVars ()
|
|
209
216
|
echo "${rubyVersion} is not a valid ruby version" | tee -a $log
|
210
217
|
exit
|
211
218
|
fi
|
212
|
-
}
|
219
|
+
}
|
213
220
|
|
214
221
|
installRuby ()
|
215
222
|
{
|
@@ -347,6 +354,7 @@ fi
|
|
347
354
|
callruby="sudo ${prefix}/bin/ruby ${INSTALL_DIR}/unix-like/rhoinstaller.rb ${opts}"
|
348
355
|
# Call the ruby script
|
349
356
|
$callruby
|
357
|
+
rho_status=$?
|
350
358
|
|
351
359
|
if [[ $installedSoftware -eq ${#INSTALL_ARRAY[@]} ]]; then
|
352
360
|
rm "${prefix}/info.dat"
|
@@ -360,9 +368,12 @@ if [[ $installedSoftware -eq ${#INSTALL_ARRAY[@]} ]]; then
|
|
360
368
|
mkdir $prefix"/post-install"
|
361
369
|
fi
|
362
370
|
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
367
|
-
|
371
|
+
if (( $rho_status )) ; then
|
372
|
+
echo "Installation failed. For troubleshooting see file $log ..." | tee -a $log
|
373
|
+
else
|
374
|
+
opts=" -d $dist"
|
375
|
+
sudo ${prefix}/bin/ruby ${INSTALL_DIR}/unix-like/create_texts.rb ${opts}
|
376
|
+
fi
|
377
|
+
# timeFinal=`date +%H%M%S`
|
378
|
+
# getTime $timeFinal
|
368
379
|
fi
|
@@ -546,7 +546,7 @@ def generate_rhoapp(rho_path)
|
|
546
546
|
Dir.chdir "rhoapp"
|
547
547
|
`#{rho_path}/bin/bundle install --without=test development`
|
548
548
|
Dir.chdir "../"
|
549
|
-
`chown nginx:nginx rhoapp/`
|
549
|
+
`chown -R nginx:nginx rhoapp/`
|
550
550
|
end
|
551
551
|
end
|
552
552
|
|
@@ -604,7 +604,7 @@ _NGINX_TO_DO_
|
|
604
604
|
/sbin/service httpd start
|
605
605
|
|
606
606
|
_APACHE2_TO_DO_
|
607
|
-
end + "For more details see #{@prefix}/README
|
607
|
+
end + "For more details see #{@prefix}/README file."
|
608
608
|
|
609
609
|
end #create_texts
|
610
610
|
|
@@ -100,18 +100,17 @@ module Checkers
|
|
100
100
|
# Get the HTTP_RESPONSE from the site we are checking
|
101
101
|
begin
|
102
102
|
res = Net::HTTP.get_response(URI.parse(url.to_s))
|
103
|
+
running = false
|
103
104
|
# Check the response code
|
104
105
|
if !res.code =~ /2|3\d{2}/
|
105
|
-
running = false
|
106
106
|
string << " " + red("Not Running!")
|
107
107
|
else
|
108
|
-
running =
|
108
|
+
running = true
|
109
109
|
string << " " + green("Running")
|
110
110
|
end #if
|
111
111
|
log_print string
|
112
112
|
rescue
|
113
113
|
@log.error {"#{@options[:web_server]} web server not unresponsive!"}
|
114
|
-
running = false
|
115
114
|
end
|
116
115
|
|
117
116
|
running
|
@@ -1,6 +1,6 @@
|
|
1
1
|
module Constants
|
2
2
|
|
3
|
-
PACKAGES = ["zlib1g-dev",
|
3
|
+
PACKAGES = ["zlib1g-dev",
|
4
4
|
"libcurl4-openssl-dev",
|
5
5
|
"apache2-mpm-prefork",
|
6
6
|
"apache2-prefork-dev",
|
@@ -8,39 +8,32 @@ PACKAGES = ["zlib1g-dev",
|
|
8
8
|
"libaprutil1-dev",
|
9
9
|
"dtach"]
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
11
|
+
REDIS = "redis-2.2.14"
|
12
|
+
SQLITE3 = "sqlite-autoconf-3070701"
|
13
|
+
RUBY = "ruby-enterprise-1.8.7-2011.03"
|
14
|
+
Nginx = "nginx-1.0.6"
|
15
|
+
#RUBYGEMS = "rubygems-1.8.5"
|
16
16
|
|
17
|
-
SOFTWARE = [ REDIS, SQLITE3, RUBY ]
|
17
|
+
SOFTWARE = [ REDIS, SQLITE3, RUBY, Nginx ]
|
18
18
|
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
REDIS_URL = "http://redis.googlecode.com/files/#{ REDIS }.tar.gz"
|
20
|
+
SQLITE3_URL = "http://www.sqlite.org/sqlite-autoconf-3070701.tar.gz"
|
21
|
+
#RUBYGEMS_URL = "http://rubyforge.org/frs/download.php/74954/" + "#{ RUBYGEMS }.tgz"
|
22
|
+
URLS = [ REDIS_URL, SQLITE3_URL ]
|
22
23
|
|
24
|
+
GEMS = ["bundler", "passenger"]
|
25
|
+
SUPPORTED_PKG_MGRS = ["apt-get", "yum"]
|
26
|
+
SUPPORTED_WEB_SERVERS = ["apache2", "nginx"]
|
23
27
|
|
24
|
-
|
28
|
+
WEB_SERVER_URL = "http://localhost/"
|
25
29
|
|
26
|
-
|
30
|
+
CHECKS = ["check_all_packages", "check_all_gems", "check_web_server_running"]
|
27
31
|
|
28
|
-
|
32
|
+
DEFAULT_INSTALL_DIR = "/opt/rhoconnect"
|
29
33
|
|
30
|
-
|
34
|
+
DEFAULTS = {"Packages" => PACKAGES, "Software" => SOFTWARE, "Gems" => GEMS,
|
35
|
+
"Supported Package Managers" => SUPPORTED_PKG_MGRS,
|
36
|
+
"Supported Web Servers" => SUPPORTED_WEB_SERVERS,
|
37
|
+
"Default Install Directory" => DEFAULT_INSTALL_DIR}
|
31
38
|
|
32
|
-
|
33
|
-
|
34
|
-
CHECKS = ["check_all_packages",
|
35
|
-
"check_all_gems",
|
36
|
-
"check_web_server_running"]
|
37
|
-
|
38
|
-
DEFAULT_INSTALL_DIR = "/opt/rhoconnect"
|
39
|
-
|
40
|
-
DEFAULTS = {"Packages" => PACKAGES,
|
41
|
-
"Software" => SOFTWARE,
|
42
|
-
"Gems" => GEMS,
|
43
|
-
"Supported Package Managers" => SUPPORTED_PKG_MGRS,
|
44
|
-
"Supported Web Servers" => SUPPORTED_WEB_SERVERS,
|
45
|
-
"Default Install Directory" => DEFAULT_INSTALL_DIR}
|
46
|
-
end #Constants
|
39
|
+
end
|
@@ -4,14 +4,14 @@ require 'rho_connect_install_checkers'
|
|
4
4
|
include Checkers
|
5
5
|
|
6
6
|
module Installers
|
7
|
-
@options=''
|
8
|
-
|
9
7
|
# configure_passenger
|
10
8
|
# This method installs items that were retrieved via wget as well as passenger
|
11
9
|
def configure_passenger(options)
|
10
|
+
raise "Please stop the web server and then reinstall the package." if check_web_server_running
|
11
|
+
|
12
12
|
@options=options
|
13
13
|
print_header "Configuring passenger ..."
|
14
|
-
if @options[:web_server]
|
14
|
+
if @options[:web_server]
|
15
15
|
if @options[:web_server] == "apache2"
|
16
16
|
print_header "Configuring apache2 to work with passenger ..."
|
17
17
|
cmd "yes | #{@options[:prefix]}/bin/passenger-install-#{ @options[:web_server] }-module"
|
@@ -24,42 +24,12 @@ module Installers
|
|
24
24
|
--nginx-source-dir=#{@options[:prefix]}/#{nginx_version} \
|
25
25
|
--extra-configure-flags='--with-http_ssl_module --with-http_gzip_static_module --user=nginx --group=nginx'"
|
26
26
|
else
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
27
|
+
raise "Unsupported web server."
|
28
|
+
end
|
29
|
+
end
|
30
|
+
raise "Nginx installation failed." if $? != 0
|
31
|
+
end
|
31
32
|
|
32
|
-
if $? != 0
|
33
|
-
log_print "Some dependencies are not installed.\nPlease install them and re-run this script..."
|
34
|
-
exit
|
35
|
-
end #if
|
36
|
-
# FIXME:
|
37
|
-
cmd "rm -rf #{@options[:prefix]}/#{nginx_version}; rm #{@options[:prefix]}/#{nginx_version}.tar.gz" if File.exist? "#{@options[:prefix]}/#{nginx_version}.tar.gz"
|
38
|
-
|
39
|
-
end #configure_passenger
|
40
|
-
|
41
|
-
# install_all_packages
|
42
|
-
# This method installs all packages listed in the PACKAGES list defined
|
43
|
-
# in the Constants file.
|
44
|
-
# def install_all_packages(pkg_mgr)
|
45
|
-
# print_header "Installing packages ..."
|
46
|
-
# Constants::PACKAGES.each do |pkg|
|
47
|
-
# install_package pkg, pkg_mgr unless check_package pkg == true
|
48
|
-
# end #do
|
49
|
-
# packages_not_found = check_all_packages
|
50
|
-
# if packages_not_found && !packages_not_found.empty?
|
51
|
-
# log_print packages_not_found
|
52
|
-
# else
|
53
|
-
# log_print "All packages installed correctly"
|
54
|
-
# end #if
|
55
|
-
# end #install_all_packages
|
56
|
-
|
57
|
-
# install_package
|
58
|
-
# This method installs the package passed with the determined get_cmd
|
59
|
-
# def install_package(pkg, pkg_mgr)
|
60
|
-
# cmd "#{ pkg_mgr } install #{ pkg }" unless check_package pkg
|
61
|
-
# end #install_package
|
62
|
-
|
63
33
|
# install_all_gems
|
64
34
|
# This method installs all gems specified in the GEMS list defined in the
|
65
35
|
# Constants file
|
@@ -73,7 +43,8 @@ module Installers
|
|
73
43
|
# install_gem
|
74
44
|
# This method installs the given gem unless it is already installed
|
75
45
|
def install_gem(gem)
|
76
|
-
cmd "#{@gem_path} install #{
|
46
|
+
cmd "#{@gem_path} install #{gem} --no-ri --no-rdoc" unless check_gem(gem, @gem_path)
|
47
|
+
raise "#{gem} installation failed." if $? != 0
|
77
48
|
end #install_gem
|
78
49
|
|
79
50
|
# install_rubygems
|
@@ -90,10 +61,12 @@ module Installers
|
|
90
61
|
# This method installs redis
|
91
62
|
def install_redis
|
92
63
|
print_header "Installing redis ..."
|
64
|
+
|
93
65
|
Dir.chdir("#{@options[:prefix]}/#{Constants::REDIS}/src")
|
94
66
|
cmd "make 2>&1; make PREFIX=#{@options[:prefix]} install"
|
95
|
-
|
67
|
+
raise "Redis installation failed." if $? != 0
|
96
68
|
|
69
|
+
`mkdir #{@options[:prefix]}/etc` unless File.exist? "#{@options[:prefix]}/etc"
|
97
70
|
#cmd "cp ../redis.conf #{@options[:prefix]}etc"
|
98
71
|
redis_conf_file = File.new("#{@options[:prefix]}/etc/redis.conf", 'w')
|
99
72
|
File.foreach("../redis.conf") do |line|
|
@@ -117,6 +90,7 @@ module Installers
|
|
117
90
|
Dir.chdir("#{@options[:prefix]}/#{Constants::SQLITE3}")
|
118
91
|
cmd "./configure --prefix=#{@options[:prefix]}"
|
119
92
|
cmd "make 2>&1; make install"
|
93
|
+
raise "Installation if sqlite3 libraries failed." if $? != 0
|
120
94
|
end #install_sqlite
|
121
95
|
|
122
96
|
# install_rhoconnect
|
@@ -137,7 +111,8 @@ module Installers
|
|
137
111
|
# PATH=/opt/rhoconnect/bin:$PATH rake build
|
138
112
|
cmd "PATH=#{@options[:prefix]}/bin:$PATH rake build"
|
139
113
|
cmd "#{@gem_path} install pkg/rhoconnect-*.gem --no-ri --no-rdoc"
|
114
|
+
raise "Gem installation failed." if $? != 0
|
140
115
|
#`rm -f pkg/rhoconnect-*.gem`
|
141
|
-
end
|
142
|
-
end
|
143
|
-
end
|
116
|
+
end
|
117
|
+
end
|
118
|
+
end
|
@@ -25,7 +25,7 @@ user = `whoami`.strip
|
|
25
25
|
if user != "root"
|
26
26
|
puts "This installation must be performed by the root user"
|
27
27
|
exit(2)
|
28
|
-
end
|
28
|
+
end
|
29
29
|
|
30
30
|
options = {}
|
31
31
|
|
@@ -64,7 +64,7 @@ optparse = OptionParser.new do|opts|
|
|
64
64
|
puts opts
|
65
65
|
exit
|
66
66
|
end #do
|
67
|
-
end
|
67
|
+
end
|
68
68
|
|
69
69
|
options[:start_dir] = `pwd`.strip
|
70
70
|
|
@@ -77,7 +77,7 @@ options[:log] = log
|
|
77
77
|
#downcase all options hash string values
|
78
78
|
options.each do |key, val|
|
79
79
|
options[key] = val.downcase if val.class == String
|
80
|
-
end
|
80
|
+
end
|
81
81
|
|
82
82
|
#Start installation process
|
83
83
|
#determine into what directory things will be installed
|
@@ -86,5 +86,12 @@ rho = GetParams.get_flavor(options)
|
|
86
86
|
if options[:offline]
|
87
87
|
rho.check_for_installed_software_only
|
88
88
|
else
|
89
|
-
|
90
|
-
|
89
|
+
begin
|
90
|
+
rho.execute_installation
|
91
|
+
rescue => ex
|
92
|
+
log.error "#{ex.message}"
|
93
|
+
puts
|
94
|
+
puts "#{ex.message}"
|
95
|
+
exit(1)
|
96
|
+
end
|
97
|
+
end
|
@@ -0,0 +1,45 @@
|
|
1
|
+
$:.unshift File.join(File.dirname(__FILE__), '..', '..', 'lib')
|
2
|
+
|
3
|
+
require 'rhoconnect/version'
|
4
|
+
|
5
|
+
module Constants
|
6
|
+
|
7
|
+
RC_VERSION = Rhoconnect::VERSION
|
8
|
+
REGION = 'us-west-1'
|
9
|
+
SLEEP = 45
|
10
|
+
HOME_DIR = `echo ~/`.strip.chomp("/")
|
11
|
+
REMOTE_HOME = '/home/ubuntu'
|
12
|
+
PEM_FILE = 'alexdevkey.pem'
|
13
|
+
SSH_KEY = "#{HOME_DIR}/.ssh/#{PEM_FILE}"
|
14
|
+
SCP_KEY = "#{HOME_DIR}/.scp/#{PEM_FILE}"
|
15
|
+
ACCESS_KEY_FILE = "#{HOME_DIR}/.ec2/credentials"
|
16
|
+
UBUNTU_STACK = { :image_id => 'ami-3d491a78',
|
17
|
+
:flavor_id => 'm1.small',
|
18
|
+
:key_name => 'alexdevkey',
|
19
|
+
:groups => 'load-test',
|
20
|
+
:user => 'ubuntu'}
|
21
|
+
|
22
|
+
CENTOS_STACK = { :image_id => 'ami-13346656',
|
23
|
+
:flavor_id => 'm1.small',
|
24
|
+
:key_name => 'alexdevkey',
|
25
|
+
:groups => 'load-test',
|
26
|
+
:user => 'root'}
|
27
|
+
|
28
|
+
STACKS = [ UBUNTU_STACK ]
|
29
|
+
# CENTOS_STACK ]
|
30
|
+
|
31
|
+
DEB_DEPS = [ "build-essential",
|
32
|
+
"zlib1g-dev",
|
33
|
+
"libssl-dev",
|
34
|
+
"libcurl4-openssl-dev",
|
35
|
+
"libreadline5-dev",
|
36
|
+
"libsqlite3-0",
|
37
|
+
"libsqlite3-dev" ]
|
38
|
+
|
39
|
+
RPM_DEPS = [ "gcc-c++",
|
40
|
+
"zlib-devel",
|
41
|
+
"curl-devel",
|
42
|
+
"pcre-devel",
|
43
|
+
"openssl-devel",
|
44
|
+
"readline-devel" ]
|
45
|
+
end #Constants
|
File without changes
|