wamp-worker 0.1.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.
Files changed (129) hide show
  1. checksums.yaml +7 -0
  2. data/.gitignore +13 -0
  3. data/.rspec +2 -0
  4. data/.ruby-version +1 -0
  5. data/.travis.yml +5 -0
  6. data/Gemfile +4 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +204 -0
  9. data/Rakefile +6 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/bin/wamp-worker +46 -0
  13. data/lib/wamp/worker.rb +132 -0
  14. data/lib/wamp/worker/config.rb +184 -0
  15. data/lib/wamp/worker/handler.rb +196 -0
  16. data/lib/wamp/worker/proxy/backgrounder.rb +38 -0
  17. data/lib/wamp/worker/proxy/base.rb +101 -0
  18. data/lib/wamp/worker/proxy/dispatcher.rb +115 -0
  19. data/lib/wamp/worker/proxy/requestor.rb +91 -0
  20. data/lib/wamp/worker/queue.rb +135 -0
  21. data/lib/wamp/worker/rails.rb +28 -0
  22. data/lib/wamp/worker/runner.rb +240 -0
  23. data/lib/wamp/worker/ticker.rb +30 -0
  24. data/lib/wamp/worker/version.rb +5 -0
  25. data/spec/spec_helper.rb +29 -0
  26. data/spec/support/client_stub.rb +47 -0
  27. data/spec/support/handler_stub.rb +105 -0
  28. data/spec/support/redis_stub.rb +89 -0
  29. data/spec/support/session_stub.rb +101 -0
  30. data/spec/wamp/worker/config_spec.rb +90 -0
  31. data/spec/wamp/worker/handler_spec.rb +162 -0
  32. data/spec/wamp/worker/proxy_spec.rb +153 -0
  33. data/spec/wamp/worker/queue_spec.rb +49 -0
  34. data/spec/wamp/worker/runner_spec.rb +108 -0
  35. data/spec/wamp/worker_spec.rb +8 -0
  36. data/test/app_test.rb +124 -0
  37. data/test/hello.py +50 -0
  38. data/test/sidekiq.yml +5 -0
  39. data/test/wamp_test/.generators +8 -0
  40. data/test/wamp_test/.ruby-version +1 -0
  41. data/test/wamp_test/Gemfile +65 -0
  42. data/test/wamp_test/Gemfile.lock +246 -0
  43. data/test/wamp_test/README.md +24 -0
  44. data/test/wamp_test/Rakefile +6 -0
  45. data/test/wamp_test/app/assets/config/manifest.js +3 -0
  46. data/test/wamp_test/app/assets/images/.keep +0 -0
  47. data/test/wamp_test/app/assets/javascripts/application.js +16 -0
  48. data/test/wamp_test/app/assets/javascripts/cable.js +13 -0
  49. data/test/wamp_test/app/assets/javascripts/channels/.keep +0 -0
  50. data/test/wamp_test/app/assets/stylesheets/application.css +15 -0
  51. data/test/wamp_test/app/channels/application_cable/channel.rb +4 -0
  52. data/test/wamp_test/app/channels/application_cable/connection.rb +4 -0
  53. data/test/wamp_test/app/controllers/add_controller.rb +11 -0
  54. data/test/wamp_test/app/controllers/application_controller.rb +3 -0
  55. data/test/wamp_test/app/controllers/concerns/.keep +0 -0
  56. data/test/wamp_test/app/controllers/ping_controller.rb +7 -0
  57. data/test/wamp_test/app/handlers/add_handler.rb +9 -0
  58. data/test/wamp_test/app/handlers/back_add_handler.rb +26 -0
  59. data/test/wamp_test/app/handlers/back_ping_handler.rb +10 -0
  60. data/test/wamp_test/app/handlers/ping_handler.rb +10 -0
  61. data/test/wamp_test/app/helpers/application_helper.rb +2 -0
  62. data/test/wamp_test/app/jobs/application_job.rb +2 -0
  63. data/test/wamp_test/app/mailers/application_mailer.rb +4 -0
  64. data/test/wamp_test/app/models/application_record.rb +3 -0
  65. data/test/wamp_test/app/models/concerns/.keep +0 -0
  66. data/test/wamp_test/app/views/layouts/application.html.erb +15 -0
  67. data/test/wamp_test/app/views/layouts/mailer.html.erb +13 -0
  68. data/test/wamp_test/app/views/layouts/mailer.text.erb +1 -0
  69. data/test/wamp_test/bin/bundle +3 -0
  70. data/test/wamp_test/bin/rails +9 -0
  71. data/test/wamp_test/bin/rake +9 -0
  72. data/test/wamp_test/bin/setup +36 -0
  73. data/test/wamp_test/bin/spring +17 -0
  74. data/test/wamp_test/bin/update +31 -0
  75. data/test/wamp_test/bin/yarn +11 -0
  76. data/test/wamp_test/config.ru +5 -0
  77. data/test/wamp_test/config/application.rb +19 -0
  78. data/test/wamp_test/config/boot.rb +4 -0
  79. data/test/wamp_test/config/cable.yml +10 -0
  80. data/test/wamp_test/config/credentials.yml.enc +1 -0
  81. data/test/wamp_test/config/database.yml +25 -0
  82. data/test/wamp_test/config/environment.rb +5 -0
  83. data/test/wamp_test/config/environments/development.rb +61 -0
  84. data/test/wamp_test/config/environments/production.rb +94 -0
  85. data/test/wamp_test/config/environments/test.rb +46 -0
  86. data/test/wamp_test/config/initializers/application_controller_renderer.rb +8 -0
  87. data/test/wamp_test/config/initializers/assets.rb +14 -0
  88. data/test/wamp_test/config/initializers/backtrace_silencers.rb +7 -0
  89. data/test/wamp_test/config/initializers/content_security_policy.rb +25 -0
  90. data/test/wamp_test/config/initializers/cookies_serializer.rb +5 -0
  91. data/test/wamp_test/config/initializers/filter_parameter_logging.rb +4 -0
  92. data/test/wamp_test/config/initializers/inflections.rb +16 -0
  93. data/test/wamp_test/config/initializers/mime_types.rb +4 -0
  94. data/test/wamp_test/config/initializers/wamp-worker.rb +8 -0
  95. data/test/wamp_test/config/initializers/wrap_parameters.rb +14 -0
  96. data/test/wamp_test/config/locales/en.yml +33 -0
  97. data/test/wamp_test/config/master.key +1 -0
  98. data/test/wamp_test/config/puma.rb +34 -0
  99. data/test/wamp_test/config/routes.rb +4 -0
  100. data/test/wamp_test/config/sidekiq.yml +6 -0
  101. data/test/wamp_test/config/spring.rb +6 -0
  102. data/test/wamp_test/config/storage.yml +34 -0
  103. data/test/wamp_test/db/development.sqlite3 +0 -0
  104. data/test/wamp_test/db/seeds.rb +7 -0
  105. data/test/wamp_test/lib/assets/.keep +0 -0
  106. data/test/wamp_test/lib/tasks/.keep +0 -0
  107. data/test/wamp_test/package.json +5 -0
  108. data/test/wamp_test/public/404.html +67 -0
  109. data/test/wamp_test/public/422.html +67 -0
  110. data/test/wamp_test/public/500.html +66 -0
  111. data/test/wamp_test/public/apple-touch-icon-precomposed.png +0 -0
  112. data/test/wamp_test/public/apple-touch-icon.png +0 -0
  113. data/test/wamp_test/public/favicon.ico +0 -0
  114. data/test/wamp_test/public/robots.txt +1 -0
  115. data/test/wamp_test/storage/.keep +0 -0
  116. data/test/wamp_test/test/application_system_test_case.rb +5 -0
  117. data/test/wamp_test/test/controllers/.keep +0 -0
  118. data/test/wamp_test/test/fixtures/.keep +0 -0
  119. data/test/wamp_test/test/fixtures/files/.keep +0 -0
  120. data/test/wamp_test/test/helpers/.keep +0 -0
  121. data/test/wamp_test/test/integration/.keep +0 -0
  122. data/test/wamp_test/test/mailers/.keep +0 -0
  123. data/test/wamp_test/test/models/.keep +0 -0
  124. data/test/wamp_test/test/system/.keep +0 -0
  125. data/test/wamp_test/test/test_helper.rb +10 -0
  126. data/test/wamp_test/vendor/.keep +0 -0
  127. data/test/web/index.html +101 -0
  128. data/wamp-worker.gemspec +32 -0
  129. metadata +395 -0
@@ -0,0 +1,8 @@
1
+ require "spec_helper"
2
+
3
+ describe Wamp::Worker do
4
+ it "has a version number" do
5
+ expect(Wamp::Worker::VERSION).not_to be nil
6
+ end
7
+
8
+ end
@@ -0,0 +1,124 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require "wamp/client"
4
+ require 'open-uri'
5
+
6
+ class Check
7
+ attr_accessor :args, :kwargs, :details, :progress
8
+
9
+ @@singleton = nil
10
+ def self.shared
11
+ @@singleton ||= self.new
12
+ end
13
+
14
+ def initialize
15
+ self.clear
16
+ end
17
+
18
+ def clear
19
+ self.args = nil
20
+ self.kwargs = nil
21
+ self.details = nil
22
+ self.progress = 0
23
+ end
24
+
25
+ def configure(args, kwargs, details)
26
+ self.args = args
27
+ self.kwargs = kwargs
28
+ self.details = details || {}
29
+
30
+ if self.details[:progress]
31
+ puts "PROGRESS: #{args.inspect}"
32
+ self.progress += 1
33
+ end
34
+ end
35
+ end
36
+
37
+ def handler(args, kwargs, details)
38
+ Check.shared.configure args, kwargs, details
39
+ end
40
+
41
+ def callback(result, error, details)
42
+ if error
43
+ puts "ERROR"
44
+ puts error.inspect
45
+ else
46
+ Check.shared.configure result[:args], result[:kwargs], details
47
+ end
48
+ end
49
+
50
+ def get_url(url, check=true)
51
+ string = open(url).read
52
+ if check
53
+ result = JSON.parse(string, :symbolize_names => true)[:result]
54
+ Check.shared.configure result[:args], result[:kwargs], {}
55
+ end
56
+ end
57
+
58
+ def check(test, args, progress=nil)
59
+ progress ||= 0
60
+ error = false
61
+
62
+ if Check.shared.args != args
63
+ puts "#{test} ARGS FAIL, expected #{args.inspect}, got #{Check.shared.args.inspect}"
64
+ error = true
65
+ end
66
+
67
+ if Check.shared.progress != progress
68
+ puts "#{test} PROGRESS FAIL, expected #{progress}, got #{Check.shared.progress}"
69
+ error = true
70
+ end
71
+
72
+ puts "#{test} PASS" unless error
73
+
74
+ Check.shared.clear
75
+ end
76
+
77
+ def run_tests(tests, &complete)
78
+ test = tests.shift
79
+ if test
80
+ test[0].call
81
+ EM.add_timer(0.5) {
82
+ check(test[1], test[2], test[3])
83
+ run_tests(tests, &complete)
84
+ }
85
+ else
86
+ complete.call
87
+ end
88
+
89
+ end
90
+
91
+ Wamp::Client.log_level = :error
92
+
93
+ connection = Wamp::Client::Connection.new(uri: 'ws://127.0.0.1:8080/ws', realm: 'realm1')
94
+ connection.on(:join) do |session, details|
95
+
96
+ session.subscribe "com.example.pong", method(:handler)
97
+ session.subscribe "com.example.back.pong", method(:handler)
98
+
99
+ tests = [
100
+ [ -> { session.publish "com.example.ping", [1,2,3] }, "PING TEST", [1,2,3]],
101
+ [ -> { session.publish "com.example.back.ping", [4,5,6] }, "PING BACK TEST", [4,5,6]],
102
+ [ -> { session.call "com.example.add", [5,6] do |result, error, details|
103
+ callback result, error, details
104
+ end }, "ADD TEST", [11]],
105
+ [ -> { session.call "com.example.back.add", [7,8] do |result, error, details|
106
+ callback result, error, details
107
+ end}, "ADD BACK TEST", [15]],
108
+ [ -> { session.call "com.example.back.add.delay", [11,2], {}, { receive_progress: false } do |result, error, details|
109
+ callback result, error, details
110
+ end}, "NO PROGRESS DELAY ADD BACK TEST", [13], 0],
111
+ [ -> { session.call "com.example.back.add.delay", [3,2], {}, { receive_progress: true } do |result, error, details|
112
+ callback result, error, details
113
+ end}, "PROGRESS DELAY ADD BACK TEST", [5], 4],
114
+ [ -> { get_url "http://localhost:3000/add?a=4&b=5" }, "GET ADD TEST", [9]],
115
+ [ -> { get_url "http://localhost:3000/ping?a=7&b=8", false }, "GET PING TEST", [7,8]],
116
+ ]
117
+
118
+ run_tests tests do
119
+ connection.close
120
+ end
121
+
122
+ end
123
+
124
+ connection.open
@@ -0,0 +1,50 @@
1
+ ###############################################################################
2
+ ##
3
+ ## Copyright (C) 2014, Tavendo GmbH and/or collaborators. All rights reserved.
4
+ ##
5
+ ## Redistribution and use in source and binary forms, with or without
6
+ ## modification, are permitted provided that the following conditions are met:
7
+ ##
8
+ ## 1. Redistributions of source code must retain the above copyright notice,
9
+ ## this list of conditions and the following disclaimer.
10
+ ##
11
+ ## 2. Redistributions in binary form must reproduce the above copyright notice,
12
+ ## this list of conditions and the following disclaimer in the documentation
13
+ ## and/or other materials provided with the distribution.
14
+ ##
15
+ ## THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
16
+ ## AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
17
+ ## IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
18
+ ## ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
19
+ ## LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
20
+ ## CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
21
+ ## SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
22
+ ## INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
23
+ ## CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
24
+ ## ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
25
+ ## POSSIBILITY OF SUCH DAMAGE.
26
+ ##
27
+ ###############################################################################
28
+
29
+ from twisted.internet.defer import inlineCallbacks
30
+ from twisted.logger import Logger
31
+
32
+ from autobahn.twisted.util import sleep
33
+ from autobahn.twisted.wamp import ApplicationSession
34
+ from autobahn.wamp.exception import ApplicationError
35
+
36
+
37
+
38
+ class AppSession(ApplicationSession):
39
+
40
+ log = Logger()
41
+
42
+ @inlineCallbacks
43
+ def onJoin(self, details):
44
+
45
+ ## PUBLISH and CALL every second .. forever
46
+ ##
47
+ counter = 0
48
+ while True:
49
+
50
+ yield sleep(1)
@@ -0,0 +1,5 @@
1
+ :concurrency: 5
2
+ :queues:
3
+ - high
4
+ - default
5
+ - low
@@ -0,0 +1,8 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <Settings><!--This file was automatically generated by Ruby plugin.
3
+ You are allowed to:
4
+ 1. Reorder generators
5
+ 2. Remove generators
6
+ 3. Add installed generators
7
+ To add new installed generators automatically delete this file and reload the project.
8
+ --><GeneratorsGroup><Generator name="active_record:application_record" /><Generator name="application_record" /><Generator name="assets" /><Generator name="channel" /><Generator name="coffee:assets" /><Generator name="controller" /><Generator name="generator" /><Generator name="helper" /><Generator name="integration_test" /><Generator name="jbuilder" /><Generator name="job" /><Generator name="js:assets" /><Generator name="mailer" /><Generator name="migration" /><Generator name="model" /><Generator name="resource" /><Generator name="scaffold" /><Generator name="scaffold_controller" /><Generator name="sidekiq:worker" /><Generator name="system_test" /><Generator name="task" /><Generator name="test_unit:generator" /><Generator name="test_unit:plugin" /></GeneratorsGroup></Settings>
@@ -0,0 +1 @@
1
+ ruby-2.3.0
@@ -0,0 +1,65 @@
1
+ source 'https://rubygems.org'
2
+ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
+
4
+ ruby '2.3.0'
5
+
6
+ # Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
7
+ gem 'rails', '~> 5.2.1'
8
+ # Use sqlite3 as the database for Active Record
9
+ gem 'sqlite3'
10
+ # Use Puma as the app server
11
+ gem 'puma', '~> 3.11'
12
+ # Use SCSS for stylesheets
13
+ gem 'sass-rails', '~> 5.0'
14
+ # Use Uglifier as compressor for JavaScript assets
15
+ gem 'uglifier', '>= 1.3.0'
16
+ # See https://github.com/rails/execjs#readme for more supported runtimes
17
+ # gem 'mini_racer', platforms: :ruby
18
+
19
+ # Use CoffeeScript for .coffee assets and views
20
+ gem 'coffee-rails', '~> 4.2'
21
+ # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
22
+ gem 'turbolinks', '~> 5'
23
+ # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
24
+ gem 'jbuilder', '~> 2.5'
25
+ # Use Redis adapter to run Action Cable in production
26
+ # gem 'redis', '~> 4.0'
27
+ # Use ActiveModel has_secure_password
28
+ # gem 'bcrypt', '~> 3.1.7'
29
+
30
+ # Use ActiveStorage variant
31
+ # gem 'mini_magick', '~> 4.8'
32
+
33
+ # Use Capistrano for deployment
34
+ # gem 'capistrano-rails', group: :development
35
+
36
+ gem 'sidekiq'
37
+ gem 'wamp-worker'
38
+
39
+ # Reduces boot times through caching; required in config/boot.rb
40
+ gem 'bootsnap', '>= 1.1.0', require: false
41
+
42
+ group :development, :test do
43
+ # Call 'byebug' anywhere in the code to stop execution and get a debugger console
44
+ gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
45
+ end
46
+
47
+ group :development do
48
+ # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
49
+ gem 'web-console', '>= 3.3.0'
50
+ gem 'listen', '>= 3.0.5', '< 3.2'
51
+ # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
52
+ gem 'spring'
53
+ gem 'spring-watcher-listen', '~> 2.0.0'
54
+ end
55
+
56
+ group :test do
57
+ # Adds support for Capybara system testing and selenium driver
58
+ gem 'capybara', '>= 2.15'
59
+ gem 'selenium-webdriver'
60
+ # Easy installation and use of chromedriver to run system tests with Chrome
61
+ gem 'chromedriver-helper'
62
+ end
63
+
64
+ # Windows does not include zoneinfo files, so bundle the tzinfo-data gem
65
+ gem 'tzinfo-data', platforms: [:mingw, :mswin, :x64_mingw, :jruby]
@@ -0,0 +1,246 @@
1
+ GEM
2
+ remote: https://rubygems.org/
3
+ specs:
4
+ actioncable (5.2.1.1)
5
+ actionpack (= 5.2.1.1)
6
+ nio4r (~> 2.0)
7
+ websocket-driver (>= 0.6.1)
8
+ actionmailer (5.2.1.1)
9
+ actionpack (= 5.2.1.1)
10
+ actionview (= 5.2.1.1)
11
+ activejob (= 5.2.1.1)
12
+ mail (~> 2.5, >= 2.5.4)
13
+ rails-dom-testing (~> 2.0)
14
+ actionpack (5.2.1.1)
15
+ actionview (= 5.2.1.1)
16
+ activesupport (= 5.2.1.1)
17
+ rack (~> 2.0)
18
+ rack-test (>= 0.6.3)
19
+ rails-dom-testing (~> 2.0)
20
+ rails-html-sanitizer (~> 1.0, >= 1.0.2)
21
+ actionview (5.2.1.1)
22
+ activesupport (= 5.2.1.1)
23
+ builder (~> 3.1)
24
+ erubi (~> 1.4)
25
+ rails-dom-testing (~> 2.0)
26
+ rails-html-sanitizer (~> 1.0, >= 1.0.3)
27
+ activejob (5.2.1.1)
28
+ activesupport (= 5.2.1.1)
29
+ globalid (>= 0.3.6)
30
+ activemodel (5.2.1.1)
31
+ activesupport (= 5.2.1.1)
32
+ activerecord (5.2.1.1)
33
+ activemodel (= 5.2.1.1)
34
+ activesupport (= 5.2.1.1)
35
+ arel (>= 9.0)
36
+ activestorage (5.2.1.1)
37
+ actionpack (= 5.2.1.1)
38
+ activerecord (= 5.2.1.1)
39
+ marcel (~> 0.3.1)
40
+ activesupport (5.2.1.1)
41
+ concurrent-ruby (~> 1.0, >= 1.0.2)
42
+ i18n (>= 0.7, < 2)
43
+ minitest (~> 5.1)
44
+ tzinfo (~> 1.1)
45
+ addressable (2.5.2)
46
+ public_suffix (>= 2.0.2, < 4.0)
47
+ archive-zip (0.11.0)
48
+ io-like (~> 0.3.0)
49
+ arel (9.0.0)
50
+ bindex (0.5.0)
51
+ bootsnap (1.3.2)
52
+ msgpack (~> 1.0)
53
+ builder (3.2.3)
54
+ byebug (10.0.2)
55
+ capybara (3.12.0)
56
+ addressable
57
+ mini_mime (>= 0.1.3)
58
+ nokogiri (~> 1.8)
59
+ rack (>= 1.6.0)
60
+ rack-test (>= 0.6.3)
61
+ regexp_parser (~> 1.2)
62
+ xpath (~> 3.2)
63
+ childprocess (0.9.0)
64
+ ffi (~> 1.0, >= 1.0.11)
65
+ chromedriver-helper (2.1.0)
66
+ archive-zip (~> 0.10)
67
+ nokogiri (~> 1.8)
68
+ coffee-rails (4.2.2)
69
+ coffee-script (>= 2.2.0)
70
+ railties (>= 4.0.0)
71
+ coffee-script (2.4.1)
72
+ coffee-script-source
73
+ execjs
74
+ coffee-script-source (1.12.2)
75
+ concurrent-ruby (1.1.3)
76
+ connection_pool (2.2.2)
77
+ crass (1.0.4)
78
+ erubi (1.7.1)
79
+ eventmachine (1.2.7)
80
+ execjs (2.7.0)
81
+ ffi (1.9.25)
82
+ globalid (0.4.1)
83
+ activesupport (>= 4.2.0)
84
+ i18n (1.1.1)
85
+ concurrent-ruby (~> 1.0)
86
+ io-like (0.3.0)
87
+ jbuilder (2.8.0)
88
+ activesupport (>= 4.2.0)
89
+ multi_json (>= 1.2)
90
+ json (2.1.0)
91
+ listen (3.1.5)
92
+ rb-fsevent (~> 0.9, >= 0.9.4)
93
+ rb-inotify (~> 0.9, >= 0.9.7)
94
+ ruby_dep (~> 1.2)
95
+ loofah (2.2.3)
96
+ crass (~> 1.0.2)
97
+ nokogiri (>= 1.5.9)
98
+ mail (2.7.1)
99
+ mini_mime (>= 0.1.1)
100
+ marcel (0.3.3)
101
+ mimemagic (~> 0.3.2)
102
+ method_source (0.9.2)
103
+ mimemagic (0.3.2)
104
+ mini_mime (1.0.1)
105
+ mini_portile2 (2.3.0)
106
+ minitest (5.11.3)
107
+ msgpack (1.2.4)
108
+ multi_json (1.13.1)
109
+ nio4r (2.3.1)
110
+ nokogiri (1.8.5)
111
+ mini_portile2 (~> 2.3.0)
112
+ public_suffix (3.0.3)
113
+ puma (3.12.0)
114
+ rack (2.0.6)
115
+ rack-protection (2.0.4)
116
+ rack
117
+ rack-test (1.1.0)
118
+ rack (>= 1.0, < 3)
119
+ rails (5.2.1.1)
120
+ actioncable (= 5.2.1.1)
121
+ actionmailer (= 5.2.1.1)
122
+ actionpack (= 5.2.1.1)
123
+ actionview (= 5.2.1.1)
124
+ activejob (= 5.2.1.1)
125
+ activemodel (= 5.2.1.1)
126
+ activerecord (= 5.2.1.1)
127
+ activestorage (= 5.2.1.1)
128
+ activesupport (= 5.2.1.1)
129
+ bundler (>= 1.3.0)
130
+ railties (= 5.2.1.1)
131
+ sprockets-rails (>= 2.0.0)
132
+ rails-dom-testing (2.0.3)
133
+ activesupport (>= 4.2.0)
134
+ nokogiri (>= 1.6)
135
+ rails-html-sanitizer (1.0.4)
136
+ loofah (~> 2.2, >= 2.2.2)
137
+ railties (5.2.1.1)
138
+ actionpack (= 5.2.1.1)
139
+ activesupport (= 5.2.1.1)
140
+ method_source
141
+ rake (>= 0.8.7)
142
+ thor (>= 0.19.0, < 2.0)
143
+ rake (12.3.1)
144
+ rb-fsevent (0.10.3)
145
+ rb-inotify (0.9.10)
146
+ ffi (>= 0.5.0, < 2)
147
+ redis (4.0.3)
148
+ regexp_parser (1.3.0)
149
+ ruby_dep (1.5.0)
150
+ rubyzip (1.2.2)
151
+ sass (3.7.2)
152
+ sass-listen (~> 4.0.0)
153
+ sass-listen (4.0.0)
154
+ rb-fsevent (~> 0.9, >= 0.9.4)
155
+ rb-inotify (~> 0.9, >= 0.9.7)
156
+ sass-rails (5.0.7)
157
+ railties (>= 4.0.0, < 6)
158
+ sass (~> 3.1)
159
+ sprockets (>= 2.8, < 4.0)
160
+ sprockets-rails (>= 2.0, < 4.0)
161
+ tilt (>= 1.1, < 3)
162
+ selenium-webdriver (3.141.0)
163
+ childprocess (~> 0.5)
164
+ rubyzip (~> 1.2, >= 1.2.2)
165
+ sidekiq (5.2.3)
166
+ connection_pool (~> 2.2, >= 2.2.2)
167
+ rack-protection (>= 1.5.0)
168
+ redis (>= 3.3.5, < 5)
169
+ spring (2.0.2)
170
+ activesupport (>= 4.2)
171
+ spring-watcher-listen (2.0.1)
172
+ listen (>= 2.7, < 4.0)
173
+ spring (>= 1.2, < 3.0)
174
+ sprockets (3.7.2)
175
+ concurrent-ruby (~> 1.0)
176
+ rack (> 1, < 3)
177
+ sprockets-rails (3.2.1)
178
+ actionpack (>= 4.0)
179
+ activesupport (>= 4.0)
180
+ sprockets (>= 3.0.0)
181
+ sqlite3 (1.3.13)
182
+ thor (0.20.3)
183
+ thread_safe (0.3.6)
184
+ tilt (2.0.9)
185
+ turbolinks (5.2.0)
186
+ turbolinks-source (~> 5.2)
187
+ turbolinks-source (5.2.0)
188
+ tzinfo (1.2.5)
189
+ thread_safe (~> 0.1)
190
+ uglifier (4.1.20)
191
+ execjs (>= 0.3.0, < 3)
192
+ wamp-worker (0.1.0)
193
+ redis
194
+ wamp_client (>= 0.1.2)
195
+ wamp_client (0.2.0)
196
+ json (~> 2.0)
197
+ websocket-eventmachine-client (~> 1.1)
198
+ web-console (3.7.0)
199
+ actionview (>= 5.0)
200
+ activemodel (>= 5.0)
201
+ bindex (>= 0.4.0)
202
+ railties (>= 5.0)
203
+ websocket (1.2.8)
204
+ websocket-driver (0.7.0)
205
+ websocket-extensions (>= 0.1.0)
206
+ websocket-eventmachine-base (1.2.0)
207
+ eventmachine (~> 1.0)
208
+ websocket (~> 1.0)
209
+ websocket-native (~> 1.0)
210
+ websocket-eventmachine-client (1.2.0)
211
+ websocket-eventmachine-base (~> 1.0)
212
+ websocket-extensions (0.1.3)
213
+ websocket-native (1.0.0)
214
+ xpath (3.2.0)
215
+ nokogiri (~> 1.8)
216
+
217
+ PLATFORMS
218
+ ruby
219
+
220
+ DEPENDENCIES
221
+ bootsnap (>= 1.1.0)
222
+ byebug
223
+ capybara (>= 2.15)
224
+ chromedriver-helper
225
+ coffee-rails (~> 4.2)
226
+ jbuilder (~> 2.5)
227
+ listen (>= 3.0.5, < 3.2)
228
+ puma (~> 3.11)
229
+ rails (~> 5.2.1)
230
+ sass-rails (~> 5.0)
231
+ selenium-webdriver
232
+ sidekiq
233
+ spring
234
+ spring-watcher-listen (~> 2.0.0)
235
+ sqlite3
236
+ turbolinks (~> 5)
237
+ tzinfo-data
238
+ uglifier (>= 1.3.0)
239
+ wamp-worker
240
+ web-console (>= 3.3.0)
241
+
242
+ RUBY VERSION
243
+ ruby 2.3.0p0
244
+
245
+ BUNDLED WITH
246
+ 1.17.1