hyper-mesh 0.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +27 -0
- data/.rspec +2 -0
- data/.rubocop.yml +11 -0
- data/.travis.yml +4 -0
- data/CODE_OF_CONDUCT.md +13 -0
- data/Gemfile +5 -0
- data/LICENSE.txt +21 -0
- data/README.md +396 -0
- data/Rakefile +6 -0
- data/app/controllers/reactive_record/application_controller.rb +4 -0
- data/app/controllers/reactive_record/reactive_record_controller.rb +49 -0
- data/bin/console +14 -0
- data/bin/setup +7 -0
- data/codeship.database.yml +18 -0
- data/config/routes.rb +7 -0
- data/docs/action_cable_quickstart.md +151 -0
- data/docs/authorization-policies.md +449 -0
- data/docs/client_side_scoping.md +103 -0
- data/docs/pusher_quickstart.md +0 -0
- data/docs/simple_poller_quickstart.md +121 -0
- data/docs/todo-example.md +116 -0
- data/docs/words-example.md +65 -0
- data/examples/action-cable/.gitignore +21 -0
- data/examples/action-cable/Gemfile +58 -0
- data/examples/action-cable/Gemfile.lock +247 -0
- data/examples/action-cable/README.md +24 -0
- data/examples/action-cable/Rakefile +6 -0
- data/examples/action-cable/app/assets/config/manifest.js +3 -0
- data/examples/action-cable/app/assets/javascripts/application.js +18 -0
- data/examples/action-cable/app/assets/stylesheets/application.css +15 -0
- data/examples/action-cable/app/controllers/application_controller.rb +3 -0
- data/examples/action-cable/app/controllers/test_controller.rb +6 -0
- data/examples/action-cable/app/models/models.rb +2 -0
- data/examples/action-cable/app/models/public/application_record.rb +3 -0
- data/examples/action-cable/app/models/public/word.rb +2 -0
- data/examples/action-cable/app/policies/application_policy.rb +6 -0
- data/examples/action-cable/app/views/components.rb +17 -0
- data/examples/action-cable/app/views/components/app.rb +18 -0
- data/examples/action-cable/app/views/layouts/application.html.erb +14 -0
- data/examples/action-cable/app/views/layouts/mailer.html.erb +13 -0
- data/examples/action-cable/app/views/layouts/mailer.text.erb +1 -0
- data/examples/action-cable/bin/bundle +3 -0
- data/examples/action-cable/bin/rails +9 -0
- data/examples/action-cable/bin/rake +9 -0
- data/examples/action-cable/bin/setup +34 -0
- data/examples/action-cable/bin/spring +15 -0
- data/examples/action-cable/bin/update +29 -0
- data/examples/action-cable/config.ru +5 -0
- data/examples/action-cable/config/application.rb +30 -0
- data/examples/action-cable/config/boot.rb +3 -0
- data/examples/action-cable/config/cable.yml +9 -0
- data/examples/action-cable/config/database.yml +25 -0
- data/examples/action-cable/config/environment.rb +5 -0
- data/examples/action-cable/config/environments/development.rb +45 -0
- data/examples/action-cable/config/environments/production.rb +86 -0
- data/examples/action-cable/config/environments/test.rb +42 -0
- data/examples/action-cable/config/initializers/application_controller_renderer.rb +6 -0
- data/examples/action-cable/config/initializers/assets.rb +11 -0
- data/examples/action-cable/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/action-cable/config/initializers/cookies_serializer.rb +5 -0
- data/examples/action-cable/config/initializers/filter_parameter_logging.rb +4 -0
- data/examples/action-cable/config/initializers/inflections.rb +16 -0
- data/examples/action-cable/config/initializers/mime_types.rb +4 -0
- data/examples/action-cable/config/initializers/new_framework_defaults.rb +24 -0
- data/examples/action-cable/config/initializers/session_store.rb +3 -0
- data/examples/action-cable/config/initializers/synchromesh.rb +5 -0
- data/examples/action-cable/config/initializers/wrap_parameters.rb +14 -0
- data/examples/action-cable/config/locales/en.yml +23 -0
- data/examples/action-cable/config/puma.rb +47 -0
- data/examples/action-cable/config/routes.rb +5 -0
- data/examples/action-cable/config/secrets.yml +22 -0
- data/examples/action-cable/config/spring.rb +6 -0
- data/examples/action-cable/db/migrate/20160921223808_create_words.rb +9 -0
- data/examples/action-cable/db/schema.rb +21 -0
- data/examples/action-cable/log/.keep +0 -0
- data/examples/action-cable/public/404.html +67 -0
- data/examples/action-cable/public/422.html +67 -0
- data/examples/action-cable/public/500.html +66 -0
- data/examples/action-cable/public/apple-touch-icon-precomposed.png +0 -0
- data/examples/action-cable/public/apple-touch-icon.png +0 -0
- data/examples/action-cable/public/favicon.ico +0 -0
- data/examples/action-cable/public/robots.txt +5 -0
- data/examples/action-cable/rails_cache_dir2/C91/480/synchromesh_active_connections +0 -0
- data/examples/action-cable/tmp/.keep +0 -0
- data/examples/action-cable/vendor/assets/javascripts/.keep +0 -0
- data/examples/action-cable/vendor/assets/stylesheets/.keep +0 -0
- data/examples/simple-poller/.gitignore +21 -0
- data/examples/simple-poller/Gemfile +64 -0
- data/examples/simple-poller/Gemfile.lock +272 -0
- data/examples/simple-poller/README.md +24 -0
- data/examples/simple-poller/Rakefile +6 -0
- data/examples/simple-poller/app/assets/config/manifest.js +3 -0
- data/examples/simple-poller/app/assets/images/.keep +0 -0
- data/examples/simple-poller/app/assets/javascripts/application.js +20 -0
- data/examples/simple-poller/app/assets/javascripts/channels/.keep +0 -0
- data/examples/simple-poller/app/assets/stylesheets/application.css +15 -0
- data/examples/simple-poller/app/channels/application_cable/channel.rb +4 -0
- data/examples/simple-poller/app/channels/application_cable/connection.rb +4 -0
- data/examples/simple-poller/app/controllers/application_controller.rb +3 -0
- data/examples/simple-poller/app/controllers/concerns/.keep +0 -0
- data/examples/simple-poller/app/controllers/test_controller.rb +6 -0
- data/examples/simple-poller/app/helpers/application_helper.rb +2 -0
- data/examples/simple-poller/app/jobs/application_job.rb +2 -0
- data/examples/simple-poller/app/mailers/application_mailer.rb +4 -0
- data/examples/simple-poller/app/models/concerns/.keep +0 -0
- data/examples/simple-poller/app/models/models.rb +2 -0
- data/examples/simple-poller/app/models/public/.keep +0 -0
- data/examples/simple-poller/app/models/public/application_record.rb +3 -0
- data/examples/simple-poller/app/models/public/word.rb +2 -0
- data/examples/simple-poller/app/policies/application_policy.rb +5 -0
- data/examples/simple-poller/app/views/components.rb +18 -0
- data/examples/simple-poller/app/views/components/.keep +0 -0
- data/examples/simple-poller/app/views/components/app.rb +40 -0
- data/examples/simple-poller/app/views/layouts/application.html.erb +14 -0
- data/examples/simple-poller/app/views/layouts/mailer.html.erb +13 -0
- data/examples/simple-poller/app/views/layouts/mailer.text.erb +1 -0
- data/examples/simple-poller/bin/bundle +3 -0
- data/examples/simple-poller/bin/rails +9 -0
- data/examples/simple-poller/bin/rake +9 -0
- data/examples/simple-poller/bin/setup +34 -0
- data/examples/simple-poller/bin/spring +16 -0
- data/examples/simple-poller/bin/update +29 -0
- data/examples/simple-poller/config.ru +5 -0
- data/examples/simple-poller/config/application.rb +20 -0
- data/examples/simple-poller/config/boot.rb +3 -0
- data/examples/simple-poller/config/cable.yml +9 -0
- data/examples/simple-poller/config/database.yml +25 -0
- data/examples/simple-poller/config/environment.rb +5 -0
- data/examples/simple-poller/config/environments/development.rb +44 -0
- data/examples/simple-poller/config/environments/production.rb +86 -0
- data/examples/simple-poller/config/environments/test.rb +42 -0
- data/examples/simple-poller/config/initializers/application_controller_renderer.rb +6 -0
- data/examples/simple-poller/config/initializers/assets.rb +11 -0
- data/examples/simple-poller/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/simple-poller/config/initializers/cookies_serializer.rb +5 -0
- data/examples/simple-poller/config/initializers/filter_parameter_logging.rb +4 -0
- data/examples/simple-poller/config/initializers/inflections.rb +16 -0
- data/examples/simple-poller/config/initializers/mime_types.rb +4 -0
- data/examples/simple-poller/config/initializers/new_framework_defaults.rb +24 -0
- data/examples/simple-poller/config/initializers/session_store.rb +3 -0
- data/examples/simple-poller/config/initializers/synchromesh.rb +15 -0
- data/examples/simple-poller/config/initializers/wrap_parameters.rb +14 -0
- data/examples/simple-poller/config/locales/en.yml +23 -0
- data/examples/simple-poller/config/puma.rb +47 -0
- data/examples/simple-poller/config/routes.rb +5 -0
- data/examples/simple-poller/config/secrets.yml +22 -0
- data/examples/simple-poller/config/spring.rb +6 -0
- data/examples/simple-poller/db/migrate/20161013220135_create_words.rb +9 -0
- data/examples/simple-poller/db/schema.rb +21 -0
- data/examples/simple-poller/db/seeds.rb +7 -0
- data/examples/simple-poller/lib/assets/.keep +0 -0
- data/examples/simple-poller/lib/tasks/.keep +0 -0
- data/examples/simple-poller/log/.keep +0 -0
- data/examples/simple-poller/public/404.html +67 -0
- data/examples/simple-poller/public/422.html +67 -0
- data/examples/simple-poller/public/500.html +66 -0
- data/examples/simple-poller/public/apple-touch-icon-precomposed.png +0 -0
- data/examples/simple-poller/public/apple-touch-icon.png +0 -0
- data/examples/simple-poller/public/favicon.ico +0 -0
- data/examples/simple-poller/public/robots.txt +5 -0
- data/examples/simple-poller/test/controllers/.keep +0 -0
- data/examples/simple-poller/test/fixtures/.keep +0 -0
- data/examples/simple-poller/test/fixtures/files/.keep +0 -0
- data/examples/simple-poller/test/fixtures/words.yml +7 -0
- data/examples/simple-poller/test/helpers/.keep +0 -0
- data/examples/simple-poller/test/integration/.keep +0 -0
- data/examples/simple-poller/test/mailers/.keep +0 -0
- data/examples/simple-poller/test/models/.keep +0 -0
- data/examples/simple-poller/test/models/word_test.rb +7 -0
- data/examples/simple-poller/test/test_helper.rb +10 -0
- data/examples/simple-poller/tmp/.keep +0 -0
- data/examples/simple-poller/vendor/assets/javascripts/.keep +0 -0
- data/examples/simple-poller/vendor/assets/stylesheets/.keep +0 -0
- data/examples/words/.gitignore +21 -0
- data/examples/words/Gemfile +58 -0
- data/examples/words/Gemfile.lock +247 -0
- data/examples/words/README.md +24 -0
- data/examples/words/Rakefile +6 -0
- data/examples/words/app/assets/config/manifest.js +3 -0
- data/examples/words/app/assets/javascripts/application.js +18 -0
- data/examples/words/app/assets/stylesheets/application.css +15 -0
- data/examples/words/app/controllers/application_controller.rb +3 -0
- data/examples/words/app/controllers/test_controller.rb +6 -0
- data/examples/words/app/models/models.rb +2 -0
- data/examples/words/app/models/public/application_record.rb +3 -0
- data/examples/words/app/models/public/word.rb +10 -0
- data/examples/words/app/policies/application_policy.rb +6 -0
- data/examples/words/app/views/components.rb +16 -0
- data/examples/words/app/views/components/app.rb +31 -0
- data/examples/words/app/views/layouts/application.html.erb +14 -0
- data/examples/words/app/views/layouts/mailer.html.erb +13 -0
- data/examples/words/app/views/layouts/mailer.text.erb +1 -0
- data/examples/words/bin/bundle +3 -0
- data/examples/words/bin/rails +9 -0
- data/examples/words/bin/rake +9 -0
- data/examples/words/bin/setup +34 -0
- data/examples/words/bin/spring +15 -0
- data/examples/words/bin/update +29 -0
- data/examples/words/config.ru +5 -0
- data/examples/words/config/application.rb +30 -0
- data/examples/words/config/boot.rb +3 -0
- data/examples/words/config/cable.yml +9 -0
- data/examples/words/config/database.yml +25 -0
- data/examples/words/config/environment.rb +5 -0
- data/examples/words/config/environments/development.rb +45 -0
- data/examples/words/config/environments/production.rb +86 -0
- data/examples/words/config/environments/test.rb +42 -0
- data/examples/words/config/initializers/application_controller_renderer.rb +6 -0
- data/examples/words/config/initializers/assets.rb +11 -0
- data/examples/words/config/initializers/backtrace_silencers.rb +7 -0
- data/examples/words/config/initializers/cookies_serializer.rb +5 -0
- data/examples/words/config/initializers/filter_parameter_logging.rb +4 -0
- data/examples/words/config/initializers/inflections.rb +16 -0
- data/examples/words/config/initializers/mime_types.rb +4 -0
- data/examples/words/config/initializers/new_framework_defaults.rb +24 -0
- data/examples/words/config/initializers/session_store.rb +3 -0
- data/examples/words/config/initializers/synchromesh.rb +5 -0
- data/examples/words/config/initializers/wrap_parameters.rb +14 -0
- data/examples/words/config/locales/en.yml +23 -0
- data/examples/words/config/puma.rb +47 -0
- data/examples/words/config/routes.rb +5 -0
- data/examples/words/config/secrets.yml +22 -0
- data/examples/words/config/spring.rb +6 -0
- data/examples/words/db/migrate/20160921223808_create_words.rb +9 -0
- data/examples/words/db/schema.rb +28 -0
- data/examples/words/log/.keep +0 -0
- data/examples/words/public/404.html +67 -0
- data/examples/words/public/422.html +67 -0
- data/examples/words/public/500.html +66 -0
- data/examples/words/public/apple-touch-icon-precomposed.png +0 -0
- data/examples/words/public/apple-touch-icon.png +0 -0
- data/examples/words/public/favicon.ico +0 -0
- data/examples/words/public/robots.txt +5 -0
- data/examples/words/tmp/.keep +0 -0
- data/examples/words/vendor/assets/javascripts/.keep +0 -0
- data/examples/words/vendor/assets/stylesheets/.keep +0 -0
- data/hyper-mesh.gemspec +82 -0
- data/lib/active_record_base.rb +152 -0
- data/lib/enumerable/pluck.rb +6 -0
- data/lib/hyper-mesh.rb +62 -0
- data/lib/hypermesh/version.rb +3 -0
- data/lib/opal/equality_patches.rb +15 -0
- data/lib/opal/parse_patch.rb +14 -0
- data/lib/opal/set_patches.rb +8 -0
- data/lib/reactive_record/active_record/aggregations.rb +69 -0
- data/lib/reactive_record/active_record/associations.rb +111 -0
- data/lib/reactive_record/active_record/base.rb +9 -0
- data/lib/reactive_record/active_record/class_methods.rb +177 -0
- data/lib/reactive_record/active_record/error.rb +26 -0
- data/lib/reactive_record/active_record/instance_methods.rb +129 -0
- data/lib/reactive_record/active_record/public_columns_hash.rb +19 -0
- data/lib/reactive_record/active_record/reactive_record/base.rb +520 -0
- data/lib/reactive_record/active_record/reactive_record/collection.rb +517 -0
- data/lib/reactive_record/active_record/reactive_record/column_types.rb +67 -0
- data/lib/reactive_record/active_record/reactive_record/dummy_value.rb +218 -0
- data/lib/reactive_record/active_record/reactive_record/isomorphic_base.rb +532 -0
- data/lib/reactive_record/active_record/reactive_record/reactive_set_relationship_helpers.rb +189 -0
- data/lib/reactive_record/active_record/reactive_record/scoped_collection.rb +62 -0
- data/lib/reactive_record/active_record/reactive_record/unscoped_collection.rb +16 -0
- data/lib/reactive_record/active_record/reactive_record/while_loading.rb +299 -0
- data/lib/reactive_record/engine.rb +13 -0
- data/lib/reactive_record/interval.rb +190 -0
- data/lib/reactive_record/permissions.rb +102 -0
- data/lib/reactive_record/pry.rb +13 -0
- data/lib/reactive_record/reactive_scope.rb +18 -0
- data/lib/reactive_record/scope_description.rb +108 -0
- data/lib/reactive_record/serializers.rb +7 -0
- data/lib/reactive_record/server_data_cache.rb +347 -0
- data/lib/reactive_record/version.rb +3 -0
- data/lib/sources/hyper-mesh/pusher.js +98 -0
- data/lib/synchromesh/action_cable.rb +39 -0
- data/lib/synchromesh/client_drivers.rb +357 -0
- data/lib/synchromesh/configuration.rb +40 -0
- data/lib/synchromesh/connection.rb +144 -0
- data/lib/synchromesh/policy.rb +504 -0
- data/lib/synchromesh/reactive_record/permission_patches.rb +43 -0
- data/lib/synchromesh/synchromesh.rb +155 -0
- data/lib/synchromesh/synchromesh_controller.rb +154 -0
- data/logo.jpg +0 -0
- data/path_release_steps.md +0 -0
- data/reactive_record_test_app/Gemfile +15 -0
- data/reactive_record_test_app/Gemfile.lock +209 -0
- data/reactive_record_test_app/README.rdoc +261 -0
- data/reactive_record_test_app/Rakefile +7 -0
- data/reactive_record_test_app/app/assets/javascripts/application.rb +5 -0
- data/reactive_record_test_app/app/assets/javascripts/components/another_component.rb +24 -0
- data/reactive_record_test_app/app/assets/javascripts/components/empty_component.rb +6 -0
- data/reactive_record_test_app/app/assets/javascripts/components/todo_item_component.js.rb +16 -0
- data/reactive_record_test_app/app/assets/javascripts/components/todos_component.js.rb +42 -0
- data/reactive_record_test_app/app/assets/javascripts/components/todos_main_component.rb +49 -0
- data/reactive_record_test_app/app/assets/javascripts/react_js_test_only.js +21618 -0
- data/reactive_record_test_app/app/assets/javascripts/reactive_record_config.js +2 -0
- data/reactive_record_test_app/app/assets/javascripts/spec/reactive_record_xspec.js.rb +42 -0
- data/reactive_record_test_app/app/assets/stylesheets/application.css +13 -0
- data/reactive_record_test_app/app/controllers/application_controller.rb +8 -0
- data/reactive_record_test_app/app/controllers/home_controller.rb +7 -0
- data/reactive_record_test_app/app/controllers/test_controller.rb +7 -0
- data/reactive_record_test_app/app/helpers/application_helper.rb +2 -0
- data/reactive_record_test_app/app/mailers/.gitkeep +0 -0
- data/reactive_record_test_app/app/models/.gitkeep +0 -0
- data/reactive_record_test_app/app/policies/application_policy.rb +5 -0
- data/reactive_record_test_app/app/views/components.rb +4 -0
- data/reactive_record_test_app/app/views/components/test.rb +18 -0
- data/reactive_record_test_app/app/views/home/index.html.erb +1 -0
- data/reactive_record_test_app/app/views/layouts/application.html.erb +17 -0
- data/reactive_record_test_app/app/views/models.rb +1 -0
- data/reactive_record_test_app/app/views/models/address.rb +13 -0
- data/reactive_record_test_app/app/views/models/comment.rb +19 -0
- data/reactive_record_test_app/app/views/models/todo_item.rb +36 -0
- data/reactive_record_test_app/app/views/models/user.rb +78 -0
- data/reactive_record_test_app/config.ru +33 -0
- data/reactive_record_test_app/config/application.rb +73 -0
- data/reactive_record_test_app/config/boot.rb +10 -0
- data/reactive_record_test_app/config/database.yml +25 -0
- data/reactive_record_test_app/config/environment.rb +5 -0
- data/reactive_record_test_app/config/environments/development.rb +43 -0
- data/reactive_record_test_app/config/environments/production.rb +70 -0
- data/reactive_record_test_app/config/environments/test.rb +41 -0
- data/reactive_record_test_app/config/initializers/backtrace_silencers.rb +7 -0
- data/reactive_record_test_app/config/initializers/inflections.rb +15 -0
- data/reactive_record_test_app/config/initializers/mime_types.rb +5 -0
- data/reactive_record_test_app/config/initializers/secret_token.rb +7 -0
- data/reactive_record_test_app/config/initializers/session_store.rb +8 -0
- data/reactive_record_test_app/config/initializers/wrap_parameters.rb +14 -0
- data/reactive_record_test_app/config/locales/en.yml +5 -0
- data/reactive_record_test_app/config/routes.rb +7 -0
- data/reactive_record_test_app/db/migrate/20150617002932_create_todo_items.rb +11 -0
- data/reactive_record_test_app/db/migrate/20150617134028_create_users.rb +14 -0
- data/reactive_record_test_app/db/migrate/20150729195556_add_address_to_user.rb +20 -0
- data/reactive_record_test_app/db/migrate/20150826142045_create_comments.rb +10 -0
- data/reactive_record_test_app/db/migrate/20150828172008_add_single_comment_to_todo_item.rb +5 -0
- data/reactive_record_test_app/db/migrate/20150908184118_add_address_id_to_user.rb +5 -0
- data/reactive_record_test_app/db/migrate/20150917220236_add_second_address_to_user.rb +10 -0
- data/reactive_record_test_app/db/migrate/20151009000111_add_test_data_attributes_to_user.rb +6 -0
- data/reactive_record_test_app/db/migrate/20160129182544_add_test_enum_to_user.rb +5 -0
- data/reactive_record_test_app/db/schema.rb +63 -0
- data/reactive_record_test_app/db/seeds.rb +60 -0
- data/reactive_record_test_app/public/404.html +26 -0
- data/reactive_record_test_app/public/422.html +26 -0
- data/reactive_record_test_app/public/500.html +25 -0
- data/reactive_record_test_app/public/favicon.ico +0 -0
- data/reactive_record_test_app/script/rails +6 -0
- data/reactive_record_test_app/spec-opal/active-record/aggregations_spec.rb +41 -0
- data/reactive_record_test_app/spec-opal/active-record/associations_spec.rb +75 -0
- data/reactive_record_test_app/spec-opal/active-record/base_spec.rb +126 -0
- data/reactive_record_test_app/spec-opal/active-record/dummy_value_spec.rb +27 -0
- data/reactive_record_test_app/spec-opal/active-record/edge_cases_spec.rb +116 -0
- data/reactive_record_test_app/spec-opal/active-record/enum_spec.rb +43 -0
- data/reactive_record_test_app/spec-opal/active-record/instance_methods_spec.rb +53 -0
- data/reactive_record_test_app/spec-opal/active-record/non_ar_aggregations_spec.rb +74 -0
- data/reactive_record_test_app/spec-opal/active-record/permissions_spec.rb +170 -0
- data/reactive_record_test_app/spec-opal/active-record/prerendering_spec.rb +49 -0
- data/reactive_record_test_app/spec-opal/active-record/reactive_record_load_spec.rb +23 -0
- data/reactive_record_test_app/spec-opal/active-record/rendering_spec.rb +221 -0
- data/reactive_record_test_app/spec-opal/active-record/save_spec.rb +125 -0
- data/reactive_record_test_app/spec-opal/active-record/scope_spec.rb +85 -0
- data/reactive_record_test_app/spec-opal/active-record/update_aggregations_spec.rb +76 -0
- data/reactive_record_test_app/spec-opal/active-record/update_attributes_spec.rb +186 -0
- data/reactive_record_test_app/spec-opal/active-record/virtual_methods_spec.rb +71 -0
- data/reactive_record_test_app/spec-opal/index.html.erb +11 -0
- data/reactive_record_test_app/spec-opal/spec_helper.js.rb +268 -0
- data/reactive_record_test_app/spec-opal/vendor/es5-shim.min.js +6 -0
- data/reactive_record_test_app/spec_dont_run/README.md +26 -0
- data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzmany_to_many_spec_moved_to_main_suite.rb +30 -0
- data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzrevert_record_spec_moved.rb +78 -0
- data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzupdate_associations_spec_moved.rb +142 -0
- data/reactive_record_test_app/spec_dont_run/moved_to_main_spec_dir/zzzupdate_scopes_movedspec.rb +48 -0
- data/remote.md +115 -0
- data/spec/bin/firebug-2.0.13-fx.xpi +0 -0
- data/spec/component_helpers_xspec.rb +49 -0
- data/spec/factories/child_model.rb +5 -0
- data/spec/factories/comment.rb +5 -0
- data/spec/factories/test_models.rb +5 -0
- data/spec/factories/todo.rb +5 -0
- data/spec/factories/user.rb +5 -0
- data/spec/reactive_record/edge_cases_spec.rb +31 -0
- data/spec/reactive_record/factory.rb +62 -0
- data/spec/reactive_record/many_to_many_spec.rb +50 -0
- data/spec/reactive_record/play.rb +64 -0
- data/spec/reactive_record/pry_rescue_xspec.rb +48 -0
- data/spec/reactive_record/revert_spec.rb +112 -0
- data/spec/reactive_record/update_associations_spec.rb +189 -0
- data/spec/reactive_record/update_scopes_spec.rb +53 -0
- data/spec/spec_helper.rb +366 -0
- data/spec/support/component_helpers.rb +351 -0
- data/spec/synchromesh/column_types/column_type_spec.rb +302 -0
- data/spec/synchromesh/connection_spec.rb +144 -0
- data/spec/synchromesh/crud_access_regulation/broadcast_controls_access_spec.rb +105 -0
- data/spec/synchromesh/crud_access_regulation/model_policies_spec.rb +131 -0
- data/spec/synchromesh/examples/dictionary.rb +239 -0
- data/spec/synchromesh/examples/dictionary_with_client_scopes.rb +196 -0
- data/spec/synchromesh/examples/random_examples.rb +100 -0
- data/spec/synchromesh/examples/scoped_todos_spec.rb +167 -0
- data/spec/synchromesh/integration/authorization_spec.rb +111 -0
- data/spec/synchromesh/integration/default_scope_spec.rb +121 -0
- data/spec/synchromesh/integration/has_many_through_spec.rb +173 -0
- data/spec/synchromesh/integration/relationships_spec.rb +263 -0
- data/spec/synchromesh/integration/scope_spec.rb +553 -0
- data/spec/synchromesh/integration/synchromesh_spec.rb +80 -0
- data/spec/synchromesh/integration/test_components.rb +18 -0
- data/spec/synchromesh/integration/transports_spec.rb +308 -0
- data/spec/synchromesh/policies/auto_connect_spec.rb +60 -0
- data/spec/synchromesh/policies/auto_loader_spec.rb +34 -0
- data/spec/synchromesh/policies/policy_methods_spec.rb +85 -0
- data/spec/synchromesh/policies/regulate_all_broadcasts_spec.rb +315 -0
- data/spec/synchromesh/policies/regulate_broadcast_spec.rb +370 -0
- data/spec/synchromesh/policies/regulate_class_connection_spec.rb +50 -0
- data/spec/synchromesh/policies/regulate_instance_connection_spec.rb +66 -0
- data/spec/test_app/Gemfile +61 -0
- data/spec/test_app/Gemfile.lock +253 -0
- data/spec/test_app/Rakefile +6 -0
- data/spec/test_app/app/assets/javascripts/application.js +6 -0
- data/spec/test_app/app/assets/stylesheets/application.css +15 -0
- data/spec/test_app/app/controllers/application_controller.rb +13 -0
- data/spec/test_app/app/controllers/test_controller.rb +5 -0
- data/spec/test_app/app/models/_react_public_models.rb +2 -0
- data/spec/test_app/app/models/public/address.rb +13 -0
- data/spec/test_app/app/models/public/child_model.rb +3 -0
- data/spec/test_app/app/models/public/comment.rb +25 -0
- data/spec/test_app/app/models/public/test_model.rb +5 -0
- data/spec/test_app/app/models/public/todo.rb +6 -0
- data/spec/test_app/app/models/public/todo_item.rb +36 -0
- data/spec/test_app/app/models/public/user.rb +88 -0
- data/spec/test_app/app/policies/auto_loader_test_classa_policy.rb +3 -0
- data/spec/test_app/app/policies/auto_loader_test_classb_policy.rb +3 -0
- data/spec/test_app/app/policies/auto_loader_test_classc_policy.rb +3 -0
- data/spec/test_app/app/policies/auto_loader_test_classd_policy.rb +3 -0
- data/spec/test_app/app/views/components.rb +14 -0
- data/spec/test_app/app/views/components/show.rb +5 -0
- data/spec/test_app/app/views/layouts/application.html.erb +14 -0
- data/spec/test_app/bin/bundle +3 -0
- data/spec/test_app/bin/rails +4 -0
- data/spec/test_app/bin/rake +4 -0
- data/spec/test_app/bin/setup +29 -0
- data/spec/test_app/config.ru +4 -0
- data/spec/test_app/config/application.rb +42 -0
- data/spec/test_app/config/boot.rb +6 -0
- data/spec/test_app/config/cable.yml +10 -0
- data/spec/test_app/config/database.yml +47 -0
- data/spec/test_app/config/environment.rb +5 -0
- data/spec/test_app/config/environments/development.rb +41 -0
- data/spec/test_app/config/environments/production.rb +79 -0
- data/spec/test_app/config/environments/test.rb +42 -0
- data/spec/test_app/config/initializers/assets.rb +11 -0
- data/spec/test_app/config/initializers/backtrace_silencers.rb +7 -0
- data/spec/test_app/config/initializers/cookies_serializer.rb +3 -0
- data/spec/test_app/config/initializers/filter_parameter_logging.rb +4 -0
- data/spec/test_app/config/initializers/inflections.rb +16 -0
- data/spec/test_app/config/initializers/mime_types.rb +4 -0
- data/spec/test_app/config/initializers/session_store.rb +3 -0
- data/spec/test_app/config/initializers/synchromesh.rb +11 -0
- data/spec/test_app/config/initializers/wrap_parameters.rb +14 -0
- data/spec/test_app/config/locales/en.yml +23 -0
- data/spec/test_app/config/routes.rb +61 -0
- data/spec/test_app/config/secrets.yml +22 -0
- data/spec/test_app/db/development.sqlite3 +0 -0
- data/spec/test_app/db/migrate/20160731182106_create_test_models.rb +75 -0
- data/spec/test_app/db/schema.rb +88 -0
- data/spec/test_app/db/seeds.rb +7 -0
- data/spec/test_app/lib/assets/.keep +0 -0
- data/spec/test_app/log/.keep +0 -0
- data/spec/test_app/public/404.html +67 -0
- data/spec/test_app/public/422.html +67 -0
- data/spec/test_app/public/500.html +66 -0
- data/spec/test_app/public/favicon.ico +0 -0
- data/spec/vendor/es5-shim.min.js +6 -0
- data/terminal.md +66 -0
- metadata +1175 -0
@@ -0,0 +1,43 @@
|
|
1
|
+
# acting user is the acting user... okay
|
2
|
+
|
3
|
+
class ActiveRecord::Base
|
4
|
+
|
5
|
+
def view_permitted?(attribute)
|
6
|
+
HyperMesh::InternalPolicy.accessible_attributes_for(self, acting_user).include? attribute.to_sym
|
7
|
+
end
|
8
|
+
|
9
|
+
def create_permitted?
|
10
|
+
false
|
11
|
+
end
|
12
|
+
|
13
|
+
def update_permitted?
|
14
|
+
false
|
15
|
+
end
|
16
|
+
|
17
|
+
def destroy_permitted?
|
18
|
+
false
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
module HyperMesh
|
23
|
+
class InternalPolicy
|
24
|
+
|
25
|
+
def self.accessible_attributes_for(model, acting_user)
|
26
|
+
user_channels = ClassConnectionRegulation.connections_for(acting_user, false) +
|
27
|
+
InstanceConnectionRegulation.connections_for(acting_user, false)
|
28
|
+
internal_policy = InternalPolicy.new(model, model.attribute_names, user_channels)
|
29
|
+
ChannelBroadcastRegulation.broadcast(internal_policy)
|
30
|
+
InstanceBroadcastRegulation.broadcast(model, internal_policy)
|
31
|
+
internal_policy.accessible_attributes_for
|
32
|
+
end
|
33
|
+
|
34
|
+
def accessible_attributes_for
|
35
|
+
accessible_attributes = Set.new
|
36
|
+
@channel_sets.each do |channel, attribute_set|
|
37
|
+
accessible_attributes.merge attribute_set
|
38
|
+
end
|
39
|
+
accessible_attributes << :id unless accessible_attributes.empty?
|
40
|
+
accessible_attributes
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'synchromesh/configuration'
|
2
|
+
# Provides the configuration and the two basic routines for the server
|
3
|
+
# to indicate that records have changed: after_change and after_destroy
|
4
|
+
module HyperMesh
|
5
|
+
|
6
|
+
extend Configuration
|
7
|
+
|
8
|
+
def self.config_reset
|
9
|
+
load File.join(File.dirname(__FILE__), 'reactive_record', 'permission_patches.rb')
|
10
|
+
Object.send(:remove_const, :Application) if @fake_application_defined
|
11
|
+
policy = begin
|
12
|
+
Object.const_get 'ApplicationPolicy'
|
13
|
+
rescue Exception => e
|
14
|
+
raise e unless e.is_a?(NameError) && e.message == "uninitialized constant ApplicationPolicy"
|
15
|
+
end
|
16
|
+
application = begin
|
17
|
+
Object.const_get('Application')
|
18
|
+
rescue Exception => e
|
19
|
+
raise e unless e.is_a?(NameError) && e.message == "uninitialized constant Application"
|
20
|
+
end if policy
|
21
|
+
if policy && !application
|
22
|
+
Object.const_set 'Application', Class.new
|
23
|
+
@fake_application_defined = true
|
24
|
+
end
|
25
|
+
@pusher = nil
|
26
|
+
Connection.build_tables
|
27
|
+
end
|
28
|
+
|
29
|
+
define_setting(:transport, :none) do |transport|
|
30
|
+
if transport == :action_cable
|
31
|
+
require 'synchromesh/action_cable'
|
32
|
+
opts[:refresh_channels_every] = :never
|
33
|
+
else
|
34
|
+
require 'pusher' if transport == :pusher
|
35
|
+
opts[:refresh_channels_every] = nil if opts[:refresh_channels_every] == :never
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
define_setting :opts, {}
|
40
|
+
define_setting :channel_prefix
|
41
|
+
define_setting :client_logging, true
|
42
|
+
|
43
|
+
def self.app_id
|
44
|
+
opts[:app_id] || Pusher.app_id if transport == :pusher
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.key
|
48
|
+
opts[:key] || Pusher.key if transport == :pusher
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.secret
|
52
|
+
opts[:secret] || Pusher.secret if transport == :pusher
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.encrypted
|
56
|
+
opts.key?(:encrypted) ? opts[:encrypted] : true
|
57
|
+
end
|
58
|
+
|
59
|
+
def self.expire_polled_connection_in
|
60
|
+
opts[:expire_polled_connection_in] || (5 * 60)
|
61
|
+
end
|
62
|
+
|
63
|
+
def self.seconds_between_poll
|
64
|
+
opts[:seconds_between_poll] || 0.5
|
65
|
+
end
|
66
|
+
|
67
|
+
def self.expire_new_connection_in
|
68
|
+
opts[:expire_new_connection_in] || 10.seconds
|
69
|
+
end
|
70
|
+
|
71
|
+
def self.refresh_channels_timeout
|
72
|
+
opts[:refresh_channels_timeout] || 5.seconds
|
73
|
+
end
|
74
|
+
|
75
|
+
def self.refresh_channels_every
|
76
|
+
opts[:refresh_channels_every] || 2.minutes
|
77
|
+
end
|
78
|
+
|
79
|
+
def self.refresh_channels
|
80
|
+
new_channels = pusher.channels[:channels].collect do |channel|
|
81
|
+
channel.gsub(/^#{Regexp.quote(HyperMesh.channel)}/,'')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
def self.send(channel, data)
|
86
|
+
if on_console?
|
87
|
+
send_to_server(channel, data)
|
88
|
+
elsif transport == :pusher
|
89
|
+
pusher.trigger("#{HyperMesh.channel}-#{data[1][:channel]}", *data)
|
90
|
+
elsif transport == :action_cable
|
91
|
+
ActionCable.server.broadcast("synchromesh-#{channel}", message: data[0], data: data[1])
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
def self.on_console?
|
96
|
+
defined?(Rails::Console) #&& transport == :action_cable &&
|
97
|
+
#defined?(ActionCable::Server::Base) &&
|
98
|
+
#ActionCable::Server::Base.config.cable['adapter'] == 'async'
|
99
|
+
end
|
100
|
+
|
101
|
+
def self.send_to_server(channel, data)
|
102
|
+
salt = SecureRandom.hex
|
103
|
+
authorization = HyperMesh.authorization(salt, channel, data[1][:broadcast_id])
|
104
|
+
raise 'no server running' unless Connection.root_path
|
105
|
+
uri = URI("#{Connection.root_path}console_update")
|
106
|
+
http = Net::HTTP.new(uri.host, uri.port)
|
107
|
+
request = Net::HTTP::Post.new(uri.path, 'Content-Type' => 'application/json')
|
108
|
+
if uri.scheme = 'https'
|
109
|
+
http.use_ssl = true
|
110
|
+
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
111
|
+
end
|
112
|
+
request.body = {
|
113
|
+
channel: channel, data: data, salt: salt, authorization: authorization
|
114
|
+
}.to_json
|
115
|
+
http.request(request)
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.pusher
|
119
|
+
unless @pusher
|
120
|
+
unless channel_prefix
|
121
|
+
self.transport = nil
|
122
|
+
raise '******** NO CHANNEL PREFIX SET ***************'
|
123
|
+
end
|
124
|
+
@pusher = Pusher::Client.new(
|
125
|
+
opts || { app_id: app_id, key: key, secret: secret }
|
126
|
+
)
|
127
|
+
end
|
128
|
+
@pusher
|
129
|
+
end
|
130
|
+
|
131
|
+
def self.channel
|
132
|
+
"private-#{channel_prefix}"
|
133
|
+
end
|
134
|
+
|
135
|
+
def self.authorization(salt, channel, session_id)
|
136
|
+
secret_key = Rails.application.secrets[:secret_key_base]
|
137
|
+
Digest::SHA1.hexdigest(
|
138
|
+
"salt: #{salt}, channel: #{channel}, session_id: #{session_id}, secret_key: #{secret_key}"
|
139
|
+
)
|
140
|
+
end
|
141
|
+
|
142
|
+
def self.after_commit(operation, model)
|
143
|
+
InternalPolicy.regulate_broadcast(model) do |data|
|
144
|
+
if HyperMesh.on_console? && Connection.root_path
|
145
|
+
HyperMesh.send_to_server(data[:channel], [operation, data])
|
146
|
+
else
|
147
|
+
Connection.send_to_channel(data[:channel], [operation, data])
|
148
|
+
end
|
149
|
+
end
|
150
|
+
rescue Exception
|
151
|
+
nil # this is because during db migration we have problems... should investigate more...
|
152
|
+
end
|
153
|
+
|
154
|
+
Connection.transport = self
|
155
|
+
end
|
@@ -0,0 +1,154 @@
|
|
1
|
+
module ReactiveRecord
|
2
|
+
Engine.routes.append do
|
3
|
+
|
4
|
+
module ::WebConsole
|
5
|
+
class Middleware
|
6
|
+
private
|
7
|
+
def acceptable_content_type?(headers)
|
8
|
+
Mime::Type.parse(headers['Content-Type'] || '').first == Mime[:html]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end if defined? ::WebConsole::Middleware
|
12
|
+
|
13
|
+
module ::Rails
|
14
|
+
module Rack
|
15
|
+
class Logger < ActiveSupport::LogSubscriber
|
16
|
+
unless method_defined? :pre_synchromesh_call
|
17
|
+
alias pre_synchromesh_call call
|
18
|
+
def call(env)
|
19
|
+
if !HyperMesh.opts[:noisy] && env['HTTP_X_SYNCHROMESH_SILENT_REQUEST']
|
20
|
+
Rails.logger.silence do
|
21
|
+
pre_synchromesh_call(env)
|
22
|
+
end
|
23
|
+
else
|
24
|
+
pre_synchromesh_call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end if defined?(::Rails::Rack::Logger)
|
31
|
+
|
32
|
+
class HyperMeshController < ::ApplicationController
|
33
|
+
protect_from_forgery except: [:console_update]
|
34
|
+
|
35
|
+
def client_id
|
36
|
+
params[:client_id]
|
37
|
+
end
|
38
|
+
|
39
|
+
before_action do
|
40
|
+
session.delete 'synchromesh-dummy-init' unless session.id
|
41
|
+
end
|
42
|
+
|
43
|
+
def channels(user = acting_user, session_id = session.id)
|
44
|
+
HyperMesh::AutoConnect.channels(session_id, user)
|
45
|
+
end
|
46
|
+
|
47
|
+
def can_connect?(channel, user = acting_user)
|
48
|
+
HyperMesh::InternalPolicy.regulate_connection(
|
49
|
+
user,
|
50
|
+
HyperMesh::InternalPolicy.channel_to_string(channel)
|
51
|
+
)
|
52
|
+
true
|
53
|
+
rescue
|
54
|
+
nil
|
55
|
+
end
|
56
|
+
|
57
|
+
def view_permitted?(model, attr, user = acting_user)
|
58
|
+
!!model.check_permission_with_acting_user(user, :view_permitted?, attr)
|
59
|
+
rescue
|
60
|
+
nil
|
61
|
+
end
|
62
|
+
|
63
|
+
def viewable_attributes(model, user = acting_user)
|
64
|
+
model.attributes.select { |attr| view_permitted?(model, attr, user) }
|
65
|
+
end
|
66
|
+
|
67
|
+
[:create, :update, :destroy].each do |op|
|
68
|
+
define_method "#{op}_permitted?" do |model, user = acting_user|
|
69
|
+
begin
|
70
|
+
!!model.check_permission_with_acting_user(user, "#{op}_permitted?".to_sym)
|
71
|
+
rescue
|
72
|
+
nil
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
76
|
+
|
77
|
+
def debug_console
|
78
|
+
if Rails.env.development?
|
79
|
+
render inline: "<style>div#console {height: 100% !important;}</style>\n".html_safe
|
80
|
+
# "<div>additional helper methods: channels, can_connect? "\
|
81
|
+
# "viewable_attributes, view_permitted?, create_permitted?, "\
|
82
|
+
# "update_permitted? and destroy_permitted?</div>\n".html_safe
|
83
|
+
console
|
84
|
+
else
|
85
|
+
head :unauthorized
|
86
|
+
end
|
87
|
+
end
|
88
|
+
|
89
|
+
def subscribe
|
90
|
+
HyperMesh::InternalPolicy.regulate_connection(try(:acting_user), params[:channel])
|
91
|
+
root_path = request.original_url.gsub(/synchromesh-subscribe.*$/, '')
|
92
|
+
HyperMesh::Connection.open(params[:channel], client_id, root_path)
|
93
|
+
head :ok
|
94
|
+
rescue Exception
|
95
|
+
head :unauthorized
|
96
|
+
end
|
97
|
+
|
98
|
+
def read
|
99
|
+
root_path = request.original_url.gsub(/synchromesh-read.*$/, '')
|
100
|
+
data = HyperMesh::Connection.read(client_id, root_path)
|
101
|
+
render json: data
|
102
|
+
end
|
103
|
+
|
104
|
+
def pusher_auth
|
105
|
+
channel = params[:channel_name].gsub(/^#{Regexp.quote(HyperMesh.channel)}\-/,'')
|
106
|
+
HyperMesh::InternalPolicy.regulate_connection(acting_user, channel)
|
107
|
+
response = HyperMesh.pusher.authenticate(params[:channel_name], params[:socket_id])
|
108
|
+
render json: response
|
109
|
+
rescue Exception => e
|
110
|
+
head :unauthorized
|
111
|
+
end
|
112
|
+
|
113
|
+
def action_cable_auth
|
114
|
+
channel = params[:channel_name].gsub(/^#{Regexp.quote(HyperMesh.channel)}\-/,'')
|
115
|
+
HyperMesh::InternalPolicy.regulate_connection(acting_user, channel)
|
116
|
+
salt = SecureRandom.hex
|
117
|
+
authorization = HyperMesh.authorization(salt, channel, client_id)
|
118
|
+
render json: {authorization: authorization, salt: salt}
|
119
|
+
rescue Exception
|
120
|
+
head :unauthorized
|
121
|
+
end
|
122
|
+
|
123
|
+
def connect_to_transport
|
124
|
+
root_path = request.original_url.gsub(/synchromesh-connect-to-transport.*$/, '')
|
125
|
+
render json: HyperMesh::Connection.connect_to_transport(params[:channel], client_id, root_path)
|
126
|
+
end
|
127
|
+
|
128
|
+
def console_update
|
129
|
+
authorization = HyperMesh.authorization(params[:salt], params[:channel], params[:data][1][:broadcast_id]) #params[:data].to_json)
|
130
|
+
return head :unauthorized if authorization != params[:authorization]
|
131
|
+
HyperMesh::Connection.send_to_channel(params[:channel], params[:data])
|
132
|
+
head :no_content
|
133
|
+
rescue
|
134
|
+
head :unauthorized
|
135
|
+
end
|
136
|
+
|
137
|
+
end unless defined? HyperMeshController
|
138
|
+
|
139
|
+
match 'synchromesh-subscribe/:client_id/:channel',
|
140
|
+
to: 'hyper_mesh#subscribe', via: :get
|
141
|
+
match 'synchromesh-read/:client_id',
|
142
|
+
to: 'hyper_mesh#read', via: :get
|
143
|
+
match 'synchromesh-pusher-auth',
|
144
|
+
to: 'hyper_mesh#pusher_auth', via: :post
|
145
|
+
match 'synchromesh-action-cable-auth/:client_id/:channel_name',
|
146
|
+
to: 'hyper_mesh#action_cable_auth', via: :post
|
147
|
+
match 'synchromesh-connect-to-transport/:client_id/:channel',
|
148
|
+
to: 'hyper_mesh#connect_to_transport', via: :get
|
149
|
+
match 'console',
|
150
|
+
to: 'hyper_mesh#debug_console', via: :get
|
151
|
+
match 'console_update',
|
152
|
+
to: 'hyper_mesh#console_update', via: :post
|
153
|
+
end
|
154
|
+
end
|
data/logo.jpg
ADDED
Binary file
|
File without changes
|
@@ -0,0 +1,15 @@
|
|
1
|
+
source "http://rubygems.org"
|
2
|
+
gem "rails"
|
3
|
+
gem 'sqlite3'
|
4
|
+
gem 'react-rails'
|
5
|
+
gem 'opal', '~> 0.9.0'
|
6
|
+
gem 'opal-rails'
|
7
|
+
gem 'therubyracer'
|
8
|
+
gem 'jquery-cookie-rails'
|
9
|
+
gem 'byebug'
|
10
|
+
gem 'pry-rails'
|
11
|
+
gem 'pry-rescue'
|
12
|
+
gem 'opal-rspec-rails', github: 'opal/opal-rspec-rails'
|
13
|
+
gem 'hyper-mesh', path: "../.."
|
14
|
+
gem 'web-console'
|
15
|
+
gem 'hyper-trace'
|
@@ -0,0 +1,209 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/opal/opal-rspec-rails.git
|
3
|
+
revision: 0b8dc2745bee1aa59fe56323cc6d6493d2129cfc
|
4
|
+
specs:
|
5
|
+
opal-rspec-rails (0.1.0)
|
6
|
+
opal (~> 0.9.2)
|
7
|
+
opal-rails (~> 0.9.0.dev)
|
8
|
+
opal-rspec (~> 0.5.0)
|
9
|
+
|
10
|
+
PATH
|
11
|
+
remote: ../..
|
12
|
+
specs:
|
13
|
+
hyper-mesh (0.4.0)
|
14
|
+
activerecord (>= 0.3.0)
|
15
|
+
hyper-react (>= 0.10.0)
|
16
|
+
hyper-trace (0.3.1)
|
17
|
+
opal
|
18
|
+
|
19
|
+
GEM
|
20
|
+
remote: http://rubygems.org/
|
21
|
+
specs:
|
22
|
+
actionmailer (4.2.7.1)
|
23
|
+
actionpack (= 4.2.7.1)
|
24
|
+
actionview (= 4.2.7.1)
|
25
|
+
activejob (= 4.2.7.1)
|
26
|
+
mail (~> 2.5, >= 2.5.4)
|
27
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
28
|
+
actionpack (4.2.7.1)
|
29
|
+
actionview (= 4.2.7.1)
|
30
|
+
activesupport (= 4.2.7.1)
|
31
|
+
rack (~> 1.6)
|
32
|
+
rack-test (~> 0.6.2)
|
33
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
34
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
35
|
+
actionview (4.2.7.1)
|
36
|
+
activesupport (= 4.2.7.1)
|
37
|
+
builder (~> 3.1)
|
38
|
+
erubis (~> 2.7.0)
|
39
|
+
rails-dom-testing (~> 1.0, >= 1.0.5)
|
40
|
+
rails-html-sanitizer (~> 1.0, >= 1.0.2)
|
41
|
+
activejob (4.2.7.1)
|
42
|
+
activesupport (= 4.2.7.1)
|
43
|
+
globalid (>= 0.3.0)
|
44
|
+
activemodel (4.2.7.1)
|
45
|
+
activesupport (= 4.2.7.1)
|
46
|
+
builder (~> 3.1)
|
47
|
+
activerecord (4.2.7.1)
|
48
|
+
activemodel (= 4.2.7.1)
|
49
|
+
activesupport (= 4.2.7.1)
|
50
|
+
arel (~> 6.0)
|
51
|
+
activesupport (4.2.7.1)
|
52
|
+
i18n (~> 0.7)
|
53
|
+
json (~> 1.7, >= 1.7.7)
|
54
|
+
minitest (~> 5.1)
|
55
|
+
thread_safe (~> 0.3, >= 0.3.4)
|
56
|
+
tzinfo (~> 1.1)
|
57
|
+
arel (6.0.3)
|
58
|
+
babel-source (5.8.35)
|
59
|
+
babel-transpiler (0.7.0)
|
60
|
+
babel-source (>= 4.0, < 6)
|
61
|
+
execjs (~> 2.0)
|
62
|
+
binding_of_caller (0.7.2)
|
63
|
+
debug_inspector (>= 0.0.1)
|
64
|
+
builder (3.2.2)
|
65
|
+
byebug (9.0.5)
|
66
|
+
coderay (1.1.1)
|
67
|
+
coffee-script-source (1.10.0)
|
68
|
+
concurrent-ruby (1.0.2)
|
69
|
+
connection_pool (2.2.0)
|
70
|
+
debug_inspector (0.0.2)
|
71
|
+
erubis (2.7.0)
|
72
|
+
execjs (2.7.0)
|
73
|
+
globalid (0.3.7)
|
74
|
+
activesupport (>= 4.1.0)
|
75
|
+
hike (1.2.3)
|
76
|
+
hyper-react (0.10.0)
|
77
|
+
opal (>= 0.8.0)
|
78
|
+
opal-activesupport (>= 0.2.0)
|
79
|
+
react-rails
|
80
|
+
i18n (0.7.0)
|
81
|
+
interception (0.5)
|
82
|
+
jquery-cookie-rails (1.3.1.1)
|
83
|
+
railties (>= 3.2.0, < 5.0)
|
84
|
+
jquery-rails (4.2.1)
|
85
|
+
rails-dom-testing (>= 1, < 3)
|
86
|
+
railties (>= 4.2.0)
|
87
|
+
thor (>= 0.14, < 2.0)
|
88
|
+
json (1.8.3)
|
89
|
+
libv8 (3.16.14.15)
|
90
|
+
loofah (2.0.3)
|
91
|
+
nokogiri (>= 1.5.9)
|
92
|
+
mail (2.6.4)
|
93
|
+
mime-types (>= 1.16, < 4)
|
94
|
+
method_source (0.8.2)
|
95
|
+
mime-types (3.1)
|
96
|
+
mime-types-data (~> 3.2015)
|
97
|
+
mime-types-data (3.2016.0521)
|
98
|
+
mini_portile2 (2.1.0)
|
99
|
+
minitest (5.9.1)
|
100
|
+
nokogiri (1.6.8.1)
|
101
|
+
mini_portile2 (~> 2.1.0)
|
102
|
+
opal (0.9.4)
|
103
|
+
hike (~> 1.2)
|
104
|
+
sourcemap (~> 0.1.0)
|
105
|
+
sprockets (~> 3.1)
|
106
|
+
tilt (>= 1.4)
|
107
|
+
opal-activesupport (0.3.0)
|
108
|
+
opal (>= 0.5.0, < 1.0.0)
|
109
|
+
opal-jquery (0.4.2)
|
110
|
+
opal (>= 0.7.0, < 0.11.0)
|
111
|
+
opal-rails (0.9.0)
|
112
|
+
jquery-rails
|
113
|
+
opal (>= 0.8.0, < 0.11)
|
114
|
+
opal-activesupport (>= 0.0.5)
|
115
|
+
opal-jquery (~> 0.4.0)
|
116
|
+
rails (>= 4.0, < 6.0)
|
117
|
+
sprockets-rails (< 3.0)
|
118
|
+
opal-rspec (0.5.0)
|
119
|
+
opal (>= 0.8.0, < 0.10)
|
120
|
+
pry (0.10.4)
|
121
|
+
coderay (~> 1.1.0)
|
122
|
+
method_source (~> 0.8.1)
|
123
|
+
slop (~> 3.4)
|
124
|
+
pry-rails (0.3.4)
|
125
|
+
pry (>= 0.9.10)
|
126
|
+
pry-rescue (1.4.4)
|
127
|
+
interception (>= 0.5)
|
128
|
+
pry
|
129
|
+
rack (1.6.4)
|
130
|
+
rack-test (0.6.3)
|
131
|
+
rack (>= 1.0)
|
132
|
+
rails (4.2.7.1)
|
133
|
+
actionmailer (= 4.2.7.1)
|
134
|
+
actionpack (= 4.2.7.1)
|
135
|
+
actionview (= 4.2.7.1)
|
136
|
+
activejob (= 4.2.7.1)
|
137
|
+
activemodel (= 4.2.7.1)
|
138
|
+
activerecord (= 4.2.7.1)
|
139
|
+
activesupport (= 4.2.7.1)
|
140
|
+
bundler (>= 1.3.0, < 2.0)
|
141
|
+
railties (= 4.2.7.1)
|
142
|
+
sprockets-rails
|
143
|
+
rails-deprecated_sanitizer (1.0.3)
|
144
|
+
activesupport (>= 4.2.0.alpha)
|
145
|
+
rails-dom-testing (1.0.7)
|
146
|
+
activesupport (>= 4.2.0.beta, < 5.0)
|
147
|
+
nokogiri (~> 1.6.0)
|
148
|
+
rails-deprecated_sanitizer (>= 1.0.1)
|
149
|
+
rails-html-sanitizer (1.0.3)
|
150
|
+
loofah (~> 2.0)
|
151
|
+
railties (4.2.7.1)
|
152
|
+
actionpack (= 4.2.7.1)
|
153
|
+
activesupport (= 4.2.7.1)
|
154
|
+
rake (>= 0.8.7)
|
155
|
+
thor (>= 0.18.1, < 2.0)
|
156
|
+
rake (11.3.0)
|
157
|
+
react-rails (1.9.0)
|
158
|
+
babel-transpiler (>= 0.7.0)
|
159
|
+
coffee-script-source (~> 1.8)
|
160
|
+
connection_pool
|
161
|
+
execjs
|
162
|
+
railties (>= 3.2)
|
163
|
+
tilt
|
164
|
+
ref (2.0.0)
|
165
|
+
slop (3.6.0)
|
166
|
+
sourcemap (0.1.1)
|
167
|
+
sprockets (3.7.0)
|
168
|
+
concurrent-ruby (~> 1.0)
|
169
|
+
rack (> 1, < 3)
|
170
|
+
sprockets-rails (2.3.3)
|
171
|
+
actionpack (>= 3.0)
|
172
|
+
activesupport (>= 3.0)
|
173
|
+
sprockets (>= 2.8, < 4.0)
|
174
|
+
sqlite3 (1.3.11)
|
175
|
+
therubyracer (0.12.2)
|
176
|
+
libv8 (~> 3.16.14.0)
|
177
|
+
ref
|
178
|
+
thor (0.19.1)
|
179
|
+
thread_safe (0.3.5)
|
180
|
+
tilt (2.0.5)
|
181
|
+
tzinfo (1.2.2)
|
182
|
+
thread_safe (~> 0.1)
|
183
|
+
web-console (2.3.0)
|
184
|
+
activemodel (>= 4.0)
|
185
|
+
binding_of_caller (>= 0.7.2)
|
186
|
+
railties (>= 4.0)
|
187
|
+
sprockets-rails (>= 2.0, < 4.0)
|
188
|
+
|
189
|
+
PLATFORMS
|
190
|
+
ruby
|
191
|
+
|
192
|
+
DEPENDENCIES
|
193
|
+
byebug
|
194
|
+
hyper-mesh!
|
195
|
+
hyper-trace
|
196
|
+
jquery-cookie-rails
|
197
|
+
opal (~> 0.9.0)
|
198
|
+
opal-rails
|
199
|
+
opal-rspec-rails!
|
200
|
+
pry-rails
|
201
|
+
pry-rescue
|
202
|
+
rails
|
203
|
+
react-rails
|
204
|
+
sqlite3
|
205
|
+
therubyracer
|
206
|
+
web-console
|
207
|
+
|
208
|
+
BUNDLED WITH
|
209
|
+
1.12.5
|