rhoconnect 3.2.0.beta1 → 3.2.0.beta2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG.md +14 -0
- data/Gemfile +2 -1
- data/Gemfile.lock +33 -7
- data/README.md +4 -0
- data/Rakefile +13 -11
- data/commands/commands/rhoconnect/create_user.rb +1 -1
- data/commands/commands/rhoconnect/delete_device.rb +1 -1
- data/commands/commands/rhoconnect/delete_user.rb +1 -1
- data/commands/commands/rhoconnect/get_token.rb +1 -1
- data/commands/commands/rhoconnect/reset.rb +1 -1
- data/commands/execute.rb +0 -1
- data/doc/bulk-sync.txt +35 -1
- data/doc/install.txt +7 -3
- data/examples/simple/config.ru +1 -1
- data/generators/templates/application/Gemfile +1 -1
- data/install.sh +4 -4
- data/installer/unix-like/create_texts.rb +31 -31
- data/installer/unix-like/pre_uninstall.sh +2 -3
- data/installer/unix-like/rho_connect_install_constants.rb +3 -3
- data/installer/unix-like/rho_connect_install_debian.rb +0 -5
- data/installer/unix-like/rho_connect_install_yum.rb +1 -3
- data/installer/utils/constants.rb +4 -4
- data/installer/utils/nix_install_test.rb +20 -20
- data/installer/utils/package_upload/repos.rake +2 -2
- data/installer/utils/package_upload/s3_single_file.rb +57 -0
- data/lib/rhoconnect/client_sync.rb +1 -1
- data/lib/rhoconnect/jobs/bulk_data_job.rb +30 -32
- data/lib/rhoconnect/jobs/ping_job.rb +15 -2
- data/lib/rhoconnect/server.rb +3 -0
- data/lib/rhoconnect/tasks.rb +5 -7
- data/lib/rhoconnect/user.rb +1 -0
- data/lib/rhoconnect/version.rb +1 -1
- data/lib/rhoconnect/web-console/models/adapter.js +2 -0
- data/lib/rhoconnect/web-console/models/client.js +0 -22
- data/lib/rhoconnect/web-console/models/source.js +1 -1
- data/lib/rhoconnect/web-console/templates/index.erb +2 -1
- data/lib/rhoconnect/web-console/views/home.js +22 -1
- data/lib/rhoconnect/web-console/views/set_adapter.js +5 -6
- data/rhoconnect.gemspec +2 -1
- data/spec/api/source/fast_insert_spec.rb +1 -1
- data/spec/api/user/create_user_spec.rb +11 -1
- data/spec/client_sync_spec.rb +32 -25
- data/spec/javascripts/admins_routes_spec.js +108 -103
- data/spec/javascripts/doc_view_spec.js +2 -3
- data/spec/javascripts/edit_user_view_spec.js +1 -1
- data/spec/javascripts/home_view_spec.js +6 -6
- data/spec/javascripts/server_doc_view_spec.js +4 -0
- data/spec/javascripts/session_spec.js +15 -0
- data/spec/javascripts/set_adapter_view_spec.js +2 -6
- data/spec/javascripts/show_device_view_spec.js +4 -1
- data/spec/javascripts/show_user_view_spec.js +4 -0
- data/spec/javascripts/source_docs_view_spec.js +2 -2
- data/spec/jobs/bulk_data_job_spec.rb +8 -12
- data/spec/jobs/ping_job_spec.rb +21 -0
- data/spec/perf/bulk_data_perf_spec.rb +1 -2
- data/spec/server/server_spec.rb +2 -4
- data/spec/spec_helper.rb +13 -3
- data/tasks/jasmine.rake +7 -0
- metadata +24 -7
- data/lib/rhoconnect/console/rhoconnect_api.rb +0 -245
- data/spec/api/application/rhoconnect_api_spec.rb +0 -592
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,16 @@
|
|
1
|
+
## 3.2.0.beta2 (2012-05-02)
|
2
|
+
* 28571961 fix jasmine tests
|
3
|
+
* #28496779 - remove rhoconnect_api.rb and all of its references
|
4
|
+
* #28563163 - bug fix : it should not be allowed to create a User with empty login
|
5
|
+
* #28528841 - Ping should process all clients and report cumulative error at the end
|
6
|
+
* Empty 'queue_updates' request should trigger processing of the CUD queue
|
7
|
+
* #28094895 - Zendesk ticket #2354: Bulk sync not updating sources table (fields 'last_inserted_size' and 'backend_refresh_time' now updated)
|
8
|
+
* #28855323 - Bulk Sync Associations from Zendesk ticket #2377
|
9
|
+
* #28576723 - dpkg lock error on Ubuntu install
|
10
|
+
* #28094895 - Zendesk ticket #2354: Bulk sync not updating sources table (fields 'last_inserted_size' and 'backend_refresh_time' now updated)
|
11
|
+
* #28865579 - Async dependencies are not properly initialized on Windows (need to add :mingw_19 to the list of platforms in Gemfile)
|
12
|
+
* Rhoconnect production stack updated to latest stable version of ruby, redis, and nginx: ruby-1.9.3-p194, redis-2.4.12, nginx-1.2.0.
|
13
|
+
|
1
14
|
## 3.2.0.beta1 (2012-04-20)
|
2
15
|
* Rhoconnect commands (replacement for rake tasks)
|
3
16
|
* Async framework is introduced for rubies 1.9.x (no 1.8.7 or JRuby support)
|
@@ -7,6 +20,7 @@
|
|
7
20
|
* #28219647 - Schema Change Error from Zendesk ticket #2353
|
8
21
|
* #28328057 - Feature Request: Adding a Bulk Data Job after_perform hook from Zendesk ticket #2367
|
9
22
|
* #28330213 - Implementing fast_insert/update/delete API
|
23
|
+
* #27051649 - Rhoconnect Console is re-worked using Twitter.Bootstrap
|
10
24
|
|
11
25
|
## 3.1.2 (2012-04-02)
|
12
26
|
* #19297819 - Refactor server middleware loading to be static
|
data/Gemfile
CHANGED
@@ -7,7 +7,7 @@ gem 'win32-process', :platforms => [:mswin, :mingw]
|
|
7
7
|
|
8
8
|
# for async framework
|
9
9
|
# for Async, Eventful execution
|
10
|
-
platforms :ruby_19 do
|
10
|
+
platforms :ruby_19, :mingw_19 do
|
11
11
|
gem 'eventmachine'
|
12
12
|
gem 'rack-fiber_pool'
|
13
13
|
gem 'async-rack'
|
@@ -36,6 +36,7 @@ group :test do
|
|
36
36
|
gem 'simplecov', :require => false, :platforms => [:ruby_19,:jruby]
|
37
37
|
gem 'rack-test', '>= 0.5.3', :require => 'rack/test'
|
38
38
|
gem 'jasmine'
|
39
|
+
gem 'jasmine-headless-webkit'
|
39
40
|
end
|
40
41
|
|
41
42
|
group :build do
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
rhoconnect (3.2.0.
|
4
|
+
rhoconnect (3.2.0.beta2)
|
5
5
|
bundler (~> 1.0)
|
6
6
|
json (~> 1.6.0)
|
7
7
|
rake (~> 0.9.2)
|
@@ -11,6 +11,7 @@ PATH
|
|
11
11
|
rubyzip (~> 0.9.4)
|
12
12
|
sinatra (~> 1.3)
|
13
13
|
templater (~> 1.0.0)
|
14
|
+
thin (~> 1.3.1)
|
14
15
|
thor (~> 0.14.6)
|
15
16
|
uuidtools (>= 2.1.1)
|
16
17
|
|
@@ -18,7 +19,7 @@ GEM
|
|
18
19
|
remote: http://rubygems.org/
|
19
20
|
specs:
|
20
21
|
SystemTimer (1.2.3)
|
21
|
-
addressable (2.2.
|
22
|
+
addressable (2.2.8)
|
22
23
|
arr-pm (0.0.7)
|
23
24
|
cabin (> 0)
|
24
25
|
async-rack (0.5.1)
|
@@ -34,10 +35,17 @@ GEM
|
|
34
35
|
childprocess (0.3.2)
|
35
36
|
ffi (~> 1.0.6)
|
36
37
|
clamp (0.3.1)
|
38
|
+
coffee-script (2.2.0)
|
39
|
+
coffee-script-source
|
40
|
+
execjs
|
41
|
+
coffee-script-source (1.3.1)
|
37
42
|
crack (0.3.1)
|
43
|
+
daemons (1.1.8)
|
38
44
|
diff-lcs (1.1.3)
|
39
45
|
eventmachine (0.12.10)
|
40
46
|
excon (0.13.4)
|
47
|
+
execjs (1.3.1)
|
48
|
+
multi_json (~> 1.0)
|
41
49
|
extlib (0.9.15)
|
42
50
|
ffaker (1.14.0)
|
43
51
|
ffi (1.0.11)
|
@@ -52,24 +60,31 @@ GEM
|
|
52
60
|
nokogiri (~> 1.5.0)
|
53
61
|
ruby-hmac
|
54
62
|
formatador (0.2.1)
|
55
|
-
fpm (0.4.
|
63
|
+
fpm (0.4.9)
|
56
64
|
arr-pm (~> 0.0.7)
|
57
65
|
backports (= 2.3.0)
|
58
66
|
cabin (~> 0.4.3)
|
59
|
-
clamp
|
60
|
-
json
|
67
|
+
clamp (= 0.3.1)
|
68
|
+
json (= 1.6.6)
|
61
69
|
highline (1.6.11)
|
70
|
+
hike (1.2.1)
|
62
71
|
jasmine (1.1.2)
|
63
72
|
jasmine-core (>= 1.1.0)
|
64
73
|
rack (>= 1.1)
|
65
74
|
rspec (>= 1.3.1)
|
66
75
|
selenium-webdriver (>= 0.1.3)
|
67
76
|
jasmine-core (1.1.0)
|
77
|
+
jasmine-headless-webkit (0.8.4)
|
78
|
+
coffee-script
|
79
|
+
jasmine-core (~> 1.1)
|
80
|
+
multi_json
|
81
|
+
rainbow
|
82
|
+
sprockets (~> 2)
|
68
83
|
json (1.6.6)
|
69
84
|
libwebsocket (0.1.3)
|
70
85
|
addressable
|
71
86
|
mime-types (1.18)
|
72
|
-
multi_json (1.3.
|
87
|
+
multi_json (1.3.4)
|
73
88
|
net-scp (1.0.4)
|
74
89
|
net-ssh (>= 1.99.1)
|
75
90
|
net-ssh (2.3.0)
|
@@ -80,6 +95,7 @@ GEM
|
|
80
95
|
rack
|
81
96
|
rack-test (0.6.1)
|
82
97
|
rack (>= 1.0)
|
98
|
+
rainbow (1.1.4)
|
83
99
|
rake (0.9.2.2)
|
84
100
|
rcov (1.0.0)
|
85
101
|
redis (2.2.2)
|
@@ -101,7 +117,7 @@ GEM
|
|
101
117
|
diff-lcs (~> 1.1.3)
|
102
118
|
rspec-mocks (2.9.0)
|
103
119
|
ruby-hmac (0.4.0)
|
104
|
-
rubyzip (0.9.
|
120
|
+
rubyzip (0.9.8)
|
105
121
|
selenium-webdriver (2.21.2)
|
106
122
|
childprocess (>= 0.2.5)
|
107
123
|
ffi (~> 1.0)
|
@@ -116,11 +132,20 @@ GEM
|
|
116
132
|
rack (~> 1.3, >= 1.3.6)
|
117
133
|
rack-protection (~> 1.2)
|
118
134
|
tilt (~> 1.3, >= 1.3.3)
|
135
|
+
sprockets (2.4.1)
|
136
|
+
hike (~> 1.2)
|
137
|
+
multi_json (~> 1.0)
|
138
|
+
rack (~> 1.0)
|
139
|
+
tilt (~> 1.1, != 1.3.0)
|
119
140
|
sqlite3 (1.3.6)
|
120
141
|
templater (1.0.0)
|
121
142
|
diff-lcs (>= 1.1.2)
|
122
143
|
extlib (>= 0.9.5)
|
123
144
|
highline (>= 1.4.0)
|
145
|
+
thin (1.3.1)
|
146
|
+
daemons (>= 1.0.9)
|
147
|
+
eventmachine (>= 0.12.6)
|
148
|
+
rack (>= 1.0.0)
|
124
149
|
thor (0.14.6)
|
125
150
|
tilt (1.3.3)
|
126
151
|
uuidtools (2.1.2)
|
@@ -145,6 +170,7 @@ DEPENDENCIES
|
|
145
170
|
fog (>= 1.1.0)
|
146
171
|
fpm (>= 0.4.6)
|
147
172
|
jasmine
|
173
|
+
jasmine-headless-webkit
|
148
174
|
jdbc-sqlite3 (>= 3.7.2)
|
149
175
|
jruby-openssl (>= 0.7.4)
|
150
176
|
rack-fiber_pool
|
data/README.md
CHANGED
@@ -2,6 +2,10 @@ RhoConnect App Integration Server
|
|
2
2
|
-------------------------------------------------------------
|
3
3
|
RhoConnect is an app integration server which keeps enterprise data current and available on users’ devices.
|
4
4
|
|
5
|
+
Prerequisites
|
6
|
+
-------------------------------------------------------------
|
7
|
+
You will need to install the Qt libraray <http://qt.nokia.com/downloads> in order to run the specs.
|
8
|
+
|
5
9
|
More Info
|
6
10
|
-------------------------------------------------------------
|
7
11
|
* Intro to Rhodes & RhoConnect: <http://docs.rhomobile.com>
|
data/Rakefile
CHANGED
@@ -11,7 +11,8 @@ $:.unshift File.join(File.dirname(__FILE__),'lib')
|
|
11
11
|
require 'rhoconnect'
|
12
12
|
|
13
13
|
include Rake::DSL
|
14
|
-
task :default => 'spec:all'
|
14
|
+
#task :default => 'spec:all'
|
15
|
+
task :default => ["spec:all","jasmine:headless"]
|
15
16
|
task :spec => 'spec:spec'
|
16
17
|
|
17
18
|
begin
|
@@ -103,23 +104,23 @@ end
|
|
103
104
|
|
104
105
|
# Debian and RPM package building tasks
|
105
106
|
def build_pkg(dist, arch, deps, use_bench_tarball=false)
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
107
|
+
puts start_dir = Dir.pwd
|
108
|
+
build_dir = "/tmp/rhobuild"
|
109
|
+
version = Rhoconnect::VERSION
|
110
|
+
description = '"Rhoconnect production environment"'
|
111
|
+
prefix = "/opt/rhoconnect/installer"
|
112
|
+
gem_name = "rhoconnect-#{version}.gem"
|
111
113
|
|
112
114
|
before_install_script = "#{build_dir}/unix-like/pre_install.sh"
|
113
|
-
after_install_script
|
114
|
-
before_remove_script
|
115
|
-
after_remove_script
|
115
|
+
after_install_script = "#{build_dir}/unix-like/post_install.sh"
|
116
|
+
before_remove_script = "#{build_dir}/unix-like/pre_uninstall.sh"
|
117
|
+
after_remove_script = "#{build_dir}/unix-like/post_uninstall.sh"
|
116
118
|
|
117
119
|
`rm -rf #{build_dir}` if File.exist?("#{build_dir}")
|
118
120
|
Dir.mkdir("#{build_dir}")
|
119
121
|
Dir.mkdir("#{build_dir}/unix-like")
|
120
122
|
|
121
123
|
# Copy all necessary Files into the build_dir
|
122
|
-
Dir.chdir(File.expand_path(File.dirname(__FILE__)))
|
123
124
|
system("cp install.sh Gemfile Gemfile.lock #{build_dir}")
|
124
125
|
system("cp -r installer/unix-like/*.sh #{build_dir}/unix-like")
|
125
126
|
system("cp -r installer/unix-like/*.rb #{build_dir}/unix-like")
|
@@ -145,6 +146,7 @@ def build_pkg(dist, arch, deps, use_bench_tarball=false)
|
|
145
146
|
system(fpm_cmd)
|
146
147
|
# Leave no trace...
|
147
148
|
system("rm -rf #{build_dir}")
|
149
|
+
Dir.chdir(start_dir)
|
148
150
|
end
|
149
151
|
|
150
152
|
DEB_DEPS = [
|
@@ -183,7 +185,7 @@ end
|
|
183
185
|
|
184
186
|
begin
|
185
187
|
require 'jasmine'
|
186
|
-
load '
|
188
|
+
load 'tasks/jasmine.rake'
|
187
189
|
rescue LoadError
|
188
190
|
task :jasmine do
|
189
191
|
abort "Jasmine is not available. In order to run jasmine, you must: (sudo) gem install jasmine"
|
@@ -13,6 +13,6 @@ Execute.define_task do
|
|
13
13
|
exit
|
14
14
|
end
|
15
15
|
puts ''
|
16
|
-
|
16
|
+
RestClient.post("#{$url}/api/user/create_user", { :api_token => $token, :attributes => {:login => login, :password => password}})
|
17
17
|
end #create_user
|
18
18
|
end #do
|
@@ -4,6 +4,6 @@ Execute.define_task do
|
|
4
4
|
invoke :config
|
5
5
|
user_id = ask "device's user_id: "
|
6
6
|
device_id = ask "device to delete: "
|
7
|
-
|
7
|
+
RestClient.post("#{$url}/api/client/delete_client", { :api_token => $token, :user_id => user_id, :client_id => device_id})
|
8
8
|
end #delete_device
|
9
9
|
end #do
|
@@ -3,6 +3,6 @@ desc "delete-user", "Deletes a user from rhoconnect"
|
|
3
3
|
def delete_user
|
4
4
|
invoke :config
|
5
5
|
login = ask "user to delete: "
|
6
|
-
|
6
|
+
RestClient.post("#{$url}/api/user/delete_user", { :api_token => $token, :user_id => login })
|
7
7
|
end #delete_user
|
8
8
|
end #do
|
@@ -14,7 +14,7 @@ desc "get-token", "Fetches current api token from rhoconnect"
|
|
14
14
|
end
|
15
15
|
puts ''
|
16
16
|
begin
|
17
|
-
$token =
|
17
|
+
$token = RestClient.post("#{$url}/api/admin/login", { :login => login, :password => password})
|
18
18
|
rescue
|
19
19
|
puts "Login failed."
|
20
20
|
exit
|
data/commands/execute.rb
CHANGED
data/doc/bulk-sync.txt
CHANGED
@@ -73,6 +73,37 @@ By default, bulk sync data files will be stored in the application's root folder
|
|
73
73
|
:syncserver: http://localhost:9292/application/
|
74
74
|
:bulk_sync_poll_interval: 3600
|
75
75
|
|
76
|
+
## Bulk Sync Associations
|
77
|
+
|
78
|
+
Sometimes your bulk data is not simply a collection of separate sources, but they are linked together through associations. For these purposes
|
79
|
+
RhoConnect uses the notation of `belongs_to` association. The `belongs_to` association is a natural way to express hasOne and hasMany associations. In the case of bulk sync, data `belongs_to` relationship includes a list of all dependent objects for model(s) and helps resolve dependency issues during bulk sync process.
|
80
|
+
|
81
|
+
Associations are defined in your RhoConnect application's `settings/settings.yml` file.
|
82
|
+
|
83
|
+
For example, you can have a list of customers who have purchased a product, and thus you can have them belong to that product:
|
84
|
+
|
85
|
+
:::yaml
|
86
|
+
:sources:
|
87
|
+
:Product:
|
88
|
+
:poll_interval: 600
|
89
|
+
:partition_type: app
|
90
|
+
:sync_type: bulk_sync_only
|
91
|
+
:Customer:
|
92
|
+
:poll_interval: 300
|
93
|
+
# ...
|
94
|
+
belongs_to:
|
95
|
+
- :product_id: 'Product'
|
96
|
+
|
97
|
+
`belongs_to` format is an array of attribute/source_name pairs. It can be polymorphic and define associations across multiple sources:
|
98
|
+
|
99
|
+
:::yaml
|
100
|
+
belongs_to:
|
101
|
+
- :parent_id, 'Product'
|
102
|
+
- :parent_id, 'Cases'
|
103
|
+
|
104
|
+
Bulk Sync Associations are similar to [Rhom Sync Associations](/rhodes/rhom#associations) and both should be considered together
|
105
|
+
if you are planning to use bulk sync data.
|
106
|
+
|
76
107
|
## Using Bulk Sync with Fixed Schema Models
|
77
108
|
|
78
109
|
If your Rhom model is a [fixed schema model](/rhodes/rhom#fixed-schema) and you use bulk sync, you can control the bulk sync schema at runtime in your source adapter by implementing the 'schema' method.
|
@@ -99,4 +130,7 @@ An example schema method is as follows:
|
|
99
130
|
'by_price' => 'price'
|
100
131
|
}
|
101
132
|
}.to_json
|
102
|
-
end
|
133
|
+
end
|
134
|
+
|
135
|
+
**NOTE: Key `version` is mandatory and should be always defined in schema method. You need update `version` value only in the case of schema changes.**
|
136
|
+
|
data/doc/install.txt
CHANGED
@@ -1,8 +1,10 @@
|
|
1
1
|
# Installing RhoConnect
|
2
2
|
|
3
|
-
|
3
|
+
This section discusses how to install the development environment for RhoConnect. For those who have developed a RhoConnect application, and now wish to deploy that RhoConnect application on a server, refer to the instructions for deploying a RhoConnect application, such as [preparing a RhoConnect app for production](/rhoconnect/preparing-production) and [deploying a RhoConnect application](/rhoconnect/deploying).
|
4
4
|
|
5
|
-
On
|
5
|
+
On Windows and Mac OS, the usual way to install the RhoConnect development environment is to install RhoStudio.
|
6
|
+
|
7
|
+
On Linux, you install the RhoConnect gem from the command line; you can also do this from Windows or Mac OS.
|
6
8
|
|
7
9
|
## Mac OS
|
8
10
|
|
@@ -22,7 +24,9 @@ You can also install RhoConnect without RhoStudio by [installing Ruby and the Rh
|
|
22
24
|
|
23
25
|
If you're running Windows 32-bit, download the latest [RhoStudio Installer for Windows](http://rhomobile.com/rhostudio-windows). This installs the [Ruby stack](http://www.ruby-lang.org/en/), [Redis](http://redis.io/), [RhoConnect](/rhoconnect/introduction), and [Rhodes](/rhodes/introduction).
|
24
26
|
|
25
|
-
If you are running Windows 64-bit, you need to
|
27
|
+
If you are running Windows 64-bit, you need to use 32-bit Java when you run RhoStudio. You can include the 32-bit Java in the PATH, or you can run RhoStudio with a link to 32-bit Java:
|
28
|
+
|
29
|
+
C:\RhoStudio\eclipse\RhoStudio.exe -vm "<32-bit java path>\bin\javaw.exe"
|
26
30
|
|
27
31
|
## Java Development Kit (JDK)
|
28
32
|
|
data/examples/simple/config.ru
CHANGED
data/install.sh
CHANGED
@@ -200,10 +200,10 @@ logAndPrint ()
|
|
200
200
|
setRubyVars ()
|
201
201
|
{
|
202
202
|
if [[ $rubyVersion == "" || $rubyVersion =~ ruby'ee'|'enterprise' ]]; then
|
203
|
-
rubyVersion="ruby-1.9.3-
|
204
|
-
rubyDir="ruby-1.9.3-
|
203
|
+
rubyVersion="ruby-1.9.3-p194"
|
204
|
+
rubyDir="ruby-1.9.3-p194"
|
205
205
|
rubyTar="${rubyDir}.tar.gz"
|
206
|
-
# http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-
|
206
|
+
# http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p194.tar.gz
|
207
207
|
rubyURL="http://ftp.ruby-lang.org/pub/ruby/1.9/${rubyTar}"
|
208
208
|
elif [$rubyVersion == "ruby187"]; then
|
209
209
|
rubyDir="ruby-1.8.7"
|
@@ -234,7 +234,7 @@ installRuby ()
|
|
234
234
|
# rubyee)
|
235
235
|
# logAndPrint "${prefix}/${rubyDir}/installer --dont-install-useful-gems --no-dev-docs --auto ${prefix}"
|
236
236
|
# ;;
|
237
|
-
ruby-1.9.3-
|
237
|
+
ruby-1.9.3-p194)
|
238
238
|
(
|
239
239
|
echo "cd ${prefix}/${rubyDir}" | tee -a $log
|
240
240
|
cd ${prefix}/${rubyDir}
|
@@ -373,11 +373,10 @@ _NGINX_CONF_
|
|
373
373
|
Dir.mkdir "/opt/nginx/conf/conf.d" unless File.exist? "/opt/nginx/conf/conf.d"
|
374
374
|
rho_vhost_conf = <<_VHOST_CONF_
|
375
375
|
upstream thin_cluster {
|
376
|
-
server unix:/tmp/thin.sock;
|
377
|
-
|
378
|
-
|
379
|
-
|
380
|
-
#server unix:/tmp/thin.3.sock;
|
376
|
+
server unix:/tmp/thin.0.sock;
|
377
|
+
server unix:/tmp/thin.1.sock;
|
378
|
+
# server unix:/tmp/thin.2.sock;
|
379
|
+
# server unix:/tmp/thin.3.sock;
|
381
380
|
}
|
382
381
|
|
383
382
|
server {
|
@@ -479,15 +478,21 @@ def nginx_readme
|
|
479
478
|
- Nginx start-up script (/etc/init.d/nginx)
|
480
479
|
- Nginx logrotate settings (/etc/logrotate.d/nginx)
|
481
480
|
- Nginx configuration file (/opt/nginx/conf/nginx.conf)
|
482
|
-
-
|
483
|
-
(/opt/nginx/conf/conf.d/
|
481
|
+
- virtual host template for rhoconnect application
|
482
|
+
(/opt/nginx/conf/conf.d/rhoconnect.conf)
|
484
483
|
|
485
|
-
To
|
484
|
+
To change default setup of web server
|
486
485
|
A) Configure virtual host for rhoconnect application:
|
487
486
|
Edit the file /opt/nginx/conf/conf.d/rhoconnect.conf so that it reflects your specifications.
|
488
|
-
|
489
487
|
B) As root user start server to pick up the changes:
|
490
488
|
/etc/init.d/nginx start
|
489
|
+
|
490
|
+
5) Installer also configured Thin app server with the following configuration files:
|
491
|
+
- Thin start-up script (/etc/init.d/thin)
|
492
|
+
- Thin configuration file (/etc/thin/rhoapp.yml)
|
493
|
+
|
494
|
+
By default, init script start cluster of 2 servers running on UNIX domain sockets.
|
495
|
+
Nginx connected to cluster via upstream block in nginx config file.
|
491
496
|
_NGINX_README_
|
492
497
|
readme
|
493
498
|
end
|
@@ -525,25 +530,20 @@ end
|
|
525
530
|
|
526
531
|
def config_and_install_thin_scripts(rho_path)
|
527
532
|
puts "Configuring and installing thin scripts ..."
|
528
|
-
|
529
|
-
|
530
|
-
|
531
|
-
|
532
|
-
|
533
|
-
|
534
|
-
|
535
|
-
|
536
|
-
|
537
|
-
|
538
|
-
|
539
|
-
|
540
|
-
|
541
|
-
|
542
|
-
# sudo rc-update add thin default
|
543
|
-
#
|
544
|
-
# Then put your config files in /etc/thin
|
545
|
-
|
546
|
-
`#{rho_path}/bin/thin config -C /etc/thin/rhoapp.yml -c /opt/nginx/html/rhoapp/ --socket /tmp/thin.sock --log /opt/nginx/logs/thin.log --pid /var/run/thin.pid -e production`
|
533
|
+
`env PATH=#{rho_path}/bin:$PATH thin install`
|
534
|
+
# >> Installing thin service at /etc/rc.d/thin (RedHat) or /etc/init.d/thin (Ubuntu) ...
|
535
|
+
|
536
|
+
thin_conf_file = (File.exists?('/etc/init.d/thin')) ? "/etc/init.d/thin" : "/etc/rc.d/thin"
|
537
|
+
File.open("/tmp/thin", 'w') do |f|
|
538
|
+
File.foreach(thin_conf_file) do |line|
|
539
|
+
f << "export PATH=/opt/rhoconnect/bin:$PATH" << "\n" if line =~ /^DAEMON/
|
540
|
+
f << line
|
541
|
+
end
|
542
|
+
end
|
543
|
+
File.rename("/tmp/thin", thin_conf_file)
|
544
|
+
`chmod +x #{thin_conf_file}`
|
545
|
+
|
546
|
+
`env PATH=#{rho_path}/bin:$PATH thin config -C /etc/thin/rhoapp.yml -c /opt/nginx/html/rhoapp/ --socket /tmp/thin.sock --servers 2 --log /opt/nginx/logs/thin.log --pid /var/run/thin.pid -e production`
|
547
547
|
`ln -s /etc/rc.d/thin /etc/init.d/.` if File.directory?('/etc/rc.d')
|
548
548
|
end
|
549
549
|
|
@@ -593,18 +593,18 @@ _IT_SHOULD_BE_DONE_
|
|
593
593
|
/etc/init.d/redis start
|
594
594
|
/etc/init.d/nginx start
|
595
595
|
B) To verify that application up and running open web console in your browser:
|
596
|
-
http://
|
596
|
+
http://server_ip_address
|
597
597
|
|
598
598
|
_NGINX_TO_DO_
|
599
599
|
else
|
600
600
|
server_todo_list = <<_NGINX_TO_DO_
|
601
601
|
2) Try rhoconnect 'rhoapp' application, created in /opt/nginx/html directory
|
602
|
-
A) As root user start redis and
|
602
|
+
A) As root user start redis, nginx and thin servers:
|
603
603
|
/etc/init.d/redis start
|
604
604
|
/etc/init.d/nginx start
|
605
605
|
/etc/init.d/thin start
|
606
606
|
B) Open RhoConnect application web console in your browser:
|
607
|
-
http://
|
607
|
+
http://server_ip_address
|
608
608
|
|
609
609
|
_NGINX_TO_DO_
|
610
610
|
end
|
@@ -14,12 +14,11 @@ if [ -e "/etc/init.d/redis" ]; then
|
|
14
14
|
fi
|
15
15
|
|
16
16
|
#stop thin
|
17
|
-
|
17
|
+
[ "$(ps aux | grep '[t]hin')" ] && [ -e "/etc/init.d/thin" ] && /etc/init.d/thin stop
|
18
18
|
|
19
19
|
#stop nginx
|
20
|
-
|
20
|
+
[ "$(ps aux | grep '[n]ginx')" ] && [ -e "/etc/init.d/nginx" ] && /etc/init.d/nginx stop
|
21
21
|
|
22
|
-
#/etc/logrotate.d/redis
|
23
22
|
rm -f /etc/init.d/redis
|
24
23
|
rm -f /etc/logrotate.d/redis
|
25
24
|
|
@@ -8,10 +8,10 @@ module Constants
|
|
8
8
|
"libaprutil1-dev",
|
9
9
|
"dtach"]
|
10
10
|
|
11
|
-
RUBY = "ruby-1.9.3-
|
12
|
-
REDIS = "redis-2.4.
|
11
|
+
RUBY = "ruby-1.9.3-p194"
|
12
|
+
REDIS = "redis-2.4.12"
|
13
13
|
SQLITE3 = "sqlite-autoconf-3071000"
|
14
|
-
NGINX = "nginx-1.0
|
14
|
+
NGINX = "nginx-1.2.0"
|
15
15
|
PASSENGER_ROOT = "/opt/rhoconnect/lib/ruby/gems/1.9.1/gems/passenger"
|
16
16
|
|
17
17
|
SOFTWARE = [ REDIS, SQLITE3, RUBY, NGINX ]
|
@@ -9,8 +9,6 @@ class Debian
|
|
9
9
|
def initialize(options)
|
10
10
|
@@flavor = "Debian"
|
11
11
|
@options = options
|
12
|
-
@options[:pkg_mgr] = 'apt-get -y'
|
13
|
-
@options[:pkg_chkr] = 'dpkg -l'
|
14
12
|
end #initialize
|
15
13
|
|
16
14
|
# check_for_installed_software_only
|
@@ -35,9 +33,6 @@ class Debian
|
|
35
33
|
# Install sqlite3 libs
|
36
34
|
install_sqlite
|
37
35
|
|
38
|
-
# Look for sqlite3-dev as it is required by the sqlite3 gem
|
39
|
-
`#{@options[:pkg_mgr]} install libsqlite3-dev` if `#{@options[:pkg_chkr]} | grep libsqlite3-dev`.empty?
|
40
|
-
|
41
36
|
#start installing
|
42
37
|
install_all_gems
|
43
38
|
configure_nginx @options
|
@@ -9,8 +9,6 @@ class Yum
|
|
9
9
|
def initialize(options)
|
10
10
|
@@flavor = "Yum"
|
11
11
|
@options = options
|
12
|
-
@options[:pkg_mgr] = 'yes | yum'
|
13
|
-
@options[:pkg_chkr] = 'rpm -qa'
|
14
12
|
end #initialize
|
15
13
|
|
16
14
|
# check_for_installed_software_only
|
@@ -31,7 +29,7 @@ class Yum
|
|
31
29
|
# ruby gems is installed by the REE installer
|
32
30
|
# install_rubygems
|
33
31
|
install_redis if @options[:redis]
|
34
|
-
# Cent OS uses obsolete sqlite3 libs, update them the latest ones
|
32
|
+
# Cent OS 5.x uses obsolete sqlite3 libs, update them the latest ones
|
35
33
|
install_sqlite
|
36
34
|
|
37
35
|
#start installing
|
@@ -12,14 +12,14 @@ module Constants
|
|
12
12
|
PEM_FILE = 'jenkinskey.pem'
|
13
13
|
SSH_KEY = "#{HOME_DIR}/.ssh/#{PEM_FILE}"
|
14
14
|
ACCESS_KEY_FILE = "#{HOME_DIR}/.ec2"
|
15
|
-
UBUNTU_STACK = { :image_id => 'ami-
|
15
|
+
UBUNTU_STACK = { :image_id => 'ami-938ed5d6',
|
16
16
|
:flavor_id => 'c1.xlarge',
|
17
17
|
:key_name => 'jenkinskey',
|
18
18
|
:groups => 'load-test',
|
19
19
|
:user => 'ubuntu'}
|
20
20
|
|
21
|
-
CENTOS_STACK = { :image_id => 'ami-
|
22
|
-
:flavor_id => 'c1.
|
21
|
+
CENTOS_STACK = { :image_id => 'ami-178dd652',
|
22
|
+
:flavor_id => 'c1.xlarge',
|
23
23
|
:key_name => 'jenkinskey',
|
24
24
|
:groups => 'load-test',
|
25
25
|
:user => 'root'}
|
@@ -41,4 +41,4 @@ module Constants
|
|
41
41
|
"pcre-devel",
|
42
42
|
"openssl-devel",
|
43
43
|
"readline-devel" ]
|
44
|
-
end #Constants
|
44
|
+
end #Constants
|