webroar 0.6.1 → 0.7.0
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 +7 -0
- data/README +1 -1
- data/doc/user-guide.html +125 -85
- data/doc/user-guide.txt +2 -2
- data/lib/constant.rb +23 -16
- data/lib/db_connect.rb +2 -3
- data/lib/installer.rb +17 -10
- data/lib/user_interaction.rb +21 -10
- data/lib/webroar_command.rb +21 -23
- data/src/admin_panel/Gemfile +8 -0
- data/src/admin_panel/Rakefile +2 -5
- data/src/admin_panel/app/controllers/application_controller.rb +1 -1
- data/src/admin_panel/app/controllers/exceptions_controller.rb +25 -26
- data/src/admin_panel/app/controllers/graph_controller.rb +2 -1
- data/src/admin_panel/app/helpers/admin_helper.rb +1 -1
- data/src/admin_panel/app/{models → mailers}/mailer.rb +5 -8
- data/src/admin_panel/app/models/app.rb +1 -1
- data/src/admin_panel/app/models/app_exception.rb +15 -11
- data/src/admin_panel/app/models/app_time_sample.rb +40 -10
- data/src/admin_panel/app/models/application_specification.rb +71 -41
- data/src/admin_panel/app/models/resource_usage.rb +76 -55
- data/src/admin_panel/app/models/url_breakup_time_sample.rb +6 -11
- data/src/admin_panel/app/models/url_time_sample.rb +57 -13
- data/src/admin_panel/app/views/admin/_application_table.html.erb +5 -5
- data/src/admin_panel/app/views/admin/_feedback_partial.html.erb +4 -4
- data/src/admin_panel/app/views/admin/_report_bug_partial.html.erb +5 -5
- data/src/admin_panel/app/views/admin/change_password_form.html.erb +3 -3
- data/src/admin_panel/app/views/admin/configuration.html.erb +6 -6
- data/src/admin_panel/app/views/admin/home.html.erb +4 -4
- data/src/admin_panel/app/views/admin/index.html.erb +5 -5
- data/src/admin_panel/app/views/application_specification/_application_specification_form.html.erb +15 -6
- data/src/admin_panel/app/views/exceptions/_add_and_list_exception_classes.html.erb +7 -6
- data/src/admin_panel/app/views/exceptions/_exception_backtrace_partial.html.erb +1 -1
- data/src/admin_panel/app/views/exceptions/_exception_environment_partial.html.erb +30 -30
- data/src/admin_panel/app/views/exceptions/_exception_list_partial.html.erb +11 -11
- data/src/admin_panel/app/views/exceptions/_show.html.erb +8 -8
- data/src/admin_panel/app/views/exceptions/index.html.erb +0 -1
- data/src/admin_panel/app/views/graph/_get_database_data.html.erb +1 -1
- data/src/admin_panel/app/views/graph/_get_resource_usage_data_app.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_get_resource_usage_data_server.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_get_throughput_data.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_get_url_data.html.erb +4 -4
- data/src/admin_panel/app/views/graph/_pie.html.erb +2 -2
- data/src/admin_panel/app/views/graph/_query_date.html.erb +1 -1
- data/src/admin_panel/app/views/graph/_query_period.html.erb +1 -1
- data/src/admin_panel/app/views/graph/_slider_partial.html.erb +5 -4
- data/src/admin_panel/app/views/graph/index.html.erb +0 -1
- data/src/admin_panel/app/views/headers/_add_expires_text_box.html.erb +5 -5
- data/src/admin_panel/app/views/headers/_expires_by_type_form.html.erb +1 -1
- data/src/admin_panel/app/views/headers/_headers_table.html.erb +12 -12
- data/src/admin_panel/app/views/layouts/application.html.erb +71 -51
- data/src/admin_panel/app/views/mail_specification/_current_spec.html.erb +4 -4
- data/src/admin_panel/app/views/mail_specification/_sendmail_form.html.erb +3 -3
- data/src/admin_panel/app/views/mail_specification/_smtp_form.html.erb +3 -3
- data/src/admin_panel/app/views/server_specification/_add_div.html.erb +4 -4
- data/src/admin_panel/app/views/server_specification/_ssl_support_form.html.erb +3 -2
- data/src/admin_panel/config.ru +4 -0
- data/src/admin_panel/config/application.rb +46 -0
- data/src/admin_panel/config/boot.rb +4 -112
- data/src/admin_panel/config/environment.rb +4 -85
- data/src/admin_panel/config/environments/development.rb +20 -13
- data/src/admin_panel/config/environments/production.rb +44 -17
- data/src/admin_panel/config/environments/test.rb +31 -18
- data/src/admin_panel/config/initializers/application_constants.rb +13 -11
- data/src/admin_panel/config/initializers/secret_token.rb +7 -0
- data/src/admin_panel/config/initializers/session_store.rb +8 -0
- data/src/admin_panel/config/initializers/ssl.rb +6 -2
- data/src/admin_panel/config/routes.rb +15 -57
- data/src/admin_panel/doc/README_FOR_APP +1 -1
- data/src/admin_panel/doc/app/ActionView.html +229 -0
- data/src/admin_panel/doc/app/ActionView/Helpers.html +229 -0
- data/src/admin_panel/doc/app/ActionView/Helpers/AssetTagHelper.html +277 -0
- data/src/admin_panel/doc/app/AdminController.html +814 -0
- data/src/admin_panel/doc/app/AdminHelper.html +495 -0
- data/src/admin_panel/doc/app/Analytics.html +272 -0
- data/src/admin_panel/doc/app/Analytics/Database.html +401 -0
- data/src/admin_panel/doc/app/Analytics/ResourceUsage.html +683 -0
- data/src/admin_panel/doc/app/Analytics/Throughput.html +488 -0
- data/src/admin_panel/doc/app/Analytics/Url.html +484 -0
- data/src/admin_panel/doc/app/Analytics/UrlBreakup.html +537 -0
- data/src/admin_panel/doc/app/App.html +489 -0
- data/src/admin_panel/doc/app/AppException.html +710 -0
- data/src/admin_panel/doc/app/AppTimeSample.html +620 -0
- data/src/admin_panel/doc/app/ApplicationController.html +239 -0
- data/src/admin_panel/doc/app/ApplicationHelper.html +296 -0
- data/src/admin_panel/doc/app/ApplicationSpecification.html +876 -0
- data/src/admin_panel/doc/app/ApplicationSpecificationController.html +552 -0
- data/src/admin_panel/doc/app/ApplicationSpecificationHelper.html +219 -0
- data/src/admin_panel/doc/app/Control.html +431 -0
- data/src/admin_panel/doc/app/ExceptionDetail.html +227 -0
- data/src/admin_panel/doc/app/ExceptionsController.html +754 -0
- data/src/admin_panel/doc/app/ExceptionsHelper.html +219 -0
- data/src/admin_panel/doc/app/GraphController.html +1101 -0
- data/src/admin_panel/doc/app/GraphHelper.html +285 -0
- data/src/admin_panel/doc/app/Headers.html +549 -0
- data/src/admin_panel/doc/app/HeadersController.html +507 -0
- data/src/admin_panel/doc/app/HeadersHelper.html +219 -0
- data/src/admin_panel/doc/app/MailSpecification.html +685 -0
- data/src/admin_panel/doc/app/MailSpecificationController.html +541 -0
- data/src/admin_panel/doc/app/MailSpecificationHelper.html +219 -0
- data/src/admin_panel/doc/app/Mailer.html +589 -0
- data/src/admin_panel/doc/app/Object.html +240 -0
- data/src/admin_panel/doc/app/PseudoModel.html +354 -0
- data/src/admin_panel/doc/app/ResourceUsage.html +656 -0
- data/src/admin_panel/doc/app/SCGI.html +674 -0
- data/src/admin_panel/doc/app/ServerSpecification.html +479 -0
- data/src/admin_panel/doc/app/ServerSpecificationController.html +500 -0
- data/src/admin_panel/doc/app/ServerSpecificationHelper.html +219 -0
- data/src/admin_panel/doc/app/SignalHelper.html +287 -0
- data/src/admin_panel/doc/app/UrlBreakupTimeSample.html +287 -0
- data/src/admin_panel/doc/app/UrlTimeSample.html +986 -0
- data/src/admin_panel/doc/app/User.html +290 -0
- data/src/admin_panel/doc/app/YAMLConfig.html +247 -0
- data/src/admin_panel/doc/app/YAMLWriter.html +284 -0
- data/src/admin_panel/doc/app/app/controllers/admin_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/application_controller_rb.html +54 -0
- data/src/admin_panel/doc/app/app/controllers/application_specification_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/exceptions_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/graph_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/headers_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/mail_specification_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/controllers/server_specification_controller_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/admin_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/application_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/application_specification_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/exceptions_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/graph_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/headers_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/mail_specification_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/helpers/server_specification_helper_rb.html +52 -0
- data/src/admin_panel/doc/app/app/mailers/mailer_rb.html +56 -0
- data/src/admin_panel/doc/app/app/models/app_exception_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/app_rb.html +54 -0
- data/src/admin_panel/doc/app/app/models/app_time_sample_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/application_specification_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/exception_detail_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/headers_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/mail_specification_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/pseudo_model_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/resource_usage_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/server_specification_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/url_breakup_time_sample_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/url_time_sample_rb.html +52 -0
- data/src/admin_panel/doc/app/app/models/user_rb.html +52 -0
- data/src/admin_panel/doc/app/created.rid +42 -1
- data/src/admin_panel/doc/app/doc/README_FOR_APP.html +172 -0
- data/src/admin_panel/doc/app/images/brick.png +0 -0
- data/src/admin_panel/doc/app/images/brick_link.png +0 -0
- data/src/admin_panel/doc/app/images/bug.png +0 -0
- data/src/admin_panel/doc/app/images/bullet_black.png +0 -0
- data/src/admin_panel/doc/app/images/bullet_toggle_minus.png +0 -0
- data/src/admin_panel/doc/app/images/bullet_toggle_plus.png +0 -0
- data/src/admin_panel/doc/app/images/date.png +0 -0
- data/src/admin_panel/doc/app/images/find.png +0 -0
- data/src/admin_panel/doc/app/images/loadingAnimation.gif +0 -0
- data/src/admin_panel/doc/app/images/macFFBgHack.png +0 -0
- data/src/admin_panel/doc/app/images/package.png +0 -0
- data/src/admin_panel/doc/app/images/page_green.png +0 -0
- data/src/admin_panel/doc/app/images/page_white_text.png +0 -0
- data/src/admin_panel/doc/app/images/page_white_width.png +0 -0
- data/src/admin_panel/doc/app/images/plugin.png +0 -0
- data/src/admin_panel/doc/app/images/ruby.png +0 -0
- data/src/admin_panel/doc/app/images/tag_green.png +0 -0
- data/src/admin_panel/doc/app/images/wrench.png +0 -0
- data/src/admin_panel/doc/app/images/wrench_orange.png +0 -0
- data/src/admin_panel/doc/app/images/zoom.png +0 -0
- data/src/admin_panel/doc/app/index.html +564 -20
- data/src/admin_panel/doc/app/js/darkfish.js +116 -0
- data/src/admin_panel/doc/app/js/jquery.js +32 -0
- data/src/admin_panel/doc/app/js/quicksearch.js +114 -0
- data/src/admin_panel/doc/app/js/thickbox-compressed.js +10 -0
- data/src/admin_panel/doc/app/lib/asset_tag_helper_ext_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/control_rb.html +58 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/database_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/resource_usage_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/throughput_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/url_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/graph_controller_extensions/url_breakup_analytics_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/helper_rb.html +52 -0
- data/src/admin_panel/doc/app/lib/scgi_rb.html +54 -0
- data/src/admin_panel/doc/app/lib/yaml_writer_rb.html +52 -0
- data/src/admin_panel/doc/app/rdoc.css +763 -0
- data/src/admin_panel/lib/helper.rb +6 -2
- data/src/admin_panel/public/stylesheets/other/login.css +8 -4
- data/src/admin_panel/public/stylesheets/other/style.css +21 -17
- data/src/admin_panel/script/rails +6 -0
- data/src/admin_panel/test/test_helper.rb +2 -2
- data/src/admin_panel/vendor/plugins/calendar_date_select/History.txt +281 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/MIT-LICENSE +20 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/Manifest.txt +42 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/README.txt +17 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/Rakefile +37 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/VERSION +1 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/calendar_date_select.gemspec +95 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/init.rb +1 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/functional/cds_test.html +376 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/functional/format_iso_date_test.html +52 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/prototype.js +4184 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/test.css +40 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/unit/cds_helper_methods.html +46 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/js_test/unittest.js +564 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select.rb +33 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select/calendar_date_select.rb +122 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select/form_helpers.rb +237 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/lib/calendar_date_select/includes_helper.rb +29 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/blank_iframe.html +2 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/images/calendar_date_select/calendar.gif +0 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/calendar_date_select.js +459 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_american.js +35 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_danish.js +31 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_db.js +27 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr.js +7 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_euro_24hr_ymd.js +7 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_finnish.js +32 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_hyphen_ampm.js +37 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_iso_date.js +29 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/format_italian.js +24 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ar.js +10 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/cs.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/da.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/de.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/es.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fi.js +10 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/fr.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/hu.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/it.js +9 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ja.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/nl.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/pl.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/pt.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/ru.js +10 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/sl.js +11 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/javascripts/calendar_date_select/locale/sv.js +9 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/blue.css +130 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/default.css +135 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/green.css +142 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/plain.css +128 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/red.css +135 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/public/stylesheets/calendar_date_select/silver.css +133 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/calendar_date_select/calendar_date_select_spec.rb +14 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/calendar_date_select/form_helpers_spec.rb +189 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/calendar_date_select/includes_helper_spec.rb +46 -0
- data/src/admin_panel/vendor/plugins/calendar_date_select/spec/spec_helper.rb +26 -0
- data/src/admin_panel/vendor/plugins/open_flash_chart_2_plugin/install.rb +2 -2
- data/src/admin_panel/vendor/plugins/open_flash_chart_2_plugin/uninstall.rb +2 -2
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/README.markdown +13 -0
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/init.rb +1 -0
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/lib/prototype_legacy_helper.rb +432 -0
- data/src/admin_panel/vendor/plugins/prototype_legacy_helper/test/test_prototype_helper.rb +297 -0
- data/src/helper/wr_config.c +1 -1
- data/src/ruby_lib/analyzer/message_analyzer.rb +1 -0
- data/src/ruby_lib/analyzer/webroar_analyzer.rb +2 -2
- data/src/ruby_lib/profiler/message_dispatcher.rb +1 -1
- data/src/ruby_lib/ruby_interface/version.rb +2 -2
- data/src/ruby_lib/webroar_app_loader.rb +1 -1
- data/tasks/gem.rake +5 -7
- data/tasks/test.rake +1 -0
- data/test/spec/analytics_spec.rb +25 -24
- data/test/spec/test_app/README +142 -129
- data/test/spec/test_app/Rakefile +2 -5
- data/test/spec/test_app/app/controllers/application_controller.rb +3 -8
- data/test/spec/test_app/app/controllers/test_controller.rb +3 -3
- data/test/spec/test_app/app/controllers/users_controller.rb +8 -8
- data/test/spec/test_app/app/helpers/application_helper.rb +2 -1
- data/test/spec/test_app/app/helpers/test_helper.rb +2 -0
- data/test/spec/test_app/app/helpers/users_helper.rb +2 -0
- data/test/spec/test_app/app/models/user.rb +2 -0
- data/test/spec/test_app/app/views/layouts/{users.html.erb → application.html.erb} +6 -9
- data/test/spec/test_app/app/views/test/post_data.html.erb +2 -2
- data/test/spec/test_app/app/views/test/upload_file.html.erb +1 -1
- data/test/spec/test_app/{db/migrate/20090602102438_create_users.rb → app/views/users/_form.html.erb} +22 -11
- data/test/spec/test_app/app/views/users/edit.html.erb +19 -28
- data/test/spec/test_app/app/views/users/index.html.erb +23 -19
- data/test/spec/test_app/app/views/users/new.html.erb +19 -28
- data/test/spec/test_app/app/views/users/show.html.erb +21 -18
- data/test/spec/test_app/config/application.rb +45 -0
- data/test/spec/test_app/config/boot.rb +4 -112
- data/test/spec/test_app/config/database.yml +1 -1
- data/test/spec/test_app/config/environment.rb +4 -41
- data/test/spec/test_app/config/environments/development.rb +22 -13
- data/test/spec/test_app/config/environments/production.rb +41 -20
- data/test/spec/test_app/config/environments/test.rb +35 -28
- data/test/spec/test_app/config/initializers/backtrace_silencers.rb +2 -2
- data/test/spec/test_app/config/initializers/inflections.rb +1 -1
- data/test/spec/test_app/config/initializers/secret_token.rb +7 -0
- data/test/spec/test_app/config/initializers/session_store.rb +3 -10
- data/test/spec/test_app/config/locales/en.yml +5 -0
- data/test/spec/test_app/config/routes.rb +37 -22
- data/test/spec/test_app/db/migrate/20110906113329_create_users.rb +13 -0
- data/test/spec/test_app/db/seeds.rb +7 -0
- data/test/spec/test_app/public/404.html +15 -19
- data/test/spec/test_app/public/422.html +15 -19
- data/test/spec/test_app/public/500.html +14 -18
- data/test/spec/test_app/public/index.html +41 -77
- data/test/spec/test_app/public/javascripts/controls.js +5 -3
- data/test/spec/test_app/public/javascripts/dragdrop.js +7 -6
- data/test/spec/test_app/public/javascripts/effects.js +8 -13
- data/test/spec/test_app/public/javascripts/prototype.js +3381 -1700
- data/test/spec/test_app/public/javascripts/rails.js +191 -0
- data/test/spec/test_app/public/stylesheets/scaffold.css +15 -13
- data/test/spec/test_app/script/rails +6 -0
- metadata +340 -163
- data/src/admin_panel/Gemfile.lock +0 -79
- data/src/admin_panel/doc/app/classes/ActionView.html +0 -111
- data/src/admin_panel/doc/app/classes/ActionView/Helpers.html +0 -111
- data/src/admin_panel/doc/app/classes/ActionView/Helpers/AssetTagHelper.html +0 -149
- data/src/admin_panel/doc/app/classes/AdminController.html +0 -628
- data/src/admin_panel/doc/app/classes/AdminHelper.html +0 -482
- data/src/admin_panel/doc/app/classes/Analytics.html +0 -138
- data/src/admin_panel/doc/app/classes/Analytics/Database.html +0 -245
- data/src/admin_panel/doc/app/classes/Analytics/ResourceUsage.html +0 -478
- data/src/admin_panel/doc/app/classes/Analytics/Throughput.html +0 -316
- data/src/admin_panel/doc/app/classes/Analytics/Url.html +0 -314
- data/src/admin_panel/doc/app/classes/Analytics/UrlBreakup.html +0 -372
- data/src/admin_panel/doc/app/classes/App.html +0 -298
- data/src/admin_panel/doc/app/classes/AppException.html +0 -330
- data/src/admin_panel/doc/app/classes/AppTimeSample.html +0 -427
- data/src/admin_panel/doc/app/classes/ApplicationController.html +0 -118
- data/src/admin_panel/doc/app/classes/ApplicationHelper.html +0 -172
- data/src/admin_panel/doc/app/classes/ApplicationSpecification.html +0 -641
- data/src/admin_panel/doc/app/classes/ApplicationSpecificationController.html +0 -354
- data/src/admin_panel/doc/app/classes/Control.html +0 -273
- data/src/admin_panel/doc/app/classes/ExceptionsController.html +0 -612
- data/src/admin_panel/doc/app/classes/ExceptionsHelper.html +0 -105
- data/src/admin_panel/doc/app/classes/GraphController.html +0 -804
- data/src/admin_panel/doc/app/classes/GraphHelper.html +0 -164
- data/src/admin_panel/doc/app/classes/MailSpecification.html +0 -357
- data/src/admin_panel/doc/app/classes/MailSpecificationController.html +0 -304
- data/src/admin_panel/doc/app/classes/PseudoModel.html +0 -206
- data/src/admin_panel/doc/app/classes/ResourceUsage.html +0 -425
- data/src/admin_panel/doc/app/classes/SCGI.html +0 -406
- data/src/admin_panel/doc/app/classes/ServerSpecification.html +0 -325
- data/src/admin_panel/doc/app/classes/ServerSpecificationController.html +0 -273
- data/src/admin_panel/doc/app/classes/UrlBreakupTimeSample.html +0 -169
- data/src/admin_panel/doc/app/classes/UrlTimeSample.html +0 -708
- data/src/admin_panel/doc/app/classes/User.html +0 -165
- data/src/admin_panel/doc/app/classes/YAMLWriter.html +0 -159
- data/src/admin_panel/doc/app/files/app/controllers/admin_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/application_controller_rb.html +0 -108
- data/src/admin_panel/doc/app/files/app/controllers/application_specification_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/exceptions_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/graph_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/mail_specification_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/controllers/server_specification_controller_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/admin_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/application_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/exceptions_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/helpers/graph_helper_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/app_exception_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/app_rb.html +0 -108
- data/src/admin_panel/doc/app/files/app/models/app_time_sample_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/application_specification_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/mail_specification_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/pseudo_model_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/resource_usage_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/server_specification_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/url_breakup_time_sample_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/url_time_sample_rb.html +0 -101
- data/src/admin_panel/doc/app/files/app/models/user_rb.html +0 -101
- data/src/admin_panel/doc/app/files/doc/README_FOR_APP.html +0 -109
- data/src/admin_panel/doc/app/files/lib/asset_tag_helper_ext_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/control_rb.html +0 -110
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/database_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/resource_usage_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/throughput_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/url_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/graph_controller_extensions/url_breakup_analytics_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/scgi_rb.html +0 -101
- data/src/admin_panel/doc/app/files/lib/yaml_writer_rb.html +0 -101
- data/src/admin_panel/doc/app/fr_class_index.html +0 -60
- data/src/admin_panel/doc/app/fr_file_index.html +0 -58
- data/src/admin_panel/doc/app/fr_method_index.html +0 -206
- data/src/admin_panel/doc/app/rdoc-style.css +0 -208
- data/src/admin_panel/public/dispatch.cgi +0 -10
- data/src/admin_panel/public/dispatch.fcgi +0 -24
- data/src/admin_panel/public/dispatch.rb +0 -10
- data/src/admin_panel/script/about +0 -4
- data/src/admin_panel/script/console +0 -3
- data/src/admin_panel/script/dbconsole +0 -3
- data/src/admin_panel/script/destroy +0 -3
- data/src/admin_panel/script/generate +0 -3
- data/src/admin_panel/script/performance/benchmarker +0 -3
- data/src/admin_panel/script/performance/profiler +0 -3
- data/src/admin_panel/script/performance/request +0 -3
- data/src/admin_panel/script/plugin +0 -3
- data/src/admin_panel/script/process/inspector +0 -3
- data/src/admin_panel/script/process/reaper +0 -3
- data/src/admin_panel/script/process/spawner +0 -3
- data/src/admin_panel/script/runner +0 -3
- data/src/admin_panel/script/server +0 -3
- data/test/spec/test_app/config/initializers/new_rails_defaults.rb +0 -19
- data/test/spec/test_app/script/about +0 -4
- data/test/spec/test_app/script/console +0 -3
- data/test/spec/test_app/script/dbconsole +0 -3
- data/test/spec/test_app/script/destroy +0 -3
- data/test/spec/test_app/script/generate +0 -3
- data/test/spec/test_app/script/performance/benchmarker +0 -3
- data/test/spec/test_app/script/performance/profiler +0 -3
- data/test/spec/test_app/script/plugin +0 -3
- data/test/spec/test_app/script/runner +0 -3
- data/test/spec/test_app/script/server +0 -3
- data/test/spec/test_app/vendor/.placeholder +0 -0
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
#++
|
|
20
20
|
|
|
21
21
|
unless defined?ActionMailer
|
|
22
|
-
gem 'actionmailer', '
|
|
22
|
+
gem 'actionmailer', '3.0.9'
|
|
23
23
|
require 'action_mailer'
|
|
24
24
|
require 'uri'
|
|
25
25
|
end
|
|
@@ -68,10 +68,7 @@ class Mailer < ActionMailer::Base
|
|
|
68
68
|
|
|
69
69
|
# This method is to deliver the email to recipients
|
|
70
70
|
def send_email(subject,body,from,recipients)
|
|
71
|
-
|
|
72
|
-
@from = from
|
|
73
|
-
@recipients = recipients
|
|
74
|
-
@body = body
|
|
71
|
+
mail(:to => recipients,:from => from,:subject => subject,:body => body)
|
|
75
72
|
end
|
|
76
73
|
|
|
77
74
|
# This method is used to send exception notification to the recipients
|
|
@@ -89,7 +86,7 @@ class Mailer < ActionMailer::Base
|
|
|
89
86
|
body << "#{key.to_s.upcase} : #{value}\n"
|
|
90
87
|
end
|
|
91
88
|
begin
|
|
92
|
-
|
|
89
|
+
send_email(subject,body,from,recipients).deliver
|
|
93
90
|
rescue Exception => e
|
|
94
91
|
e
|
|
95
92
|
end
|
|
@@ -137,7 +134,7 @@ class Mailer < ActionMailer::Base
|
|
|
137
134
|
body = "#{report_bug[:description]}\n\n"
|
|
138
135
|
body << "Name : #{report_bug[:name]}\nEmail Address : #{report_bug[:email]}\n"
|
|
139
136
|
begin
|
|
140
|
-
|
|
137
|
+
send_email(subject,body,from,"support@webroar.in").deliver
|
|
141
138
|
"<span style='color:green;'>Thank You for reporting the issue, We'll contact you shortly.</span>"
|
|
142
139
|
rescue Exception => exception
|
|
143
140
|
return self.parse_exception(exception),''
|
|
@@ -152,7 +149,7 @@ class Mailer < ActionMailer::Base
|
|
|
152
149
|
body = "#{feedback[:message]}\n\n"
|
|
153
150
|
body << "User Name : #{feedback[:name]}\nEmail Address : #{feedback[:email]}\n"
|
|
154
151
|
begin
|
|
155
|
-
|
|
152
|
+
send_email(subject,body,from,"support@webroar.in").deliver
|
|
156
153
|
"<span style='color:green;'>Thank you for your valuable feedback!</span>"
|
|
157
154
|
rescue Exception => exception
|
|
158
155
|
return self.parse_exception(exception),''
|
|
@@ -32,7 +32,7 @@ class App < ActiveRecord::Base
|
|
|
32
32
|
#This method is used to get the application data.
|
|
33
33
|
#It needs name of the application as an input.
|
|
34
34
|
def get_application_data(name)
|
|
35
|
-
app =
|
|
35
|
+
app = where(:name => name).first
|
|
36
36
|
return app
|
|
37
37
|
end
|
|
38
38
|
|
|
@@ -27,24 +27,25 @@ class AppException < ActiveRecord::Base
|
|
|
27
27
|
class << self
|
|
28
28
|
#Gives the array of the five (open|closed|ignored) exceptions starting from the value of varriable 'start' for an application.
|
|
29
29
|
def get_all(exception_status, app_id, page = 1, per_page = 5)
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
30
|
+
where(:app_id => app_id,
|
|
31
|
+
:exception_status => exception_status
|
|
32
|
+
).paginate(:page => page,
|
|
33
|
+
:per_page => per_page)
|
|
33
34
|
end
|
|
34
35
|
|
|
35
36
|
# Take App.id as argument and returns count of distinct open exceptions for an Application
|
|
36
37
|
def count_open(app_id)
|
|
37
|
-
|
|
38
|
+
where(:app_id => app_id, :exception_status => OPEN_EXCEPTION).count
|
|
38
39
|
end
|
|
39
40
|
|
|
40
41
|
# Take App.id as argument and returns count of distinct closed exceptions for an Application
|
|
41
42
|
def count_closed(app_id)
|
|
42
|
-
|
|
43
|
+
where(:app_id => app_id, :exception_status => CLOSED_EXCEPTION).count
|
|
43
44
|
end
|
|
44
45
|
|
|
45
46
|
# Take App.id as argument and returns count of distinct ignored exceptions for an Application
|
|
46
47
|
def count_ignored(app_id)
|
|
47
|
-
|
|
48
|
+
where(:app_id => app_id, :exception_status => IGNORED_EXCEPTION).count
|
|
48
49
|
end
|
|
49
50
|
|
|
50
51
|
# Update all exceptions status for given exceptions id array
|
|
@@ -99,7 +100,7 @@ class AppException < ActiveRecord::Base
|
|
|
99
100
|
|
|
100
101
|
# TODO Change function to fetch all exception records if we require all exception fields instead of id only
|
|
101
102
|
def get_exceptions_by_class(app_id,exception_class)
|
|
102
|
-
|
|
103
|
+
where(:app_id => app_id, :exception_class => exception_class).select(:id)
|
|
103
104
|
end
|
|
104
105
|
|
|
105
106
|
# This method is used to change status of exceptions by searching the exception with exception_class
|
|
@@ -112,10 +113,13 @@ class AppException < ActiveRecord::Base
|
|
|
112
113
|
|
|
113
114
|
# This function is used to fetch the first exception record for the given exception_message pattern ,
|
|
114
115
|
# exception_class, exception_details.controller , exception_details.method and app_id
|
|
115
|
-
def get_exception_for_analyzer(exception_hash,app_id)
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
116
|
+
def get_exception_for_analyzer(exception_hash, app_id)
|
|
117
|
+
where("exception_message like ? and exception_class = ? and controller = ? and method = ? and app_id = ?",
|
|
118
|
+
exception_hash[:exception_message].split(EXCEPTION_MESSAGE_SPLITER)[0] + '%',
|
|
119
|
+
exception_hash[:exception_class],
|
|
120
|
+
exception_hash[:controller],
|
|
121
|
+
exception_hash[:method],
|
|
122
|
+
app_id).first
|
|
119
123
|
end
|
|
120
124
|
end
|
|
121
125
|
end
|
|
@@ -34,23 +34,43 @@ class AppTimeSample < ActiveRecord::Base
|
|
|
34
34
|
interval = ((end_time-start_time) / 60).to_i
|
|
35
35
|
final_data = Array.new(interval)
|
|
36
36
|
wall_time = Array.new(interval)
|
|
37
|
-
application_samples =
|
|
38
|
-
|
|
39
|
-
|
|
37
|
+
application_samples = select('wall_time,
|
|
38
|
+
sum(db_time) as db_time,
|
|
39
|
+
sum(total_time_in_request) as total_time_in_request,
|
|
40
|
+
sum(number_of_requests) as number_of_requests ,
|
|
41
|
+
avg(avg_response_time) as avg_avg_response_time,
|
|
42
|
+
avg(peak_requests_served) as avg_peak_requests_served'
|
|
43
|
+
).where('app_id = ? and
|
|
44
|
+
wall_time >= ? and
|
|
45
|
+
wall_time < ?',
|
|
46
|
+
app_id,
|
|
47
|
+
start_time.strftime('%Y-%m-%d %H:%M:%S'),
|
|
48
|
+
end_time.strftime('%Y-%m-%d %H:%M:%S')
|
|
49
|
+
).group(:wall_time)
|
|
50
|
+
|
|
51
|
+
application_samples.each do |application_sample|
|
|
52
|
+
current_time = Time.local(application_sample.wall_time.year,
|
|
53
|
+
application_sample.wall_time.month,
|
|
54
|
+
application_sample.wall_time.day,
|
|
55
|
+
application_sample.wall_time.hour,
|
|
56
|
+
application_sample.wall_time.min,
|
|
57
|
+
'0')
|
|
40
58
|
db_time_data = 0
|
|
41
59
|
total_time_in_request = 0
|
|
42
60
|
total_requests = 0
|
|
43
61
|
total_data = 0
|
|
44
62
|
index = (current_time-start_time) / 60
|
|
45
63
|
total_time_in_request = application_sample.total_time_in_request.to_f
|
|
46
|
-
|
|
64
|
+
case type
|
|
65
|
+
when 'db'
|
|
47
66
|
db_time_data = application_sample.db_time.to_f
|
|
48
67
|
total_data = (db_time_data.to_f * 100 / total_time_in_request.to_f).to_f
|
|
49
|
-
|
|
68
|
+
when 'averageresponsetime'
|
|
50
69
|
total_data = application_sample.avg_avg_response_time.to_f
|
|
51
|
-
|
|
70
|
+
when 'throughput'
|
|
52
71
|
total_data = application_sample.avg_peak_requests_served.to_f
|
|
53
72
|
end
|
|
73
|
+
|
|
54
74
|
if max < total_data
|
|
55
75
|
max = total_data.to_i
|
|
56
76
|
end
|
|
@@ -97,7 +117,15 @@ class AppTimeSample < ActiveRecord::Base
|
|
|
97
117
|
end
|
|
98
118
|
# puts 'creating'
|
|
99
119
|
with_exception_handling("Application sample creation for application #{app_id}, wall_time #{wall_time}") do
|
|
100
|
-
create({:app_id => app_id,
|
|
120
|
+
create({:app_id => app_id,
|
|
121
|
+
:total_time_in_request => sample[0],
|
|
122
|
+
:db_time => sample[1],
|
|
123
|
+
:rendering_time => sample[2],
|
|
124
|
+
:number_of_requests => sample[3],
|
|
125
|
+
:wall_time => wall_time,
|
|
126
|
+
:sampling_rate => sampling_rate,
|
|
127
|
+
:avg_response_time => art,
|
|
128
|
+
:peak_requests_served => prs})
|
|
101
129
|
end
|
|
102
130
|
end
|
|
103
131
|
# application_samples contains at the most one sample and that is for current sampling period.
|
|
@@ -118,18 +146,20 @@ class AppTimeSample < ActiveRecord::Base
|
|
|
118
146
|
sample[4][wall_time.sec] = (sample[4][wall_time.sec] || 0 ) + 1
|
|
119
147
|
message_analyzer.application_samples[app_id][1] = sample
|
|
120
148
|
elsif wall_time < message_analyzer.application_samples[app_id].first
|
|
121
|
-
db_sample =
|
|
149
|
+
db_sample = where('app_id = ? and
|
|
150
|
+
wall_time >= ? and wall_time <= ?',
|
|
151
|
+
app_id,
|
|
152
|
+
wall_time, wall_time + message_analyzer.sampling_rate
|
|
153
|
+
).first
|
|
122
154
|
if db_sample
|
|
123
155
|
db_sample.total_time_in_request += total_spent_time
|
|
124
156
|
db_sample.db_time += db_time
|
|
125
157
|
db_sample.rendering_time += rendering_time
|
|
126
158
|
db_sample.number_of_requests += 1
|
|
127
|
-
#db_sample.avg_response_time += (total_spent_time / resource_analyzer.worker_count(app_id))
|
|
128
159
|
db_sample.save! rescue nil
|
|
129
160
|
else
|
|
130
161
|
wall_time += message_analyzer.sampling_rate
|
|
131
162
|
create_sample(app_id, [total_spent_time, db_time, rendering_time, 1, [1]], message_analyzer.sampling_rate, wall_time)
|
|
132
|
-
#create({:app_id => app_id, :total_time_in_request => total_spent_time, :db_time => db_time, :rendering_time => rendering_time, :number_of_requests => 1, :wall_time => wall_time, :sampling_rate => message_analyzer.sampling_rate, :avg_response_time => 1000, :peak_requests_served => 1 })
|
|
133
163
|
end
|
|
134
164
|
elsif wall_time > message_analyzer.application_samples[app_id].first + message_analyzer.sampling_rate
|
|
135
165
|
o_wall_time = message_analyzer.application_samples[app_id].first + message_analyzer.sampling_rate
|
|
@@ -17,8 +17,7 @@
|
|
|
17
17
|
# You should have received a copy of the GNU General Public License
|
|
18
18
|
# along with WebROaR. If not, see <http://www.gnu.org/licenses/>.
|
|
19
19
|
#++
|
|
20
|
-
|
|
21
|
-
require File.join(RAILS_ROOT, "lib", "helper.rb")
|
|
20
|
+
require File.join(File.expand_path('../../../' ,__FILE__), 'lib', 'helper')
|
|
22
21
|
|
|
23
22
|
class ApplicationSpecification < PseudoModel
|
|
24
23
|
column :app_id, :string
|
|
@@ -31,17 +30,39 @@ class ApplicationSpecification < PseudoModel
|
|
|
31
30
|
column :type1, :string
|
|
32
31
|
column :analytics, :string
|
|
33
32
|
column :environment, :string
|
|
34
|
-
column :min_worker,
|
|
35
|
-
column :max_worker,
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
33
|
+
column :min_worker, :number
|
|
34
|
+
column :max_worker, :number
|
|
35
|
+
|
|
36
|
+
validates :name, :presence => true,
|
|
37
|
+
:format => { :with => /^[A-Za-z0-9_\-]*$/i, :message => " must consist of A-Z, a-z, 0-9 , _ , - and /."},
|
|
38
|
+
:length => { :maximum => 30 },
|
|
39
|
+
:allow_nil => true
|
|
40
|
+
validates :resolver, :presence => true
|
|
41
|
+
validates :path, :presence => true
|
|
42
|
+
validates :run_as_user, :presence => true,
|
|
43
|
+
:length => { :maximum => 30 },
|
|
44
|
+
:allow_nil => true
|
|
45
|
+
validates :type1, :presence => true
|
|
46
|
+
validates :environment, :presence => true,
|
|
47
|
+
:length => { :maximum => 30 },
|
|
48
|
+
:allow_nil => true
|
|
49
|
+
validates :min_worker, :numericality => true,
|
|
50
|
+
:inclusion => { :in => 0..ALLOWED_MAX_WORKERS }
|
|
51
|
+
validates :max_worker, :numericality => true,
|
|
52
|
+
:inclusion => { :in => 0..ALLOWED_MAX_WORKERS }
|
|
53
|
+
|
|
54
|
+
validate :ensure_validations
|
|
55
|
+
|
|
56
|
+
#validates_presence_of :name, :resolver, :path, :run_as_user, :type1, :environment
|
|
57
|
+
#validates_numericality_of :min_worker, :max_worker, :greater_than_or_equal_to => 1, :less_than_or_equal_to => ALLOWED_MAX_WORKERS
|
|
58
|
+
#validates_format_of :name, :with => /^[A-Za-z0-9_\-]*$/i, :message => " must consist of A-Z, a-z, 0-9 , _ , - and /."
|
|
39
59
|
# validates_format_of :path, :with => /^\/.*$/i, :message => "entered is not the complete path for your web application root directory."
|
|
40
|
-
validates_length_of :name, :maximum => 30, :allow_nil => true
|
|
60
|
+
#validates_length_of :name, :maximum => 30, :allow_nil => true
|
|
41
61
|
#validates_length_of :path, :maximum => 256
|
|
42
|
-
validates_length_of :run_as_user, :maximum => 30, :allow_nil => true
|
|
43
|
-
validates_length_of :environment, :maximum => 30, :allow_nil => true
|
|
62
|
+
#validates_length_of :run_as_user, :maximum => 30, :allow_nil => true
|
|
63
|
+
#validates_length_of :environment, :maximum => 30, :allow_nil => true
|
|
44
64
|
# validates_format_of :baseuri, :with => /^\/[A-Za-z0-9_\-\/]*$/i, :message => "must start with '/' and contains characters A-Z, a-z, 0-9 , _ , - and /."
|
|
65
|
+
|
|
45
66
|
def write
|
|
46
67
|
|
|
47
68
|
info = YAML::load_file(CONFIG_FILE_PATH) rescue nil
|
|
@@ -69,7 +90,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
69
90
|
info.delete('Application Specification') if info['Application Specification'].length == 0
|
|
70
91
|
end
|
|
71
92
|
|
|
72
|
-
app = App.
|
|
93
|
+
app = App.where(:name => app_name).first
|
|
73
94
|
app.destroy if app
|
|
74
95
|
SignalHelper.send
|
|
75
96
|
|
|
@@ -82,9 +103,17 @@ class ApplicationSpecification < PseudoModel
|
|
|
82
103
|
|
|
83
104
|
#Converting ApplicationSpecification obeject into a Hash.
|
|
84
105
|
def obj_to_hash
|
|
85
|
-
app =
|
|
86
|
-
|
|
87
|
-
|
|
106
|
+
app = {}
|
|
107
|
+
app['name'] = name
|
|
108
|
+
app['path'] = path
|
|
109
|
+
app['run_as_user'] = run_as_user.downcase unless run_as_user.nil?
|
|
110
|
+
app['type'] = type1.downcase unless type1.nil?
|
|
111
|
+
app['analytics'] = analytics.downcase unless analytics.nil?
|
|
112
|
+
app['environment'] = environment.downcase unless environment.nil?
|
|
113
|
+
app['min_worker'] = min_worker.to_i
|
|
114
|
+
app['max_worker'] = max_worker.to_i
|
|
115
|
+
app['baseuri'] = baseuri.strip if baseuri
|
|
116
|
+
app['host_names'] = host_names if host_names
|
|
88
117
|
return app
|
|
89
118
|
end
|
|
90
119
|
|
|
@@ -99,26 +128,27 @@ class ApplicationSpecification < PseudoModel
|
|
|
99
128
|
end
|
|
100
129
|
|
|
101
130
|
#this method is used to validate the various fields of the apps model.
|
|
102
|
-
def validate
|
|
103
|
-
|
|
131
|
+
#def validate
|
|
132
|
+
def ensure_validations
|
|
133
|
+
# errors.add(:base, MIN_WORKERS_VALIDATION) if min_worker.to_i > 20
|
|
104
134
|
if max_worker.to_i < min_worker.to_i
|
|
105
|
-
errors.
|
|
135
|
+
errors.add(:base, MAX_WORKERS_VALIDATION_1)
|
|
106
136
|
# elsif max_worker.to_i > 20
|
|
107
137
|
# errors.add_to_base MAX_WORKERS_VALIDATION_2
|
|
108
138
|
end
|
|
109
139
|
#errors.add_to_base APPLICATION_PATH_EXISTANCE_VALIDATION if !File.directory?(path)
|
|
110
|
-
errors.
|
|
140
|
+
errors.add(:base, ANALYTICS_VALIDATION) if type1 and type1=="Rails" and analytics and !(analytics.downcase == "enabled" or analytics.downcase == "disabled")
|
|
111
141
|
#errors.add_to_base ENVIRONMENT_VALIDATION if !(environment.downcase == "production" or environment.downcase == "development" or environment.downcase == "test")
|
|
112
|
-
errors.
|
|
142
|
+
errors.add(:base, TYPE_VALIDATION) if type1 and !(type1.downcase == RAILS or type1.downcase == RACK)
|
|
113
143
|
if path and type1
|
|
114
144
|
if type1.downcase == RAILS
|
|
115
145
|
unless File.exists?(File.join(path, 'config', 'environment.rb'))
|
|
116
|
-
errors.
|
|
146
|
+
errors.add(:base, "The entered application path is not a valid Rails application path.")
|
|
117
147
|
end
|
|
118
148
|
end
|
|
119
149
|
if type1.downcase == RACK
|
|
120
150
|
unless File.exists?(File.join(path, 'config.ru'))
|
|
121
|
-
errors.
|
|
151
|
+
errors.add(:base, "The entered application path is not a valid Rack application path.")
|
|
122
152
|
end
|
|
123
153
|
end
|
|
124
154
|
end
|
|
@@ -132,7 +162,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
132
162
|
|
|
133
163
|
if (tokens.size == 1 and tokens[0].start_with?('/'))
|
|
134
164
|
write_attribute(:baseuri, resolver)
|
|
135
|
-
errors.
|
|
165
|
+
errors.add(:base, "BaseURI must start with '/' and contains characters A-Z, a-z, 0-9 , _ , - and /.") if !(baseuri.strip =~ /^\/[A-Za-z0-9_\-\/]*$/i)
|
|
136
166
|
else
|
|
137
167
|
write_attribute(:host_names, resolver)
|
|
138
168
|
host_name_flag = 1
|
|
@@ -145,38 +175,38 @@ class ApplicationSpecification < PseudoModel
|
|
|
145
175
|
len = token.size
|
|
146
176
|
# Whole name can not exceed total length of 253
|
|
147
177
|
if len > 253
|
|
148
|
-
errors.
|
|
178
|
+
errors.add(:base , HOSTNAME_LENGTH_EXCEEDS)
|
|
149
179
|
next
|
|
150
180
|
end
|
|
151
181
|
# Subdivision can go down to maximum 127 level.
|
|
152
182
|
labels = token.split(/\./)
|
|
153
183
|
if labels.size > 127
|
|
154
|
-
errors.
|
|
184
|
+
errors.add(:base, SUBDIVISION_EXCEEDS_127)
|
|
155
185
|
next
|
|
156
186
|
end
|
|
157
187
|
# Start with '/' indicates BaseURI
|
|
158
188
|
if token.start_with?('/')
|
|
159
|
-
errors.
|
|
189
|
+
errors.add(:base, BASEURI_AND_HOSTNAMES_EXIST)
|
|
160
190
|
break
|
|
161
191
|
end
|
|
162
192
|
# If wildcard '*' presents, Hostname should prefix with '~'
|
|
163
193
|
if token.include?("*") and !(token =~ /^~/)
|
|
164
|
-
errors.
|
|
194
|
+
errors.add(:base, "#{token} - #{START_WTIH_TILD}")
|
|
165
195
|
next
|
|
166
196
|
end
|
|
167
197
|
# Wildcard '*' can come either at start or at end, not inbetween
|
|
168
198
|
pos = token.index('*', 1)
|
|
169
199
|
if pos and pos != 1 and pos != len-1
|
|
170
|
-
errors.
|
|
200
|
+
errors.add(:base, "#{token} - #{WILDCARD_AT_START_OR_END}")
|
|
171
201
|
next
|
|
172
202
|
end
|
|
173
203
|
pos = token.index('*', 2)
|
|
174
204
|
if pos and pos != len - 1
|
|
175
|
-
errors.
|
|
205
|
+
errors.add(:base, "#{token} - #{WILDCARD_AT_START_OR_END}")
|
|
176
206
|
next
|
|
177
207
|
end
|
|
178
208
|
if token =~ /[.][.]/
|
|
179
|
-
errors.
|
|
209
|
+
errors.add(:base, "#{token} - #{CONSECUTIVE_DOTS}")
|
|
180
210
|
next
|
|
181
211
|
end
|
|
182
212
|
# Check for Letters, Digits and Hyphen
|
|
@@ -187,14 +217,14 @@ class ApplicationSpecification < PseudoModel
|
|
|
187
217
|
labels = labels[1..labels.size - 2]
|
|
188
218
|
labels.each do |label|
|
|
189
219
|
if label.size > 63
|
|
190
|
-
errors.
|
|
220
|
+
errors.add(:base, LABEL_LENGTH_EXCEEDS)
|
|
191
221
|
next
|
|
192
222
|
end
|
|
193
223
|
label.each_char do |c|
|
|
194
224
|
if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '-'
|
|
195
225
|
next
|
|
196
226
|
else
|
|
197
|
-
errors.
|
|
227
|
+
errors.add(:base, HOSTNAME_LDH)
|
|
198
228
|
err_flag = 1
|
|
199
229
|
break;
|
|
200
230
|
end
|
|
@@ -210,7 +240,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
210
240
|
c = char_array[0]
|
|
211
241
|
if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '~'
|
|
212
242
|
else
|
|
213
|
-
errors.
|
|
243
|
+
errors.add(:base, HOSTNAME_LDH)
|
|
214
244
|
err_flag = 1
|
|
215
245
|
end
|
|
216
246
|
end
|
|
@@ -219,7 +249,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
219
249
|
c = char_array[1]
|
|
220
250
|
if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '*'
|
|
221
251
|
else
|
|
222
|
-
errors.
|
|
252
|
+
errors.add(:base, HOSTNAME_LDH)
|
|
223
253
|
err_flag = 1
|
|
224
254
|
end
|
|
225
255
|
end
|
|
@@ -230,7 +260,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
230
260
|
if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '-'
|
|
231
261
|
next
|
|
232
262
|
else
|
|
233
|
-
errors.
|
|
263
|
+
errors.add(:base, HOSTNAME_LDH)
|
|
234
264
|
err_flag = 1
|
|
235
265
|
break;
|
|
236
266
|
end
|
|
@@ -245,7 +275,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
245
275
|
c = char_array[char_array.size - 1]
|
|
246
276
|
if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '*'
|
|
247
277
|
else
|
|
248
|
-
errors.
|
|
278
|
+
errors.add(:base, HOSTNAME_LDH)
|
|
249
279
|
err_flag = 1
|
|
250
280
|
end
|
|
251
281
|
end
|
|
@@ -255,7 +285,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
255
285
|
char_array.each do |c|
|
|
256
286
|
if (c >= 'a' and c <= 'z') or (c >= 'A' and c <= 'Z') or (c >= '0' and c <= '9') or c == '*'
|
|
257
287
|
else
|
|
258
|
-
errors.
|
|
288
|
+
errors.add(:base, HOSTNAME_LDH)
|
|
259
289
|
err_flag = 1
|
|
260
290
|
end
|
|
261
291
|
end
|
|
@@ -267,7 +297,7 @@ class ApplicationSpecification < PseudoModel
|
|
|
267
297
|
end
|
|
268
298
|
|
|
269
299
|
#BaseURI can not be /admin-panel
|
|
270
|
-
errors.
|
|
300
|
+
errors.add(:base, BASEURI_AS_ADMIN_PANEL_BASEURI_VALIDATION) if baseuri and baseuri.strip == ADMIN_PANEL_BASE_URI
|
|
271
301
|
all_host_names = []
|
|
272
302
|
curr_host_names_size = curr_host_names.size
|
|
273
303
|
|
|
@@ -278,8 +308,8 @@ class ApplicationSpecification < PseudoModel
|
|
|
278
308
|
if info and info['Application Specification']
|
|
279
309
|
i = 0
|
|
280
310
|
info['Application Specification'].each do |app_info|
|
|
281
|
-
errors.
|
|
282
|
-
errors.
|
|
311
|
+
errors.add(:base, "#{name} - #{APPLICATION_NAME_REPEATED}") if app_info['name'] == name and tmp_id != i
|
|
312
|
+
errors.add(:base, BASEURI_EXISTANCE_VALIDATION) if baseuri and baseuri.strip and app_info['baseuri'] == baseuri.strip and tmp_id != i
|
|
283
313
|
all_host_names << app_info['host_names'].split(/ /) if app_info['host_names'] and curr_host_names_size > 0 and tmp_id != i
|
|
284
314
|
i += 1
|
|
285
315
|
end
|
|
@@ -287,12 +317,12 @@ class ApplicationSpecification < PseudoModel
|
|
|
287
317
|
all_host_names.flatten!
|
|
288
318
|
# checking uniqueness of Hostnames
|
|
289
319
|
if curr_host_names_size > 0
|
|
290
|
-
errors.
|
|
320
|
+
errors.add(:base, HOSTNAME_REPEATED) if curr_host_names_size != curr_host_names.uniq.size
|
|
291
321
|
if all_host_names.size > 0
|
|
292
322
|
curr_host_names.each do |c_host_name|
|
|
293
323
|
all_host_names.each do |host_name|
|
|
294
324
|
if c_host_name.eql?(host_name)
|
|
295
|
-
errors.
|
|
325
|
+
errors.add(:base, "#{c_host_name}-#{HOSTNAME_REPEATED }")
|
|
296
326
|
break
|
|
297
327
|
end
|
|
298
328
|
end
|