rhoconnect 3.0.0.beta1
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 +208 -0
- data/CREDITS +38 -0
- data/Gemfile +18 -0
- data/Gemfile.lock +97 -0
- data/LICENSE +75 -0
- data/README.md +10 -0
- data/Rakefile +82 -0
- data/bench/bench +7 -0
- data/bench/bench_runner.rb +112 -0
- data/bench/benchapp/Gemfile +21 -0
- data/bench/benchapp/Gemfile.lock +76 -0
- data/bench/benchapp/Rakefile +22 -0
- data/bench/benchapp/application.rb +39 -0
- data/bench/benchapp/config.ru +36 -0
- data/bench/benchapp/settings/license.key +1 -0
- data/bench/benchapp/settings/settings.yml +20 -0
- data/bench/benchapp/sources/mock_adapter.rb +55 -0
- data/bench/benchapp/sources/queue_mock_adapter.rb +2 -0
- data/bench/benchapp/spec/sources/mock_adapter_spec.rb +25 -0
- data/bench/benchapp/spec/sources/queue_mock_adapter_spec.rb +25 -0
- data/bench/benchapp/spec/spec_helper.rb +42 -0
- data/bench/blobapp/Gemfile +31 -0
- data/bench/blobapp/Gemfile.lock +103 -0
- data/bench/blobapp/Rakefile +25 -0
- data/bench/blobapp/application.rb +44 -0
- data/bench/blobapp/config.ru +36 -0
- data/bench/blobapp/settings/license.key +1 -0
- data/bench/blobapp/settings/settings.yml +16 -0
- data/bench/blobapp/sources/blob_adapter.rb +71 -0
- data/bench/blobapp/spec/sources/blob_adapter_spec.rb +25 -0
- data/bench/blobapp/spec/spec_helper.rb +42 -0
- data/bench/lib/bench/cli.rb +16 -0
- data/bench/lib/bench/logging.rb +13 -0
- data/bench/lib/bench/mock_client.rb +41 -0
- data/bench/lib/bench/result.rb +50 -0
- data/bench/lib/bench/runner.rb +107 -0
- data/bench/lib/bench/session.rb +67 -0
- data/bench/lib/bench/statistics.rb +56 -0
- data/bench/lib/bench/test_data.rb +98 -0
- data/bench/lib/bench/timer.rb +10 -0
- data/bench/lib/bench/utils.rb +49 -0
- data/bench/lib/bench.rb +129 -0
- data/bench/lib/testdata/100-data.txt +148 -0
- data/bench/lib/testdata/5-data.txt +9 -0
- data/bench/lib/testdata/images/icon.ico +0 -0
- data/bench/lib/testdata/images/icon.png +0 -0
- data/bench/lib/testdata/images/loading-Landscape.png +0 -0
- data/bench/lib/testdata/images/loading-LandscapeLeft.png +0 -0
- data/bench/lib/testdata/images/loading-LandscapeRight.png +0 -0
- data/bench/lib/testdata/images/loading-Portrait.png +0 -0
- data/bench/lib/testdata/images/loading-PortraitUpsideDown.png +0 -0
- data/bench/lib/testdata/images/loading.png +0 -0
- data/bench/lib/testdata/images/loading@2x.png +0 -0
- data/bench/run_bench.sh +42 -0
- data/bench/run_blob_script.sh +3 -0
- data/bench/run_cud_script.sh +3 -0
- data/bench/run_query_md_script.sh +3 -0
- data/bench/run_query_only_script.sh +3 -0
- data/bench/run_query_script.sh +3 -0
- data/bench/scripts/blob_cud_script.rb +98 -0
- data/bench/scripts/cud_script.rb +92 -0
- data/bench/scripts/helpers.rb +101 -0
- data/bench/scripts/query_md_script.rb +45 -0
- data/bench/scripts/query_only_script.rb +51 -0
- data/bench/scripts/query_script.rb +45 -0
- data/bench/spec/bench_spec_helper.rb +33 -0
- data/bench/spec/logging_spec.rb +15 -0
- data/bench/spec/mock_adapter_spec.rb +61 -0
- data/bench/spec/mock_client_spec.rb +65 -0
- data/bench/spec/result_spec.rb +61 -0
- data/bench/spec/utils_spec.rb +36 -0
- data/bin/rhoconnect +34 -0
- data/bin/rhoconnect-setup +84 -0
- data/doc/async-jobs.txt +69 -0
- data/doc/authentication.txt +76 -0
- data/doc/benchmarks.txt +168 -0
- data/doc/blob-sync.txt +130 -0
- data/doc/bulk-sync.txt +102 -0
- data/doc/client.txt +432 -0
- data/doc/command-line.txt +210 -0
- data/doc/contributing.txt +60 -0
- data/doc/deploying.txt +82 -0
- data/doc/install.txt +28 -0
- data/doc/introduction.txt +20 -0
- data/doc/licensing.txt +18 -0
- data/doc/metadata.txt +458 -0
- data/doc/migration.txt +182 -0
- data/doc/public/css/print.css +29 -0
- data/doc/public/css/screen.css +257 -0
- data/doc/public/css/style.css +20 -0
- data/doc/push.txt +135 -0
- data/doc/release.txt +41 -0
- data/doc/rest-api.txt +367 -0
- data/doc/source-adapters.txt +325 -0
- data/doc/stats-middleware.txt +69 -0
- data/doc/testing.txt +222 -0
- data/doc/tutorial.txt +315 -0
- data/doc/web-console.txt +35 -0
- data/examples/simple/Rakefile +14 -0
- data/examples/simple/application.rb +27 -0
- data/examples/simple/config.ru +49 -0
- data/examples/simple/settings/license.key +1 -0
- data/examples/simple/settings/settings.yml +23 -0
- data/examples/simple/sources/sample_adapter.rb +5 -0
- data/examples/simple/sources/simple_adapter.rb +5 -0
- data/generators/rhoconnect.rb +119 -0
- data/generators/templates/application/Gemfile +21 -0
- data/generators/templates/application/Rakefile +22 -0
- data/generators/templates/application/application.rb +39 -0
- data/generators/templates/application/config.ru +36 -0
- data/generators/templates/application/settings/license.key +1 -0
- data/generators/templates/application/settings/settings.yml +14 -0
- data/generators/templates/application/spec/spec_helper.rb +42 -0
- data/generators/templates/source/source_adapter.rb +47 -0
- data/generators/templates/source/source_spec.rb +25 -0
- data/install.sh +408 -0
- data/installer/unix-like/rho_connect_install_checkers.rb +140 -0
- data/installer/unix-like/rho_connect_install_constants.rb +51 -0
- data/installer/unix-like/rho_connect_install_debian.rb +63 -0
- data/installer/unix-like/rho_connect_install_dnd.rb +58 -0
- data/installer/unix-like/rho_connect_install_get_params.rb +30 -0
- data/installer/unix-like/rho_connect_install_installers.rb +142 -0
- data/installer/unix-like/rho_connect_install_utilities.rb +85 -0
- data/installer/unix-like/rho_connect_install_yum.rb +63 -0
- data/installer/unix-like/rhoinstaller.rb +89 -0
- data/installer/utils/create_texts.rb +366 -0
- data/installer/utils/install_test.rb +140 -0
- data/installer/windows/EnvVarUpdate.nsh +328 -0
- data/installer/windows/ServiceLib.nsh +369 -0
- data/installer/windows/configUi.ini +44 -0
- data/installer/windows/icon.ico +0 -0
- data/installer/windows/rhosync.nsi +418 -0
- data/installer/windows/uninstall.bat +7 -0
- data/lib/rhoconnect/api/admin/get_api_token.rb +14 -0
- data/lib/rhoconnect/api/admin/get_license_info.rb +8 -0
- data/lib/rhoconnect/api/admin/login.rb +6 -0
- data/lib/rhoconnect/api/admin/reset.rb +10 -0
- data/lib/rhoconnect/api/admin/stats.rb +21 -0
- data/lib/rhoconnect/api/application/bulk_data.rb +7 -0
- data/lib/rhoconnect/api/application/clientcreate.rb +8 -0
- data/lib/rhoconnect/api/application/clientlogin.rb +6 -0
- data/lib/rhoconnect/api/application/clientregister.rb +6 -0
- data/lib/rhoconnect/api/application/clientreset.rb +6 -0
- data/lib/rhoconnect/api/application/query.rb +7 -0
- data/lib/rhoconnect/api/application/queue_updates.rb +6 -0
- data/lib/rhoconnect/api/application/search.rb +6 -0
- data/lib/rhoconnect/api/client/create_client.rb +3 -0
- data/lib/rhoconnect/api/client/delete_client.rb +5 -0
- data/lib/rhoconnect/api/client/get_client_params.rb +3 -0
- data/lib/rhoconnect/api/client/list_client_docs.rb +12 -0
- data/lib/rhoconnect/api/client/list_clients.rb +3 -0
- data/lib/rhoconnect/api/client/ping.rb +7 -0
- data/lib/rhoconnect/api/source/get_adapter.rb +3 -0
- data/lib/rhoconnect/api/source/get_db_doc.rb +7 -0
- data/lib/rhoconnect/api/source/get_source_params.rb +3 -0
- data/lib/rhoconnect/api/source/list_source_docs.rb +10 -0
- data/lib/rhoconnect/api/source/list_sources.rb +15 -0
- data/lib/rhoconnect/api/source/push_deletes.rb +8 -0
- data/lib/rhoconnect/api/source/push_objects.rb +8 -0
- data/lib/rhoconnect/api/source/save_adapter.rb +3 -0
- data/lib/rhoconnect/api/source/set_db_doc.rb +8 -0
- data/lib/rhoconnect/api/source/set_refresh_time.rb +8 -0
- data/lib/rhoconnect/api/source/upload_file.rb +4 -0
- data/lib/rhoconnect/api/user/create_user.rb +7 -0
- data/lib/rhoconnect/api/user/delete_user.rb +9 -0
- data/lib/rhoconnect/api/user/list_users.rb +3 -0
- data/lib/rhoconnect/api/user/update_user.rb +4 -0
- data/lib/rhoconnect/api_token.rb +19 -0
- data/lib/rhoconnect/app.rb +76 -0
- data/lib/rhoconnect/bulk_data/bulk_data.rb +88 -0
- data/lib/rhoconnect/bulk_data/syncdb.index.schema +4 -0
- data/lib/rhoconnect/bulk_data/syncdb.schema +41 -0
- data/lib/rhoconnect/bulk_data.rb +2 -0
- data/lib/rhoconnect/client.rb +96 -0
- data/lib/rhoconnect/client_sync.rb +412 -0
- data/lib/rhoconnect/console/app/helpers/auth_helper.rb +22 -0
- data/lib/rhoconnect/console/app/helpers/extensions.rb +19 -0
- data/lib/rhoconnect/console/app/helpers/helpers.rb +57 -0
- data/lib/rhoconnect/console/app/public/ThickBox.css +649 -0
- data/lib/rhoconnect/console/app/public/home.css +438 -0
- data/lib/rhoconnect/console/app/public/images/foot_logo_rhoconnect.png +0 -0
- data/lib/rhoconnect/console/app/public/images/header_halo.jpg +0 -0
- data/lib/rhoconnect/console/app/public/images/land_separator.gif +0 -0
- data/lib/rhoconnect/console/app/public/images/landing_header.jpg +0 -0
- data/lib/rhoconnect/console/app/public/images/logo_rhoconnect.png +0 -0
- data/lib/rhoconnect/console/app/public/images/rhomobile_rhohub_logo.png +0 -0
- data/lib/rhoconnect/console/app/public/images/tabs_separator.png +0 -0
- data/lib/rhoconnect/console/app/public/jqplot/excanvas.min.js +35 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.barRenderer.min.js +34 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.canvasAxisLabelRenderer.js +187 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.canvasAxisTickRenderer.js +226 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.canvasTextRenderer.js +408 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.categoryAxisRenderer.min.js +34 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.cursor.js +952 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.dateAxisRenderer.js +313 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.dateAxisRenderer.min.js +34 -0
- data/lib/rhoconnect/console/app/public/jqplot/jqplot.pointLabels.min.js +34 -0
- data/lib/rhoconnect/console/app/public/jqplot/jquery-1.4.2.min.js +154 -0
- data/lib/rhoconnect/console/app/public/jqplot/jquery.jqplot.min.css +1 -0
- data/lib/rhoconnect/console/app/public/jqplot/jquery.jqplot.min.js +34 -0
- data/lib/rhoconnect/console/app/public/main.css +7 -0
- data/lib/rhoconnect/console/app/public/reset.css +76 -0
- data/lib/rhoconnect/console/app/public/style.css +2201 -0
- data/lib/rhoconnect/console/app/public/text.txt +0 -0
- data/lib/rhoconnect/console/app/routes/adapter.rb +28 -0
- data/lib/rhoconnect/console/app/routes/auth.rb +29 -0
- data/lib/rhoconnect/console/app/routes/client.rb +31 -0
- data/lib/rhoconnect/console/app/routes/docs.rb +145 -0
- data/lib/rhoconnect/console/app/routes/heroku.rb +19 -0
- data/lib/rhoconnect/console/app/routes/home.rb +63 -0
- data/lib/rhoconnect/console/app/routes/timing.rb +242 -0
- data/lib/rhoconnect/console/app/routes/user.rb +117 -0
- data/lib/rhoconnect/console/app/views/adapter.erb +16 -0
- data/lib/rhoconnect/console/app/views/client.erb +30 -0
- data/lib/rhoconnect/console/app/views/content.erb +14 -0
- data/lib/rhoconnect/console/app/views/doc.erb +8 -0
- data/lib/rhoconnect/console/app/views/docdata.erb +28 -0
- data/lib/rhoconnect/console/app/views/docs.erb +30 -0
- data/lib/rhoconnect/console/app/views/edituser.erb +13 -0
- data/lib/rhoconnect/console/app/views/headermenu.erb +40 -0
- data/lib/rhoconnect/console/app/views/home.erb +24 -0
- data/lib/rhoconnect/console/app/views/index.erb +58 -0
- data/lib/rhoconnect/console/app/views/jqplot.erb +52 -0
- data/lib/rhoconnect/console/app/views/layout.erb +165 -0
- data/lib/rhoconnect/console/app/views/login.erb +26 -0
- data/lib/rhoconnect/console/app/views/newuser.erb +17 -0
- data/lib/rhoconnect/console/app/views/ping.erb +28 -0
- data/lib/rhoconnect/console/app/views/result.erb +11 -0
- data/lib/rhoconnect/console/app/views/rightboxlinks.erb +15 -0
- data/lib/rhoconnect/console/app/views/select_doc.erb +17 -0
- data/lib/rhoconnect/console/app/views/upload_doc.erb +23 -0
- data/lib/rhoconnect/console/app/views/user.erb +29 -0
- data/lib/rhoconnect/console/app/views/users.erb +12 -0
- data/lib/rhoconnect/console/rhoconnect_api.rb +245 -0
- data/lib/rhoconnect/console/server.rb +32 -0
- data/lib/rhoconnect/console.rb +3 -0
- data/lib/rhoconnect/cors.rb +229 -0
- data/lib/rhoconnect/credential.rb +9 -0
- data/lib/rhoconnect/db_adapter.rb +46 -0
- data/lib/rhoconnect/document.rb +49 -0
- data/lib/rhoconnect/dynamic_adapter.rb +91 -0
- data/lib/rhoconnect/generator.rb +1 -0
- data/lib/rhoconnect/jobs/bulk_data_job.rb +203 -0
- data/lib/rhoconnect/jobs/ping_job.rb +46 -0
- data/lib/rhoconnect/jobs/source_job.rb +16 -0
- data/lib/rhoconnect/license.rb +86 -0
- data/lib/rhoconnect/lock_ops.rb +11 -0
- data/lib/rhoconnect/model.rb +414 -0
- data/lib/rhoconnect/ping/android.rb +56 -0
- data/lib/rhoconnect/ping/apple.rb +52 -0
- data/lib/rhoconnect/ping/blackberry.rb +56 -0
- data/lib/rhoconnect/ping.rb +3 -0
- data/lib/rhoconnect/read_state.rb +31 -0
- data/lib/rhoconnect/rho_indifferent_access.rb +88 -0
- data/lib/rhoconnect/server/views/index.erb +13 -0
- data/lib/rhoconnect/server.rb +286 -0
- data/lib/rhoconnect/source.rb +289 -0
- data/lib/rhoconnect/source_adapter.rb +123 -0
- data/lib/rhoconnect/source_sync.rb +302 -0
- data/lib/rhoconnect/stats/middleware.rb +20 -0
- data/lib/rhoconnect/stats/record.rb +108 -0
- data/lib/rhoconnect/store.rb +232 -0
- data/lib/rhoconnect/tasks.rb +350 -0
- data/lib/rhoconnect/test_methods.rb +220 -0
- data/lib/rhoconnect/user.rb +95 -0
- data/lib/rhoconnect/version.rb +3 -0
- data/lib/rhoconnect/x_domain_session_wrapper.rb +53 -0
- data/lib/rhoconnect.rb +285 -0
- data/rhoconnect.gemspec +67 -0
- data/spec/api/admin/api_token_spec.rb +14 -0
- data/spec/api/admin/get_api_token_spec.rb +36 -0
- data/spec/api/admin/get_license_info_spec.rb +38 -0
- data/spec/api/admin/reset_spec.rb +22 -0
- data/spec/api/admin/stats_spec.rb +66 -0
- data/spec/api/api_helper.rb +21 -0
- data/spec/api/application/rhoconnect_api_spec.rb +548 -0
- data/spec/api/client/create_client_spec.rb +13 -0
- data/spec/api/client/delete_client_spec.rb +13 -0
- data/spec/api/client/get_client_params_spec.rb +18 -0
- data/spec/api/client/list_client_docs_spec.rb +32 -0
- data/spec/api/client/list_clients_spec.rb +22 -0
- data/spec/api/client/ping_spec.rb +23 -0
- data/spec/api/rhosync_api_spec.rb.orig +606 -0
- data/spec/api/source/adapter_spec.rb +29 -0
- data/spec/api/source/get_db_doc_spec.rb +21 -0
- data/spec/api/source/get_source_params_spec.rb +32 -0
- data/spec/api/source/list_source_docs_spec.rb +25 -0
- data/spec/api/source/list_sources_spec.rb +26 -0
- data/spec/api/source/push_deletes_spec.rb +18 -0
- data/spec/api/source/push_objects_spec.rb +27 -0
- data/spec/api/source/set_db_doc_spec.rb +19 -0
- data/spec/api/source/set_refresh_time_spec.rb +43 -0
- data/spec/api/source/upload_file_spec.rb +26 -0
- data/spec/api/user/create_user_spec.rb +16 -0
- data/spec/api/user/delete_user_spec.rb +36 -0
- data/spec/api/user/list_users_spec.rb +30 -0
- data/spec/api/user/update_user_spec.rb +31 -0
- data/spec/api_token_spec.rb +14 -0
- data/spec/app_spec.rb +18 -0
- data/spec/apps/emptyapp/application.rb +27 -0
- data/spec/apps/emptyapp/settings/license.key +1 -0
- data/spec/apps/emptyapp/settings/settings.yml +14 -0
- data/spec/apps/rhotestapp/Rakefile +1 -0
- data/spec/apps/rhotestapp/application.rb +19 -0
- data/spec/apps/rhotestapp/config.ru +1 -0
- data/spec/apps/rhotestapp/settings/apple_fake_cert.pem +1 -0
- data/spec/apps/rhotestapp/settings/license.key +1 -0
- data/spec/apps/rhotestapp/settings/settings.yml +36 -0
- data/spec/apps/rhotestapp/sources/base_adapter.rb +9 -0
- data/spec/apps/rhotestapp/sources/fixed_schema_adapter.rb +28 -0
- data/spec/apps/rhotestapp/sources/sample_adapter.rb +71 -0
- data/spec/apps/rhotestapp/sources/simple_adapter.rb +41 -0
- data/spec/apps/rhotestapp/sources/sub_adapter.rb +7 -0
- data/spec/apps/rhotestapp/vendor/mygem-0.1.0/lib/mygem/mygem.rb +8 -0
- data/spec/apps/rhotestapp/vendor/mygem-0.1.0/lib/mygem.rb +1 -0
- data/spec/bulk_data/bulk_data_spec.rb +97 -0
- data/spec/client_spec.rb +124 -0
- data/spec/client_sync_spec.rb +774 -0
- data/spec/doc/base.html +72 -0
- data/spec/doc/doc_spec.rb +376 -0
- data/spec/doc/footer.html +4 -0
- data/spec/doc/header.html +30 -0
- data/spec/document_spec.rb +31 -0
- data/spec/dynamic_adapter_spec.rb +43 -0
- data/spec/factories/factories.rb +17 -0
- data/spec/generator/generator_spec.rb +58 -0
- data/spec/generator/generator_spec_helper.rb +9 -0
- data/spec/jobs/bulk_data_job_spec.rb +125 -0
- data/spec/jobs/ping_job_spec.rb +102 -0
- data/spec/jobs/source_job_spec.rb +29 -0
- data/spec/license_spec.rb +66 -0
- data/spec/model_spec.rb +273 -0
- data/spec/perf/bulk_data_perf_spec.rb +32 -0
- data/spec/perf/perf_spec_helper.rb +50 -0
- data/spec/perf/store_perf_spec.rb +27 -0
- data/spec/ping/android_spec.rb +91 -0
- data/spec/ping/apple_spec.rb +70 -0
- data/spec/ping/blackberry_spec.rb +62 -0
- data/spec/read_state_spec.rb +35 -0
- data/spec/rhosync_spec.rb +75 -0
- data/spec/server/cors_spec.rb +287 -0
- data/spec/server/server_spec.rb +470 -0
- data/spec/server/x_domain_session_wrapper_spec.rb +150 -0
- data/spec/source_adapter_spec.rb +125 -0
- data/spec/source_spec.rb +114 -0
- data/spec/source_sync_spec.rb +328 -0
- data/spec/spec.opts +4 -0
- data/spec/spec_helper.rb +231 -0
- data/spec/stats/middleware_spec.rb +53 -0
- data/spec/stats/record_spec.rb +92 -0
- data/spec/store_spec.rb +251 -0
- data/spec/support/shared_examples.rb +168 -0
- data/spec/sync_states_spec.rb +72 -0
- data/spec/test_methods_spec.rb +134 -0
- data/spec/testdata/1000-data.txt +1414 -0
- data/spec/testdata/compressed/compress-data.txt +1 -0
- data/spec/testdata/upload1.txt +1 -0
- data/spec/testdata/upload2.txt +1 -0
- data/spec/user_spec.rb +139 -0
- data/tasks/redis.rake +206 -0
- metadata +706 -0
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
path = File.join(File.dirname(__FILE__),'..','..','lib')
|
|
4
|
+
$:.unshift path
|
|
5
|
+
|
|
6
|
+
# Try to load vendor-ed rhoconnect, otherwise load the gem
|
|
7
|
+
begin
|
|
8
|
+
require 'vendor/rhoconnect/lib/rhoconnect/server'
|
|
9
|
+
require 'vendor/rhoconnect/lib/rhoconnect/console/server'
|
|
10
|
+
rescue LoadError
|
|
11
|
+
require 'rhoconnect/server'
|
|
12
|
+
require 'rhoconnect/console/server'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
require 'x_domain_session_wrapper'
|
|
16
|
+
use XDomainSessionWrapper
|
|
17
|
+
|
|
18
|
+
# By default, turn on the resque web console
|
|
19
|
+
require 'resque/server'
|
|
20
|
+
|
|
21
|
+
ROOT_PATH = File.expand_path(File.dirname(__FILE__))
|
|
22
|
+
|
|
23
|
+
# Rhoconnect server flags
|
|
24
|
+
Rhoconnect::Server.disable :run
|
|
25
|
+
Rhoconnect::Server.disable :clean_trace
|
|
26
|
+
Rhoconnect::Server.enable :raise_errors
|
|
27
|
+
Rhoconnect::Server.set :root, ROOT_PATH
|
|
28
|
+
Rhoconnect::Server.enable :stats
|
|
29
|
+
Rhoconnect::Server.set :secret, '3ddaa72a36466bae3fc5e54c09324db50cfc30588d8dee1a2700e61195bdbbb5eeb65da2a184d274ce644b20b0e986046c2447730c85555ce18a4eb2fce7ebf5'
|
|
30
|
+
Rhoconnect::Server.use Rack::Static, :urls => ["/data"], :root => Rhoconnect::Server.root
|
|
31
|
+
|
|
32
|
+
# configure Cross-Domain Resource Sharing
|
|
33
|
+
require 'cors'
|
|
34
|
+
use Rack::Cors do |cfg|
|
|
35
|
+
cfg.allow do |allow|
|
|
36
|
+
allow.origins /.*/
|
|
37
|
+
allow.resource '/application', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
38
|
+
allow.resource '/application/*', :headers => :any, :methods => [:get, :post, :put, :delete], :credentials => true
|
|
39
|
+
end
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
# Load our rhoconnect application
|
|
43
|
+
require './application'
|
|
44
|
+
|
|
45
|
+
# Setup the url map
|
|
46
|
+
run Rack::URLMap.new \
|
|
47
|
+
"/" => Rhoconnect::Server.new,
|
|
48
|
+
"/resque" => Resque::Server.new, # If you don't want resque frontend, disable it here
|
|
49
|
+
"/console" => RhoconnectConsole::Server.new # If you don't want rhoconnect frontend, disable it here
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
858fc60fadfde40273d0ac505906969318aa4931d1a2c4aeb24d98393c74379f60e226651601969874257f7f1fbda9b099ecd551a641519aa46819947fda0191
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
:sources:
|
|
2
|
+
SimpleAdapter:
|
|
3
|
+
:poll_interval: 300
|
|
4
|
+
SampleAdapter:
|
|
5
|
+
:partition_type: app
|
|
6
|
+
:poll_interval: 500
|
|
7
|
+
|
|
8
|
+
:development:
|
|
9
|
+
:licensefile: settings/license.key
|
|
10
|
+
:redis: localhost:6379
|
|
11
|
+
:syncserver: http://localhost:9292/api/application/
|
|
12
|
+
:api_token: sometokenforme
|
|
13
|
+
:test:
|
|
14
|
+
:licensefile: settings/license.key
|
|
15
|
+
:redis: localhost:6379
|
|
16
|
+
:syncserver: http://localhost:9292/api/application/
|
|
17
|
+
:api_token: sometokenforme
|
|
18
|
+
:production:
|
|
19
|
+
:licensefile: settings/license.key
|
|
20
|
+
:redis: localhost:6379
|
|
21
|
+
:syncserver: http://localhost:9292/api/application/
|
|
22
|
+
:api_token: sometokenforme
|
|
23
|
+
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'templater'
|
|
3
|
+
|
|
4
|
+
module Rhoconnect
|
|
5
|
+
extend Templater::Manifold
|
|
6
|
+
extend Rhoconnect
|
|
7
|
+
|
|
8
|
+
desc <<-DESC
|
|
9
|
+
Rhoconnect generator
|
|
10
|
+
DESC
|
|
11
|
+
|
|
12
|
+
class BaseGenerator < Templater::Generator
|
|
13
|
+
def class_name
|
|
14
|
+
name.gsub('-', '_').camel_case
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def underscore_name
|
|
18
|
+
Rhoconnect.under_score(name)
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
def gem_version
|
|
22
|
+
VERSION
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
alias_method :module_name, :class_name
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
class AppGenerator < BaseGenerator
|
|
29
|
+
def self.source_root
|
|
30
|
+
File.join(File.dirname(__FILE__), 'templates', 'application')
|
|
31
|
+
end
|
|
32
|
+
|
|
33
|
+
desc <<-DESC
|
|
34
|
+
Generates a new rhoconnect application.
|
|
35
|
+
|
|
36
|
+
Required:
|
|
37
|
+
name - application name
|
|
38
|
+
DESC
|
|
39
|
+
|
|
40
|
+
first_argument :name, :required => true, :desc => "application name"
|
|
41
|
+
|
|
42
|
+
template :configru do |template|
|
|
43
|
+
require 'securerandom' rescue nil
|
|
44
|
+
@secret = SecureRandom.hex(64) rescue '<changeme>'
|
|
45
|
+
template.source = 'config.ru'
|
|
46
|
+
template.destination = "#{name}/config.ru"
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
template :settings do |template|
|
|
50
|
+
template.source = 'settings/settings.yml'
|
|
51
|
+
template.destination = "#{name}/settings/settings.yml"
|
|
52
|
+
end
|
|
53
|
+
|
|
54
|
+
template :license do |template|
|
|
55
|
+
template.source = 'settings/license.key'
|
|
56
|
+
template.destination = "#{name}/settings/license.key"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
template :application do |template|
|
|
60
|
+
template.source = 'application.rb'
|
|
61
|
+
template.destination = "#{name}/application.rb"
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
template :rakefile do |template|
|
|
65
|
+
template.source = 'Rakefile'
|
|
66
|
+
template.destination = "#{name}/Rakefile"
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
template :gemfile do |template|
|
|
70
|
+
template.source = 'Gemfile'
|
|
71
|
+
template.destination = "#{name}/Gemfile"
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
template :spec_helper do |template|
|
|
75
|
+
template.source = 'spec/spec_helper.rb'
|
|
76
|
+
template.destination = "#{name}/spec/spec_helper.rb"
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
class SourceGenerator < BaseGenerator
|
|
81
|
+
def self.source_root
|
|
82
|
+
File.join(File.dirname(__FILE__), 'templates', 'source')
|
|
83
|
+
end
|
|
84
|
+
|
|
85
|
+
desc <<-DESC
|
|
86
|
+
Generates a new source adapter.
|
|
87
|
+
|
|
88
|
+
Required:
|
|
89
|
+
name - source name(i.e. product)
|
|
90
|
+
DESC
|
|
91
|
+
|
|
92
|
+
first_argument :name, :required => true, :desc => "source name"
|
|
93
|
+
|
|
94
|
+
template :source do |template|
|
|
95
|
+
template.source = 'source_adapter.rb'
|
|
96
|
+
template.destination = "sources/#{underscore_name}.rb"
|
|
97
|
+
settings_file = File.join(@destination_root,'settings','settings.yml')
|
|
98
|
+
settings = YAML.load_file(settings_file)
|
|
99
|
+
settings[:sources] ||= {}
|
|
100
|
+
settings[:sources][class_name] = {:poll_interval => 300}
|
|
101
|
+
File.open(settings_file, 'w' ) do |file|
|
|
102
|
+
file.write "#Sources" + {:sources => settings[:sources]}.to_yaml[3..-1]
|
|
103
|
+
envs = {}
|
|
104
|
+
[:development,:test,:production].each do |env|
|
|
105
|
+
envs[env] = settings[env]
|
|
106
|
+
end
|
|
107
|
+
file.write envs.to_yaml[3..-1]
|
|
108
|
+
end
|
|
109
|
+
end
|
|
110
|
+
|
|
111
|
+
template :source_spec do |template|
|
|
112
|
+
template.source = 'source_spec.rb'
|
|
113
|
+
template.destination = "spec/sources/#{underscore_name}_spec.rb"
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
add :app, AppGenerator
|
|
118
|
+
add :source, SourceGenerator
|
|
119
|
+
end
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
source 'http://rubygems.org'
|
|
2
|
+
|
|
3
|
+
gem 'rhoconnect', '<%=gem_version%>'
|
|
4
|
+
|
|
5
|
+
gem 'warbler', "~> 1.3.0", :platforms => :jruby
|
|
6
|
+
|
|
7
|
+
group :development do
|
|
8
|
+
# By default to run application thin web server is used
|
|
9
|
+
gem 'thin', :platforms => :ruby
|
|
10
|
+
|
|
11
|
+
# For jruby trinidad JRuby web server is used
|
|
12
|
+
gem 'trinidad', :platforms => :jruby
|
|
13
|
+
# Alternative for jruby
|
|
14
|
+
# gem 'jetty-rackup', :platforms => :jruby
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
group :test do
|
|
18
|
+
gem 'rack-test', '>= 0.5.3', :require => "rack/test"
|
|
19
|
+
gem 'rspec', '~> 2.6.0'
|
|
20
|
+
gem 'rcov', '>= 0.9.8'
|
|
21
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
require 'bundler/setup'
|
|
3
|
+
|
|
4
|
+
begin
|
|
5
|
+
require 'vendor/rhoconnect/lib/rhoconnect/tasks'
|
|
6
|
+
require 'vendor/rhoconnect/lib/rhoconnect'
|
|
7
|
+
rescue LoadError
|
|
8
|
+
require 'rhoconnect/tasks'
|
|
9
|
+
require 'rhoconnect'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
ROOT_PATH = File.expand_path(File.dirname(__FILE__))
|
|
13
|
+
|
|
14
|
+
begin
|
|
15
|
+
require 'resque/tasks'
|
|
16
|
+
task "resque:setup" do
|
|
17
|
+
require 'application'
|
|
18
|
+
end
|
|
19
|
+
rescue LoadError
|
|
20
|
+
puts "Resque not available. Install it with: "
|
|
21
|
+
puts "gem install resque\n\n"
|
|
22
|
+
end
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
class Application < Rhoconnect::Base
|
|
2
|
+
class << self
|
|
3
|
+
def authenticate(username,password,session)
|
|
4
|
+
true # do some interesting authentication here...
|
|
5
|
+
end
|
|
6
|
+
|
|
7
|
+
# Add hooks for application startup here
|
|
8
|
+
# Don't forget to call super at the end!
|
|
9
|
+
def initializer(path)
|
|
10
|
+
super
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
# Calling super here returns rack tempfile path:
|
|
14
|
+
# i.e. /var/folders/J4/J4wGJ-r6H7S313GEZ-Xx5E+++TI
|
|
15
|
+
# Note: This tempfile is removed when server stops or crashes...
|
|
16
|
+
# See http://rack.rubyforge.org/doc/Multipart.html for more info
|
|
17
|
+
#
|
|
18
|
+
# Override this by creating a copy of the file somewhere
|
|
19
|
+
# and returning the path to that file (then don't call super!):
|
|
20
|
+
# i.e. /mnt/myimages/soccer.png
|
|
21
|
+
def store_blob(object,field_name,blob)
|
|
22
|
+
super #=> returns blob[:tempfile]
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
Application.initializer(ROOT_PATH)
|
|
28
|
+
|
|
29
|
+
# Support passenger smart spawning/fork mode:
|
|
30
|
+
if defined?(PhusionPassenger)
|
|
31
|
+
PhusionPassenger.on_event(:starting_worker_process) do |forked|
|
|
32
|
+
if forked
|
|
33
|
+
# We're in smart spawning mode.
|
|
34
|
+
Store.db.client.reconnect
|
|
35
|
+
else
|
|
36
|
+
# We're in conservative spawning mode. We don't need to do anything.
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
end
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
require 'rubygems'
|
|
3
|
+
require 'bundler'
|
|
4
|
+
Bundler.require
|
|
5
|
+
|
|
6
|
+
# Try to load vendor-ed rhoconnect, otherwise load the gem
|
|
7
|
+
begin
|
|
8
|
+
require 'vendor/rhoconnect/lib/rhoconnect/server'
|
|
9
|
+
require 'vendor/rhoconnect/lib/rhoconnect/console/server'
|
|
10
|
+
rescue LoadError
|
|
11
|
+
require 'rhoconnect/server'
|
|
12
|
+
require 'rhoconnect/console/server'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
# By default, turn on the resque web console
|
|
16
|
+
require 'resque/server'
|
|
17
|
+
|
|
18
|
+
ROOT_PATH = File.expand_path(File.dirname(__FILE__))
|
|
19
|
+
|
|
20
|
+
# Rhoconnect server flags
|
|
21
|
+
Rhoconnect::Server.disable :run
|
|
22
|
+
Rhoconnect::Server.disable :clean_trace
|
|
23
|
+
Rhoconnect::Server.enable :raise_errors
|
|
24
|
+
Rhoconnect::Server.set :secret, '<%= @secret %>'
|
|
25
|
+
Rhoconnect::Server.set :root, ROOT_PATH
|
|
26
|
+
Rhoconnect::Server.use Rack::Static, :urls => ["/data"], :root => Rhoconnect::Server.root
|
|
27
|
+
|
|
28
|
+
# Load our rhoconnect application
|
|
29
|
+
$:.unshift ROOT_PATH if RUBY_VERSION =~ /1.9/ # FIXME: see PT story #16682771
|
|
30
|
+
require 'application'
|
|
31
|
+
|
|
32
|
+
# Setup the url map
|
|
33
|
+
run Rack::URLMap.new \
|
|
34
|
+
"/" => Rhoconnect::Server.new,
|
|
35
|
+
"/resque" => Resque::Server.new, # If you don't want resque frontend, disable it here
|
|
36
|
+
"/console" => RhoconnectConsole::Server.new # If you don't want rhoconnect frontend, disable it here
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
858fc60fadfde40273d0ac505906969318aa4931d1a2c4aeb24d98393c74379f60e226651601969874257f7f1fbda9b099ecd551a641519aa46819947fda0191
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
:sources:
|
|
2
|
+
|
|
3
|
+
:development:
|
|
4
|
+
:licensefile: settings/license.key
|
|
5
|
+
:redis: localhost:6379
|
|
6
|
+
:syncserver: http://localhost:9292/api/application/
|
|
7
|
+
:test:
|
|
8
|
+
:licensefile: settings/license.key
|
|
9
|
+
:redis: localhost:6379
|
|
10
|
+
:syncserver: http://localhost:9292/api/application/
|
|
11
|
+
:production:
|
|
12
|
+
:licensefile: settings/license.key
|
|
13
|
+
:redis: localhost:6379
|
|
14
|
+
:syncserver: http://localhost:9292/api/application/
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
require 'rubygems'
|
|
2
|
+
|
|
3
|
+
# Set environment to test
|
|
4
|
+
ENV['RHO_ENV'] = 'test'
|
|
5
|
+
ROOT_PATH = File.expand_path(File.join(File.dirname(__FILE__),'..'))
|
|
6
|
+
Bundler.require(:default, ENV['RHO_ENV'].to_sym)
|
|
7
|
+
|
|
8
|
+
# Try to load vendor-ed rhoconnect, otherwise load the gem
|
|
9
|
+
begin
|
|
10
|
+
require 'vendor/rhoconnect/lib/rhoconnect'
|
|
11
|
+
rescue LoadError
|
|
12
|
+
require 'rhoconnect'
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
$:.unshift File.join(File.dirname(__FILE__), "..") # FIXME:
|
|
16
|
+
# Load our rhoconnect application
|
|
17
|
+
require 'application'
|
|
18
|
+
include Rhoconnect
|
|
19
|
+
|
|
20
|
+
require 'rhoconnect/test_methods'
|
|
21
|
+
|
|
22
|
+
# Monkey patch to fix the following issue:
|
|
23
|
+
# /Library/Ruby/Gems/1.8/gems/rspec-core-2.5.1/lib/rspec/core/shared_example_group.rb:45:
|
|
24
|
+
# in `ensure_shared_example_group_name_not_taken': Shared example group '...' already exists (ArgumentError)
|
|
25
|
+
module RSpec
|
|
26
|
+
module Core
|
|
27
|
+
module SharedExampleGroup
|
|
28
|
+
private
|
|
29
|
+
def ensure_shared_example_group_name_not_taken(name)
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
shared_examples_for "SpecHelper" do
|
|
36
|
+
include Rhoconnect::TestMethods
|
|
37
|
+
|
|
38
|
+
before(:each) do
|
|
39
|
+
Store.db.flushdb
|
|
40
|
+
Application.initializer(ROOT_PATH)
|
|
41
|
+
end
|
|
42
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
class <%=class_name%> < SourceAdapter
|
|
2
|
+
def initialize(source)
|
|
3
|
+
super(source)
|
|
4
|
+
end
|
|
5
|
+
|
|
6
|
+
def login
|
|
7
|
+
# TODO: Login to your data source here if necessary
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def query(params=nil)
|
|
11
|
+
# TODO: Query your backend data source and assign the records
|
|
12
|
+
# to a nested hash structure called @result. For example:
|
|
13
|
+
# @result = {
|
|
14
|
+
# "1"=>{"name"=>"Acme", "industry"=>"Electronics"},
|
|
15
|
+
# "2"=>{"name"=>"Best", "industry"=>"Software"}
|
|
16
|
+
# }
|
|
17
|
+
raise SourceAdapterException.new("Please provide some code to read records from the backend data source")
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
def sync
|
|
21
|
+
# Manipulate @result before it is saved, or save it
|
|
22
|
+
# yourself using the Rhoconnect::Store interface.
|
|
23
|
+
# By default, super is called below which simply saves @result
|
|
24
|
+
super
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def create(create_hash)
|
|
28
|
+
# TODO: Create a new record in your backend data source
|
|
29
|
+
raise "Please provide some code to create a single record in the backend data source using the create_hash"
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def update(update_hash)
|
|
33
|
+
# TODO: Update an existing record in your backend data source
|
|
34
|
+
raise "Please provide some code to update a single record in the backend data source using the update_hash"
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
def delete(delete_hash)
|
|
38
|
+
# TODO: write some code here if applicable
|
|
39
|
+
# be sure to have a hash key and value for "object"
|
|
40
|
+
# for now, we'll say that its OK to not have a delete operation
|
|
41
|
+
# raise "Please provide some code to delete a single object in the backend application using the object_id"
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def logoff
|
|
45
|
+
# TODO: Logout from the data source if necessary
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require File.join(File.dirname(__FILE__),'..','spec_helper')
|
|
2
|
+
|
|
3
|
+
describe "<%=class_name%>" do
|
|
4
|
+
it_should_behave_like "SpecHelper" do
|
|
5
|
+
before(:each) do
|
|
6
|
+
setup_test_for <%=class_name%>,'testuser'
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
it "should process <%=class_name%> query" do
|
|
10
|
+
pending
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
it "should process <%=class_name%> create" do
|
|
14
|
+
pending
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
it "should process <%=class_name%> update" do
|
|
18
|
+
pending
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
it "should process <%=class_name%> delete" do
|
|
22
|
+
pending
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|