rhoconnect 3.4.5 → 4.0.0.beta.10
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG.md +57 -3
- data/Gemfile +9 -7
- data/Gemfile.lock +37 -37
- data/Rakefile +18 -7
- data/bench/benchapp/Gemfile +1 -1
- data/bench/benchapp/config.ru +0 -3
- data/bench/benchapp/controllers/ruby/application.rb +17 -0
- data/bench/benchapp/controllers/ruby/application_controller.rb +17 -0
- data/bench/benchapp/controllers/ruby/mock_adapter_controller.rb +8 -0
- data/bench/benchapp/controllers/ruby/queue_mock_adapter_controller.rb +8 -0
- data/bench/benchapp/{sources → models/ruby}/mock_adapter.rb +1 -1
- data/bench/benchapp/{sources → models/ruby}/queue_mock_adapter.rb +0 -0
- data/bench/benchapp/spec/{sources → models/ruby}/mock_adapter_spec.rb +1 -1
- data/bench/benchapp/spec/{sources → models/ruby}/queue_mock_adapter_spec.rb +1 -1
- data/bench/benchapp/spec/spec_helper.rb +2 -2
- data/bench/blobapp/Gemfile +1 -1
- data/bench/blobapp/config.ru +0 -3
- data/bench/blobapp/controllers/ruby/application_controller.rb +17 -0
- data/bench/blobapp/controllers/ruby/blob_adapter_controller.rb +8 -0
- data/bench/blobapp/{sources → models/ruby}/blob_adapter.rb +9 -2
- data/bench/blobapp/spec/{sources → models/ruby}/blob_adapter_spec.rb +1 -1
- data/bench/blobapp/spec/spec_helper.rb +1 -1
- data/bench/lib/bench/cli.rb +1 -1
- data/bench/scripts/blob_cud_script.rb +1 -1
- data/bench/scripts/query_md_script.rb +1 -1
- data/bench/scripts/query_only_script.rb +1 -1
- data/bench/scripts/query_script.rb +1 -1
- data/bench/scripts/test_query_script.rb +7 -1
- data/bench/spec/mock_adapter_spec.rb +1 -1
- data/bench/spec/result_spec.rb +3 -3
- data/bin/rhoconnect +5 -3
- data/commands/dtach/dtach_install.rb +2 -2
- data/commands/execute.rb +8 -3
- data/commands/generators/app.rb +3 -3
- data/commands/generators/controller.rb +6 -0
- data/commands/generators/model.rb +6 -0
- data/commands/generators/source.rb +3 -3
- data/commands/generators/update.rb +1 -1
- data/commands/redis/redis_about.rb +2 -2
- data/commands/redis/redis_download.rb +1 -1
- data/commands/redis/redis_install.rb +4 -3
- data/commands/redis/redis_restart.rb +4 -4
- data/commands/redis/redis_start.rb +5 -4
- data/commands/redis/redis_startbg.rb +5 -4
- data/commands/redis/redis_status.rb +13 -0
- data/commands/redis/redis_stop.rb +3 -3
- data/commands/rhoconnect/config.rb +28 -16
- data/commands/rhoconnect/flushdb.rb +1 -2
- data/commands/rhoconnect/get_token.rb +15 -11
- data/commands/rhoconnect/restart.rb +13 -5
- data/commands/rhoconnect/set_admin_password.rb +8 -8
- data/commands/rhoconnect/start.rb +74 -16
- data/commands/rhoconnect/startbg.rb +1 -1
- data/commands/rhoconnect/startdebug.rb +1 -1
- data/commands/rhoconnect/stop.rb +13 -1
- data/commands/rhoconnect/web.rb +5 -5
- data/commands/rhoconnect_console/console.rb +7 -5
- data/commands/{rhoconnect → rhoconnect_spec}/spec.rb +0 -0
- data/commands/rhoconnect_war/war.rb +9 -9
- data/commands/utilities/blank_app.ru +56 -0
- data/commands/utilities/redis_runner.rb +54 -19
- data/doc/authentication.txt +80 -6
- data/doc/blob-sync.txt +104 -97
- data/doc/bulk-sync.txt +1 -1
- data/doc/client-java.txt +3 -3
- data/doc/client-objc.txt +2 -2
- data/doc/client.txt +4 -4
- data/doc/command-line.txt +105 -200
- data/doc/data-partitioning.txt +40 -0
- data/doc/deploying.txt +249 -77
- data/doc/extending-rhoconnect-server.txt +40 -57
- data/doc/heroku-addon.txt +2 -0
- data/doc/install.txt +45 -95
- data/doc/introduction.txt +1 -1
- data/doc/java-plugin.txt +365 -190
- data/doc/metadata.txt +1 -1
- data/doc/migration.txt +108 -142
- data/doc/preparing-production.txt +1 -1
- data/doc/push-backend-setup.txt +2 -0
- data/doc/push-client-setup-android.txt +78 -0
- data/doc/push-client-setup-bb.txt +81 -0
- data/doc/push-client-setup-ios.txt +70 -0
- data/doc/push-client-setup-rps.txt +200 -0
- data/doc/push-client-setup.txt +63 -66
- data/doc/push-server-setup.txt +67 -40
- data/doc/push-testing.txt +29 -0
- data/doc/push.txt +21 -6
- data/doc/rest-api.txt +128 -55
- data/doc/rhoconnect-redis-stack.txt +120 -0
- data/doc/settings.txt +4 -12
- data/doc/source-adapters-intro.txt +28 -0
- data/doc/source-adapters.txt +235 -272
- data/doc/stats-middleware.txt +9 -29
- data/doc/supported-platforms.txt +21 -30
- data/doc/testing.txt +40 -42
- data/doc/tutorial.txt +72 -57
- data/examples/simple/Gemfile +1 -1
- data/examples/simple/application.rb +4 -5
- data/examples/simple/my_server.rb +2 -2
- data/examples/simple/settings/settings.yml +1 -1
- data/generators/rhoconnect.rb +151 -50
- data/generators/templates/application/Gemfile +1 -1
- data/generators/templates/application/Rakefile +3 -3
- data/generators/templates/application/config.ru +1 -4
- data/generators/templates/application/controllers/application_controller.rb +17 -0
- data/generators/templates/application/controllers/js/application_controller.js +14 -0
- data/generators/templates/application/controllers/ruby/application_controller.rb +17 -0
- data/generators/templates/application/package.json +8 -0
- data/generators/templates/application/rcgemfile +2 -5
- data/generators/templates/application/settings/settings.yml +3 -3
- data/generators/templates/application/spec/application_controller_spec.rb +23 -0
- data/generators/templates/application/spec/js_spec.rb +25 -0
- data/generators/templates/application/spec/spec_helper.rb +21 -7
- data/generators/templates/source/controllers/js/controller.js +7 -0
- data/generators/templates/source/controllers/ruby/controller.rb +8 -0
- data/generators/templates/source/controllers/ruby/controller_spec.rb +27 -0
- data/generators/templates/source/models/js/model.js +46 -0
- data/generators/templates/source/{source_adapter.rb → models/ruby/model.rb} +15 -10
- data/generators/templates/source/{source_spec.rb → models/ruby/model_spec.rb} +1 -1
- data/install.sh +5 -5
- data/installer/unix-like/create_texts.rb +2 -2
- data/installer/unix-like/rho_connect_install_constants.rb +2 -2
- data/installer/unix-like/rho_connect_install_utilities.rb +1 -1
- data/installer/utils/constants.rb +4 -4
- data/js-adapters/ballroom.js +216 -0
- data/js-adapters/node.rb +52 -0
- data/js-adapters/node_channel.rb +181 -0
- data/js-adapters/request.js +27 -0
- data/js-adapters/response.js +57 -0
- data/js-adapters/rhoconnect_helpers.js +60 -0
- data/js-adapters/router.js +60 -0
- data/js-adapters/server.js +5 -0
- data/lib/rhoconnect/api/app/ans_login.rb +3 -3
- data/lib/rhoconnect/api/app/bulk_data.rb +10 -10
- data/lib/rhoconnect/api/app/fast_delete.rb +11 -10
- data/lib/rhoconnect/api/app/fast_insert.rb +11 -10
- data/lib/rhoconnect/api/app/fast_update.rb +11 -10
- data/lib/rhoconnect/api/app/login.rb +5 -5
- data/lib/rhoconnect/api/app/push_deletes.rb +12 -11
- data/lib/rhoconnect/api/app/push_objects.rb +12 -11
- data/lib/rhoconnect/api/app/query.rb +8 -7
- data/lib/rhoconnect/api/app/queue_updates.rb +98 -94
- data/lib/rhoconnect/api/app/search.rb +8 -7
- data/lib/rhoconnect/api/client/client_get_db_doc.rb +5 -5
- data/lib/rhoconnect/api/client/client_set_db_doc.rb +8 -8
- data/lib/rhoconnect/api/client/create.rb +7 -7
- data/lib/rhoconnect/api/client/get_client_params.rb +4 -4
- data/lib/rhoconnect/api/client/list_client_docs.rb +17 -17
- data/lib/rhoconnect/api/client/register.rb +12 -12
- data/lib/rhoconnect/api/client/reset.rb +5 -5
- data/lib/rhoconnect/api/readstate/set_refresh_time.rb +9 -9
- data/lib/rhoconnect/api/source/get_source_params.rb +4 -4
- data/lib/rhoconnect/api/source/list_sources.rb +16 -16
- data/lib/rhoconnect/api/source/update_source_params.rb +6 -6
- data/lib/rhoconnect/api/store/get_db_doc.rb +4 -4
- data/lib/rhoconnect/api/store/set_db_doc.rb +7 -7
- data/lib/rhoconnect/api/system/get_adapter.rb +4 -4
- data/lib/rhoconnect/api/system/get_license_info.rb +8 -8
- data/lib/rhoconnect/api/system/login.rb +15 -15
- data/lib/rhoconnect/api/system/reset.rb +11 -11
- data/lib/rhoconnect/api/system/save_adapter.rb +4 -4
- data/lib/rhoconnect/api/system/stats.rb +22 -22
- data/lib/rhoconnect/api/user/create_user.rb +7 -7
- data/lib/rhoconnect/api/user/delete_client.rb +6 -6
- data/lib/rhoconnect/api/user/delete_user.rb +11 -10
- data/lib/rhoconnect/api/user/list_clients.rb +4 -4
- data/lib/rhoconnect/api/user/list_source_docs.rb +10 -10
- data/lib/rhoconnect/api/user/list_users.rb +3 -3
- data/lib/rhoconnect/api/user/ping.rb +3 -3
- data/lib/rhoconnect/api/user/show_user.rb +3 -3
- data/lib/rhoconnect/api/user/update_user.rb +5 -5
- data/lib/rhoconnect/api/user/user_get_db_doc.rb +5 -5
- data/lib/rhoconnect/api/user/user_set_db_doc.rb +10 -10
- data/lib/rhoconnect/api_token.rb +5 -6
- data/lib/rhoconnect/app.rb +6 -46
- data/lib/rhoconnect/application/init.rb +5 -2
- data/lib/rhoconnect/async.rb +76 -39
- data/lib/rhoconnect/bulk_data/bulk_data.rb +6 -4
- data/lib/rhoconnect/client.rb +59 -9
- data/lib/rhoconnect/condition/admin_required.rb +27 -0
- data/lib/rhoconnect/condition/client_required.rb +50 -0
- data/lib/rhoconnect/condition/login_required.rb +22 -0
- data/lib/rhoconnect/condition/source_required.rb +49 -0
- data/lib/rhoconnect/condition/verbs.rb +17 -0
- data/lib/rhoconnect/condition/verify_success.rb +19 -0
- data/lib/rhoconnect/controller/app_base.rb +74 -0
- data/lib/rhoconnect/controller/base.rb +68 -0
- data/lib/rhoconnect/controller/clients_controller.rb +79 -0
- data/lib/rhoconnect/controller/dynamic_adapter_controller.rb +93 -0
- data/lib/rhoconnect/controller/js_base.rb +124 -0
- data/lib/rhoconnect/controller/read_state_controller.rb +22 -0
- data/lib/rhoconnect/controller/source_adapter_base.rb +14 -0
- data/lib/rhoconnect/controller/sources_controller.rb +44 -0
- data/lib/rhoconnect/controller/store_controller.rb +25 -0
- data/lib/rhoconnect/controller/system_controller.rb +67 -0
- data/lib/rhoconnect/controller/users_controller.rb +99 -0
- data/lib/rhoconnect/db_adapter.rb +1 -3
- data/lib/rhoconnect/document.rb +159 -50
- data/lib/rhoconnect/handler/authenticate/execute_methods.rb +77 -0
- data/lib/rhoconnect/handler/authenticate/runner.rb +49 -0
- data/lib/rhoconnect/handler/authenticate.rb +3 -0
- data/lib/rhoconnect/handler/bulk_data.rb +28 -0
- data/lib/rhoconnect/handler/changes/engine.rb +271 -0
- data/lib/rhoconnect/handler/changes/execute_methods.rb +88 -0
- data/lib/rhoconnect/handler/changes/pass_through_runner.rb +11 -0
- data/lib/rhoconnect/handler/changes/runner.rb +53 -0
- data/lib/rhoconnect/handler/changes.rb +31 -0
- data/lib/rhoconnect/handler/helpers/auth_method.rb +29 -0
- data/lib/rhoconnect/handler/helpers/binding.rb +18 -0
- data/lib/rhoconnect/handler/helpers/bulk_data.rb +53 -0
- data/lib/rhoconnect/handler/helpers/source_job.rb +14 -0
- data/lib/rhoconnect/handler/helpers.rb +4 -0
- data/lib/rhoconnect/handler/plugin_callbacks/execute_methods.rb +99 -0
- data/lib/rhoconnect/handler/plugin_callbacks/runner.rb +28 -0
- data/lib/rhoconnect/handler/plugin_callbacks.rb +67 -0
- data/lib/rhoconnect/handler/query/engine.rb +93 -0
- data/lib/rhoconnect/handler/query/execute_methods.rb +21 -0
- data/lib/rhoconnect/handler/query/pass_through_runner.rb +35 -0
- data/lib/rhoconnect/handler/query/runner.rb +270 -0
- data/lib/rhoconnect/handler/query.rb +19 -0
- data/lib/rhoconnect/handler/search/engine.rb +60 -0
- data/lib/rhoconnect/handler/search/execute_methods.rb +32 -0
- data/lib/rhoconnect/handler/search/pass_through_runner.rb +18 -0
- data/lib/rhoconnect/handler/search/runner.rb +104 -0
- data/lib/rhoconnect/handler/search.rb +26 -0
- data/lib/rhoconnect/handler/sync.rb +29 -0
- data/lib/rhoconnect/jobs/source_job.rb +13 -4
- data/lib/rhoconnect/js_adapter.rb +79 -0
- data/lib/rhoconnect/license.rb +10 -2
- data/lib/rhoconnect/middleware/current_user.rb +14 -1
- data/lib/rhoconnect/middleware/helpers.rb +10 -93
- data/lib/rhoconnect/middleware/x_domain_session_wrapper.rb +1 -1
- data/lib/rhoconnect/model/base.rb +229 -0
- data/lib/rhoconnect/model/dynamic_adapter_model.rb +90 -0
- data/lib/rhoconnect/model/js_base.rb +121 -0
- data/lib/rhoconnect/ping/android.rb +1 -1
- data/lib/rhoconnect/predefined_adapters/bench_adapter.rb +7 -4
- data/lib/rhoconnect/read_state.rb +3 -3
- data/lib/rhoconnect/server.rb +159 -190
- data/lib/rhoconnect/source.rb +100 -11
- data/lib/rhoconnect/stats/record.rb +10 -10
- data/lib/rhoconnect/store.rb +905 -591
- data/lib/rhoconnect/{model.rb → store_orm.rb} +53 -115
- data/lib/rhoconnect/tasks.rb +18 -4
- data/lib/rhoconnect/test_methods.rb +30 -17
- data/lib/rhoconnect/user.rb +35 -17
- data/lib/rhoconnect/utilities.rb +1 -1
- data/lib/rhoconnect/version.rb +2 -2
- data/lib/rhoconnect/web-console/server.rb +29 -14
- data/lib/rhoconnect/web-console/views/home.js +10 -10
- data/lib/rhoconnect/web-console/views/new_ping.js +1 -1
- data/lib/rhoconnect.rb +120 -51
- data/rhoconnect.gemspec +4 -3
- data/spec/api/api_helper.rb +1 -6
- data/spec/api/app/fast_delete_spec.rb +4 -4
- data/spec/api/app/fast_insert_spec.rb +4 -4
- data/spec/api/app/fast_update_spec.rb +8 -8
- data/spec/api/app/push_deletes_spec.rb +2 -2
- data/spec/api/app/push_objects_spec.rb +5 -5
- data/spec/api/client/client_get_db_doc_spec.rb +6 -4
- data/spec/api/client/client_set_db_doc_spec.rb +3 -2
- data/spec/api/client/get_client_params_spec.rb +14 -0
- data/spec/api/client/list_client_docs_spec.rb +30 -20
- data/spec/api/client/reset_spec.rb +36 -0
- data/spec/api/source/get_source_params_spec.rb +23 -17
- data/spec/api/system/get_license_info_spec.rb +0 -20
- data/spec/api/system/login_spec.rb +8 -0
- data/spec/api/system/reset_spec.rb +0 -1
- data/spec/api/system/stats_spec.rb +5 -5
- data/spec/api/user/create_user_spec.rb +14 -6
- data/spec/api/user/delete_user_spec.rb +20 -18
- data/spec/api/user/list_users_spec.rb +5 -6
- data/spec/api/user/update_user_spec.rb +5 -4
- data/spec/apps/rhotestapp/config.ru +16 -1
- data/spec/apps/rhotestapp/controllers/js/js_sample_controller.js +23 -0
- data/spec/apps/rhotestapp/controllers/js/sample2_controller.js +32 -0
- data/spec/apps/rhotestapp/controllers/ruby/application_controller.rb +21 -0
- data/spec/apps/rhotestapp/controllers/ruby/sample_adapter_controller.rb +8 -0
- data/spec/apps/rhotestapp/models/js/js_sample.js +55 -0
- data/spec/apps/rhotestapp/models/js/sample2.js +25 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/base_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/fixed_schema_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/other_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/sample_adapter.rb +0 -0
- data/spec/apps/rhotestapp/{sources → models/ruby}/simple_adapter.rb +2 -2
- data/spec/apps/rhotestapp/{sources → models/ruby}/sub_adapter.rb +0 -0
- data/spec/apps/rhotestapp/settings/settings.yml +0 -1
- data/spec/bulk_data/bulk_data_spec.rb +20 -5
- data/spec/cli/cli_spec.rb +83 -0
- data/spec/client_spec.rb +20 -17
- data/spec/client_sync_spec.rb +244 -406
- data/spec/controllers/js_base_spec.rb +89 -0
- data/spec/doc/doc_spec.rb +18 -18
- data/spec/document_spec.rb +29 -13
- data/spec/dynamic_adapter_spec.rb +6 -6
- data/spec/generator/generator_spec.rb +7 -4
- data/spec/jobs/bulk_data_job_spec.rb +14 -10
- data/spec/jobs/source_job_spec.rb +8 -8
- data/spec/license_spec.rb +5 -2
- data/spec/models/js_model_spec.rb +39 -0
- data/spec/node_spec.rb +42 -0
- data/spec/perf/store_perf_spec.rb +67 -12
- data/spec/ping/android_spec.rb +1 -1
- data/spec/read_state_spec.rb +1 -1
- data/spec/rhoconnect_spec.rb +1 -1
- data/spec/server/cors_spec.rb +14 -18
- data/spec/server/server_spec.rb +265 -88
- data/spec/server/stats_spec.rb +1 -1
- data/spec/source_adapter_spec.rb +54 -27
- data/spec/source_spec.rb +8 -3
- data/spec/source_sync_spec.rb +538 -468
- data/spec/spec_helper.rb +35 -4
- data/spec/stats/record_spec.rb +10 -10
- data/spec/{model_spec.rb → store_orm_spec.rb} +56 -54
- data/spec/store_spec.rb +159 -179
- data/spec/support/shared_examples.rb +36 -27
- data/spec/sync_states_spec.rb +40 -33
- data/spec/test_methods_spec.rb +18 -14
- data/spec/user_spec.rb +17 -30
- metadata +156 -52
- data/bench/benchapp/application.rb +0 -39
- data/bench/blobapp/application.rb +0 -44
- data/commands/rhoconnect/clean_start.rb +0 -9
- data/commands/rhoconnect/create_user.rb +0 -18
- data/commands/rhoconnect/delete_device.rb +0 -9
- data/commands/rhoconnect/delete_user.rb +0 -8
- data/commands/rhoconnect/reset.rb +0 -16
- data/commands/rhoconnect/reset_refresh.rb +0 -11
- data/generators/templates/application/application.rb +0 -43
- data/lib/rhoconnect/client_sync.rb +0 -434
- data/lib/rhoconnect/dynamic_adapter.rb +0 -91
- data/lib/rhoconnect/middleware/admin_user.rb +0 -23
- data/lib/rhoconnect/middleware/current_request.rb +0 -16
- data/lib/rhoconnect/middleware/login_required.rb +0 -22
- data/lib/rhoconnect/source_adapter.rb +0 -132
- data/lib/rhoconnect/source_sync.rb +0 -464
- data/spec/apps/rhotestapp/application.rb +0 -23
data/bin/rhoconnect
CHANGED
@@ -1,14 +1,16 @@
|
|
1
|
-
#!/usr/bin/env ruby
|
1
|
+
#!/usr/bin/env ruby -W0
|
2
2
|
require 'rubygems'
|
3
|
+
|
3
4
|
begin
|
4
5
|
if File.exists?(File.join(Dir.pwd,'Gemfile'))
|
5
6
|
require 'bundler'
|
6
7
|
Bundler.require
|
7
8
|
end
|
8
9
|
$:.unshift File.join(File.dirname(__FILE__),'..')
|
10
|
+
$:.unshift File.join(File.dirname(__FILE__),'..','lib')
|
9
11
|
require 'templater'
|
10
12
|
require 'generators/rhoconnect'
|
11
|
-
require '
|
13
|
+
require 'rhoconnect'
|
12
14
|
require 'commands/execute'
|
13
15
|
|
14
16
|
Execute.start
|
@@ -21,6 +23,6 @@ rescue Exception => e
|
|
21
23
|
puts "See http://docs.rhomobile.com/rhoconnect/install#upgrading-an-existing-application about update details.\n\n"
|
22
24
|
else
|
23
25
|
puts "Run rhoconnect command error: #{e.inspect}"
|
26
|
+
puts e.backtrace.join("\n")
|
24
27
|
end
|
25
28
|
end
|
26
|
-
|
@@ -28,9 +28,9 @@ def fetch(uri_str, limit = 10)
|
|
28
28
|
end
|
29
29
|
|
30
30
|
Execute.define_task do
|
31
|
-
desc 'dtach-install', 'Install dtach
|
31
|
+
desc 'dtach-install', 'Install dtach program from sources'
|
32
32
|
def dtach_install
|
33
|
-
|
33
|
+
dtach_about
|
34
34
|
|
35
35
|
unless windows?
|
36
36
|
Dir.chdir('/tmp/')
|
data/commands/execute.rb
CHANGED
@@ -3,9 +3,7 @@
|
|
3
3
|
require 'rubygems'
|
4
4
|
require 'thor'
|
5
5
|
require 'json'
|
6
|
-
require 'zip/zip'
|
7
6
|
require 'uri'
|
8
|
-
require 'find'
|
9
7
|
$:.unshift File.join(File.dirname(__FILE__), '.')
|
10
8
|
$:.unshift File.join(File.dirname(__FILE__), '..')
|
11
9
|
require 'lib/rhoconnect/utilities'
|
@@ -15,6 +13,13 @@ require 'utilities/redis_runner'
|
|
15
13
|
|
16
14
|
include Utilities
|
17
15
|
|
16
|
+
settings_file = File.join(File.dirname(__FILE__), '..', 'generators', 'templates', 'application', 'settings', "settings.yml")
|
17
|
+
options = load_settings(settings_file)[Rhoconnect.environment]
|
18
|
+
RHOCONNECT_PORT = URI.parse(options[:syncserver]).port
|
19
|
+
REDIS_SERVER_URL = options[:redis]
|
20
|
+
PUSH_SERVER_URL = options[:push_server]
|
21
|
+
API_TOKEN = options[:api_token]
|
22
|
+
|
18
23
|
class Execute < Thor
|
19
24
|
no_tasks {
|
20
25
|
def self.define_task(&block)
|
@@ -34,7 +39,7 @@ class Execute < Thor
|
|
34
39
|
require 'bundler'
|
35
40
|
tasks << 'rhoconnect_spec' if Bundler.load.specs.find{ |s| s.name == 'rspec' }
|
36
41
|
end
|
37
|
-
|
42
|
+
|
38
43
|
tasks.each do |dir|
|
39
44
|
Dir.glob(File.join(File.dirname(__FILE__), "#{dir}", "*.rb")) do |file|
|
40
45
|
require file
|
data/commands/generators/app.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "app NAME", "
|
3
|
-
def app(name)
|
4
|
-
Rhoconnect.run_cli(Dir.pwd, '
|
2
|
+
desc "app NAME [options]", "Generate a new rhoconnect application"
|
3
|
+
def app(name,platform=nil)
|
4
|
+
Rhoconnect.run_cli(Dir.pwd, 'rhoconnect', Rhoconnect::VERSION, ARGV)
|
5
5
|
end #app
|
6
6
|
end #do
|
@@ -1,6 +1,6 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "source NAME", "
|
3
|
-
def source(name)
|
4
|
-
Rhoconnect.run_cli(Dir.pwd, '
|
2
|
+
desc "source NAME [options]", "Generate a new source adapter"
|
3
|
+
def source(name,platform=nil)
|
4
|
+
Rhoconnect.run_cli(Dir.pwd, 'rhoconnect', Rhoconnect::VERSION, ARGV)
|
5
5
|
end #source
|
6
6
|
end #do
|
@@ -1,9 +1,10 @@
|
|
1
1
|
Execute.define_task do
|
2
2
|
desc "redis-install", 'Install the latest verison of Redis from Github (requires git, duh)'
|
3
3
|
def redis_install
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
redis_about
|
5
|
+
redis_download
|
6
|
+
redis_make
|
7
|
+
|
7
8
|
unless windows?
|
8
9
|
ENV['PREFIX'] and bin_dir = "#{ENV['PREFIX']}/bin" or bin_dir = "#{RedisRunner.prefix}bin"
|
9
10
|
|
@@ -1,8 +1,8 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "redis-restart", 'Restart redis'
|
2
|
+
desc "redis-restart", 'Restart redis on localhost'
|
3
3
|
def redis_restart
|
4
|
-
|
5
|
-
RedisRunner.stop
|
6
|
-
RedisRunner.start
|
4
|
+
redis_array = config[:redis]
|
5
|
+
RedisRunner.stop(redis_array)
|
6
|
+
RedisRunner.start(redis_array)
|
7
7
|
end
|
8
8
|
end
|
@@ -1,6 +1,7 @@
|
|
1
1
|
Execute.define_task do
|
2
2
|
desc "redis-startbg", "'Start redis' without dtach - for Rhostudio (internal)", :hide => true
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
end
|
3
|
+
def redis_startbg
|
4
|
+
redis_array = config[:redis]
|
5
|
+
RedisRunner.startbg(redis_array)
|
6
|
+
end
|
7
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Execute.define_task do
|
2
|
+
desc "redis-status", 'Show status of redis servers'
|
3
|
+
def redis_status
|
4
|
+
config[:redis].each do |redis|
|
5
|
+
host,port = redis.split(':')[0..1]
|
6
|
+
if RedisRunner.running?(redis)
|
7
|
+
puts "#{host}:#{port}: server running"
|
8
|
+
else
|
9
|
+
puts "#{host}:#{port}: server not running"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -1,20 +1,32 @@
|
|
1
1
|
Execute.define_task do
|
2
2
|
desc "config", "Config", :hide => true
|
3
|
-
def config
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
3
|
+
def config(settings_file=false)
|
4
|
+
if File.exist?(File.join('settings','settings.yml'))
|
5
|
+
settings = load_settings(File.join('settings','settings.yml'))
|
6
|
+
rackup_config = "config.ru"
|
7
|
+
elsif settings_file
|
8
|
+
settings = load_settings(settings_file)
|
9
|
+
rackup_config = File.join(File.dirname(__FILE__), '..', 'utilities', 'blank_app.ru')
|
10
|
+
elsif File.exist?(File.join(ENV['HOME'], '.rhoconnect.yml'))
|
11
|
+
settings = load_settings(File.join(ENV['HOME'], '.rhoconnect.yml'))
|
12
|
+
rackup_config = File.join(File.dirname(__FILE__), '..', 'utilities', 'blank_app.ru')
|
13
|
+
else
|
14
|
+
options = { :syncserver => "http://localhost:#{RHOCONNECT_PORT}",
|
15
|
+
:redis => REDIS_SERVER_URL, :push_server => PUSH_SERVER_URL, :api_token => API_TOKEN }
|
16
|
+
settings = { :development => options, :test => options, :production => options }
|
17
|
+
rackup_config = File.join(File.dirname(__FILE__), '..', 'utilities', 'blank_app.ru')
|
18
|
+
end
|
19
|
+
settings = settings[Rhoconnect.environment]
|
20
|
+
# syncserver settings
|
21
|
+
uri = URI.parse(settings[:syncserver])
|
22
|
+
port = uri.port unless port
|
23
|
+
url = "#{uri.scheme}://#{uri.host}:#{port}"
|
24
|
+
settings[:syncserver] = url
|
25
|
+
settings[:rackup] = rackup_config
|
26
|
+
# redis settings
|
27
|
+
redis_conf = settings[:redis]
|
28
|
+
settings[:redis] = [redis_conf] if redis_conf.is_a?(String)
|
29
|
+
|
30
|
+
settings
|
19
31
|
end
|
20
32
|
end
|
@@ -1,11 +1,10 @@
|
|
1
1
|
Execute.define_task do
|
2
2
|
desc "flushdb", "Flush data store - WARNING: THIS REMOVES ALL DATA IN RHOCONNECT"
|
3
3
|
def flushdb
|
4
|
-
invoke :config
|
5
4
|
puts "*** WARNING: THIS WILL REMOVE ALL DATA FROM YOUR REDIS STORE ***"
|
6
5
|
confirm = ask "Are you sure (please answer yes/no)? "
|
7
6
|
if confirm == 'yes'
|
8
|
-
RedisRunner.flushdb
|
7
|
+
RedisRunner.flushdb(config[:redis])
|
9
8
|
puts "Database flushed..."
|
10
9
|
else
|
11
10
|
puts "Aborted..."
|
@@ -1,12 +1,11 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "get-token", "
|
3
|
-
def get_token
|
4
|
-
|
2
|
+
desc "get-token", "Fetch current api token from rhoconnect"
|
3
|
+
def get_token(save = true)
|
4
|
+
url = config[:syncserver]
|
5
5
|
password = ''
|
6
|
-
login = ask "admin login: "
|
7
6
|
begin
|
8
7
|
system "stty -echo"
|
9
|
-
password = ask "
|
8
|
+
password = ask "admin password: "
|
10
9
|
system "stty echo"
|
11
10
|
rescue NoMethodError, Interrupt
|
12
11
|
system "stty echo"
|
@@ -14,12 +13,17 @@ desc "get-token", "Fetches current api token from rhoconnect"
|
|
14
13
|
end
|
15
14
|
puts ''
|
16
15
|
begin
|
17
|
-
|
16
|
+
token = RestClient.post("#{url}/rc/v1/system/login",
|
17
|
+
{ :login => 'rhoadmin', :password => password }.to_json, :content_type => :json)
|
18
18
|
rescue
|
19
|
-
puts "
|
19
|
+
puts "Rhoconnect server is not running or invalid credentials."
|
20
20
|
exit
|
21
21
|
end
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
22
|
+
if save
|
23
|
+
token_file = File.join(ENV['HOME'],'.rhoconnect_token')
|
24
|
+
File.open(token_file,'w') {|f| f.write(token)}
|
25
|
+
puts "Token is saved in: #{token_file}"
|
26
|
+
end
|
27
|
+
token
|
28
|
+
end
|
29
|
+
end
|
@@ -1,7 +1,15 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "restart", "Alias for `rhoconnect stop; rhoconnect start`"
|
2
|
+
desc "restart [options]", "Alias for `rhoconnect stop; rhoconnect start`"
|
3
|
+
method_option :port, :aliases => "-p", :type => :numeric, :desc => "Use port (default: #{RHOCONNECT_PORT})"
|
4
|
+
method_option :redis, :aliases => "-r", :type => :string, :desc => "Redis server settings: (default: #{REDIS_SERVER_URL})"
|
5
|
+
method_option :push_server, :aliases => "-P", :type => :string, :desc => "Push server settings (default: #{PUSH_SERVER_URL})"
|
6
|
+
method_option :api_token, :aliases => "-t", :type => :string, :desc => "API token (default: #{API_TOKEN})"
|
7
|
+
method_option :config, :aliases => "-f", :type => :string, :desc => "/path/to/rhoconnect/settings.yml file"
|
8
|
+
method_option :licenseflie, :aliases => "-l", :type => :string, :desc => "/path/to/license.key file"
|
3
9
|
def restart
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
10
|
+
puts "Stop rhoconnect server ..."
|
11
|
+
stop
|
12
|
+
puts "Start rhoconnect server ..."
|
13
|
+
start options
|
14
|
+
end
|
15
|
+
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "set-admin-password", "
|
2
|
+
desc "set-admin-password", "Set the admin password"
|
3
3
|
def set_admin_password
|
4
|
-
|
4
|
+
token = get_token(false)
|
5
5
|
new_pass,new_pass_confirm = '',''
|
6
6
|
begin
|
7
7
|
system "stty -echo"
|
@@ -16,11 +16,11 @@ Execute.define_task do
|
|
16
16
|
puts "\nNew password can't be empty."
|
17
17
|
elsif new_pass == new_pass_confirm
|
18
18
|
puts ""
|
19
|
-
|
20
|
-
|
21
|
-
|
19
|
+
url = config[:syncserver]
|
20
|
+
RestClient.put("#{url}/rc/v1/users/rhoadmin",
|
21
|
+
{ :attributes => { :new_password => new_pass }}.to_json, {:content_type => :json, 'X-RhoConnect-API-TOKEN' => token})
|
22
22
|
else
|
23
23
|
puts "\nNew password and confirmation must match."
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
@@ -1,26 +1,84 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "start", "Start rhoconnect server"
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
if
|
12
|
-
|
13
|
-
|
14
|
-
|
2
|
+
desc "start [options]", "Start rhoconnect server"
|
3
|
+
method_option :port, :aliases => "-p", :type => :numeric, :desc => "Use port (default: #{RHOCONNECT_PORT})"
|
4
|
+
method_option :redis, :aliases => "-r", :type => :string, :desc => "Redis server settings: (default: #{REDIS_SERVER_URL})"
|
5
|
+
method_option :push_server, :aliases => "-P", :type => :string, :desc => "Push server settings (default: #{PUSH_SERVER_URL})"
|
6
|
+
method_option :api_token, :aliases => "-t", :type => :string, :desc => "API token (default: #{API_TOKEN})"
|
7
|
+
method_option :config, :aliases => "-f", :type => :string, :desc => "/path/to/rhoconnect/settings.yml file"
|
8
|
+
method_option :licenseflie, :aliases => "-l", :type => :string, :desc => "/path/to/license.key file"
|
9
|
+
def start(params = {})
|
10
|
+
# if this command called from 'restart', then params not emply
|
11
|
+
params = options if params.empty?
|
12
|
+
|
13
|
+
if options[:config] # -f settings.yml
|
14
|
+
unless File.exist?(options[:config])
|
15
|
+
puts "#{options[:config]}: No such file"
|
16
|
+
exit(-1)
|
17
|
+
end
|
18
|
+
end
|
19
|
+
if options[:licenseflie] # -l license.key
|
20
|
+
unless File.exist?(params[:licenseflie])
|
21
|
+
puts "#{options[:licenseflie]}: No such file"
|
22
|
+
exit(-1)
|
23
|
+
end
|
24
|
+
licensefile = File.expand_path(options[:licenseflie])
|
25
|
+
end
|
26
|
+
settings = config(options[:config])
|
27
|
+
|
28
|
+
port = (params[:port]) ? params[:port] : URI.parse(settings[:syncserver]).port
|
29
|
+
|
30
|
+
redis_url = (params[:redis]) ? params[:redis] : settings[:redis]
|
31
|
+
redis_url = [redis_url] if redis_url.is_a?(String)
|
32
|
+
start_list = []
|
33
|
+
redis_url.each do |redis_inst|
|
34
|
+
start_list << redis_inst unless RedisRunner.running?(redis_inst)
|
35
|
+
end
|
36
|
+
RedisRunner.startbg(start_list) unless start_list.empty?
|
37
|
+
|
38
|
+
if File.exist?(File.join('settings','settings.yml'))
|
39
|
+
# If command running frorm app directory, then do't touch "~/.rhoconnect.yml"
|
40
|
+
else
|
41
|
+
unless File.exist?(File.join(ENV['HOME'], '.rhoconnect.yml'))
|
42
|
+
push_server = (params[:push_server]) ? params[:push_server] : PUSH_SERVER_URL
|
43
|
+
token = (params[:api_token]) ? params[:api_token] : API_TOKEN
|
44
|
+
options = { :syncserver => "http://localhost:#{port}", :redis => redis_url,
|
45
|
+
:push_server => push_server, :api_token => token }
|
46
|
+
options[:licensefile] = licensefile if licensefile
|
47
|
+
options[:secret] = SecureRandom.hex(64)
|
48
|
+
conf_hash = { :development => options, :test => options, :production => options }
|
49
|
+
File.open(File.join(ENV['HOME'], '.rhoconnect.yml'), 'w') { |f| f.write(conf_hash.to_yaml) }
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
command = "bundle exec rackup -s #{defined?(JRUBY_VERSION) ? 'puma' : 'thin'}"
|
54
|
+
rackup_config = settings[:rackup]
|
55
|
+
command.sub!(/bundle exec /, '') if(rackup_config != "config.ru")
|
56
|
+
# Set environment varialbes: 'API_TOKEN', 'REDIS_URL', 'RHOCONNECT_LICENSE'
|
57
|
+
env = {}
|
58
|
+
if params[:api_token]
|
59
|
+
env["API_TOKEN"] = params[:api_token]
|
60
|
+
end
|
61
|
+
if params[:redis]
|
62
|
+
env["REDIS_URL"] = params[:redis]
|
63
|
+
end
|
64
|
+
if licensefile
|
65
|
+
license = IO.read(licensefile).strip
|
66
|
+
env["RHOCONNECT_LICENSE"] = license
|
67
|
+
end
|
68
|
+
|
69
|
+
if jruby?
|
15
70
|
puts 'Starting rhoconnect in jruby environment...'
|
16
|
-
system "#{command}"
|
71
|
+
system(env, "#{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
|
72
|
+
elsif windows?
|
73
|
+
puts 'Starting rhoconnect...'
|
74
|
+
system(env, "#{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
|
17
75
|
else
|
18
76
|
if dtach_installed?
|
19
77
|
puts 'Detach with Ctrl+\ Re-attach with rhoconnect attach'
|
20
78
|
sleep 2
|
21
|
-
|
79
|
+
system(env, "dtach -A #{rhoconnect_socket} #{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
|
22
80
|
else
|
23
|
-
|
81
|
+
system(env, "#{command} --port #{port} -P #{rhoconnect_pid} #{rackup_config}")
|
24
82
|
end
|
25
83
|
end
|
26
84
|
end
|
data/commands/rhoconnect/stop.rb
CHANGED
@@ -4,7 +4,19 @@ Execute.define_task do
|
|
4
4
|
if windows?
|
5
5
|
File.delete "#{rhoconnect_pid}" if system("FOR /F %A in (#{rhoconnect_pid}) do taskkill /F /PID %A")
|
6
6
|
else
|
7
|
-
|
7
|
+
if File.exist?("#{rhoconnect_pid}")
|
8
|
+
pid = `cat #{rhoconnect_pid}`
|
9
|
+
puts "Sending a QUIT signal to process #{pid}"
|
10
|
+
system "kill -3 #{pid}"
|
11
|
+
3.times do
|
12
|
+
sleep 1
|
13
|
+
return if !File.exist?("#{rhoconnect_pid}")
|
14
|
+
end
|
15
|
+
|
16
|
+
puts "Process #{pid} is still running. Sending a KILL signal to it ..."
|
17
|
+
system "kill -9 #{pid}"
|
18
|
+
File.delete(rhoconnect_pid)
|
19
|
+
end
|
8
20
|
end
|
9
21
|
end
|
10
22
|
end
|
data/commands/rhoconnect/web.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "web", "Launch the web console in a browser
|
2
|
+
desc "web", "Launch the web console in a browser"
|
3
3
|
def web
|
4
|
-
|
5
|
-
windows? ? system("start #{
|
6
|
-
end
|
7
|
-
end
|
4
|
+
url = config[:syncserver]
|
5
|
+
windows? ? system("start #{url}") : system("open #{url}")
|
6
|
+
end
|
7
|
+
end
|
@@ -1,16 +1,18 @@
|
|
1
1
|
Execute.define_task do
|
2
|
-
desc "console [environment]", "
|
2
|
+
desc "console [environment]", "Run rhoconnect console"
|
3
3
|
def console(environment=nil)
|
4
4
|
ENV['RACK_ENV'] = environment || 'development'
|
5
|
-
application_file =
|
6
|
-
|
5
|
+
application_file = (File.exist?(File.join(Dir.pwd, 'application.rb'))) ?
|
6
|
+
File.join(Dir.pwd, 'application.rb') :
|
7
|
+
File.join(File.dirname(__FILE__), '..', '..', 'generators', 'templates', 'application', 'application.rb')
|
8
|
+
|
9
|
+
redis_url = config[:redis]
|
7
10
|
if RedisRunner.running?
|
8
11
|
system "irb -rubygems -r #{File.join(File.dirname(__FILE__),'console_helper')} " +
|
9
12
|
"-r #{File.join(File.dirname(__FILE__), '..', '..', 'lib', 'rhoconnect') } " +
|
10
13
|
"-r #{application_file}"
|
11
14
|
else
|
12
|
-
|
13
|
-
puts "Redis is not running on #{redis_config}. Please start it by running 'rhoconnect redis-start' command."
|
15
|
+
puts "Redis is not running on #{redis_url}. Please start it by running 'rhoconnect redis-start' command."
|
14
16
|
end
|
15
17
|
end
|
16
18
|
end
|
File without changes
|
@@ -11,22 +11,22 @@ Execute.define_task do
|
|
11
11
|
if aFile
|
12
12
|
includeDirs = FileList['*'].exclude do |entry|
|
13
13
|
entry if (not File.directory? entry) || (entry == 'spec')
|
14
|
-
end
|
14
|
+
end
|
15
15
|
configFile = "Warbler::Config.new do |config|\n" +
|
16
|
-
"config.dirs = %w(#{includeDirs.join(' ')})\n" +
|
17
|
-
"config.includes = FileList[\"./*\"]\n" +
|
18
|
-
"config.excludes = FileList[\"./*.war\",'spec']\nend"
|
16
|
+
" config.dirs = %w(#{includeDirs.join(' ')})\n" +
|
17
|
+
" config.includes = FileList[\"./*\", \".rcgemfile\"]\n" +
|
18
|
+
" config.excludes = FileList[\"./*.war\",'spec']\nend"
|
19
19
|
aFile.write("#{configFile}")
|
20
20
|
aFile.close
|
21
21
|
else
|
22
22
|
puts "Unable to create config/warble.rb file!"
|
23
|
-
end
|
24
|
-
end
|
23
|
+
end
|
24
|
+
end
|
25
25
|
# build the executable WAR using the config/warble.rb file
|
26
26
|
ENV['BUNDLE_WITHOUT'] = ['development','test'].join(':')
|
27
27
|
system 'bundle exec warble executable war'
|
28
28
|
else
|
29
29
|
puts "Cannot build WAR files outside of JRuby environment!"
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|