policy_decision_point 0.1.0 → 0.2.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 (102) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE +21 -0
  3. data/README.md +114 -1
  4. data/img/data-flow.png +0 -0
  5. data/img/logo-build.png +0 -0
  6. data/lib/policy_decision_point/version.rb +1 -1
  7. data/policy_decision_point.gemspec +2 -1
  8. metadata +7 -97
  9. data/example/Gemfile +0 -65
  10. data/example/Gemfile.lock +0 -273
  11. data/example/README.md +0 -1
  12. data/example/Rakefile +0 -6
  13. data/example/app/assets/config/manifest.js +0 -2
  14. data/example/app/assets/images/.keep +0 -0
  15. data/example/app/assets/stylesheets/application.css +0 -15
  16. data/example/app/channels/application_cable/channel.rb +0 -4
  17. data/example/app/channels/application_cable/connection.rb +0 -4
  18. data/example/app/controllers/application_controller.rb +0 -2
  19. data/example/app/controllers/concerns/.keep +0 -0
  20. data/example/app/controllers/rpc/hello_world/service.proto +0 -15
  21. data/example/app/controllers/rpc/hello_world/service_pb.rb +0 -22
  22. data/example/app/controllers/rpc/hello_world/service_twirp.rb +0 -17
  23. data/example/app/controllers/rpc/hello_world_server.rb +0 -15
  24. data/example/app/helpers/application_helper.rb +0 -2
  25. data/example/app/javascript/channels/consumer.js +0 -6
  26. data/example/app/javascript/channels/index.js +0 -5
  27. data/example/app/javascript/packs/application.js +0 -13
  28. data/example/app/jobs/application_job.rb +0 -7
  29. data/example/app/mailers/application_mailer.rb +0 -4
  30. data/example/app/models/application_record.rb +0 -3
  31. data/example/app/models/concerns/.keep +0 -0
  32. data/example/app/views/layouts/application.html.erb +0 -16
  33. data/example/app/views/layouts/mailer.html.erb +0 -13
  34. data/example/app/views/layouts/mailer.text.erb +0 -1
  35. data/example/babel.config.js +0 -70
  36. data/example/bin/bundle +0 -114
  37. data/example/bin/rails +0 -27
  38. data/example/bin/rake +0 -5
  39. data/example/bin/setup +0 -36
  40. data/example/bin/spring +0 -14
  41. data/example/bin/webpack +0 -18
  42. data/example/bin/webpack-dev-server +0 -18
  43. data/example/bin/yarn +0 -17
  44. data/example/config.ru +0 -6
  45. data/example/config/application.rb +0 -25
  46. data/example/config/boot.rb +0 -4
  47. data/example/config/cable.yml +0 -10
  48. data/example/config/credentials.yml.enc +0 -1
  49. data/example/config/database.yml +0 -25
  50. data/example/config/environment.rb +0 -5
  51. data/example/config/environments/development.rb +0 -79
  52. data/example/config/environments/production.rb +0 -120
  53. data/example/config/environments/test.rb +0 -60
  54. data/example/config/initializers/application_controller_renderer.rb +0 -8
  55. data/example/config/initializers/assets.rb +0 -14
  56. data/example/config/initializers/backtrace_silencers.rb +0 -8
  57. data/example/config/initializers/content_security_policy.rb +0 -30
  58. data/example/config/initializers/cookies_serializer.rb +0 -5
  59. data/example/config/initializers/filter_parameter_logging.rb +0 -6
  60. data/example/config/initializers/inflections.rb +0 -16
  61. data/example/config/initializers/mime_types.rb +0 -4
  62. data/example/config/initializers/permissions_policy.rb +0 -11
  63. data/example/config/initializers/twirp_rails.rb +0 -4
  64. data/example/config/initializers/wrap_parameters.rb +0 -14
  65. data/example/config/locales/en.yml +0 -33
  66. data/example/config/master.key +0 -1
  67. data/example/config/puma.rb +0 -43
  68. data/example/config/routes.rb +0 -4
  69. data/example/config/spring.rb +0 -6
  70. data/example/config/storage.yml +0 -34
  71. data/example/config/webpack/development.js +0 -5
  72. data/example/config/webpack/environment.js +0 -3
  73. data/example/config/webpack/production.js +0 -5
  74. data/example/config/webpack/test.js +0 -5
  75. data/example/config/webpacker.yml +0 -92
  76. data/example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/ffi_c.so +0 -0
  77. data/example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/gem.build_complete +0 -0
  78. data/example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/gem_make.out +0 -165
  79. data/example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/mkmf.log +0 -132
  80. data/example/package.json +0 -17
  81. data/example/postcss.config.js +0 -12
  82. data/example/public/404.html +0 -67
  83. data/example/public/422.html +0 -67
  84. data/example/public/500.html +0 -66
  85. data/example/public/apple-touch-icon-precomposed.png +0 -0
  86. data/example/public/apple-touch-icon.png +0 -0
  87. data/example/public/favicon.ico +0 -0
  88. data/example/public/robots.txt +0 -1
  89. data/example/storage/.keep +0 -0
  90. data/example/test/application_system_test_case.rb +0 -5
  91. data/example/test/channels/application_cable/connection_test.rb +0 -11
  92. data/example/test/controllers/.keep +0 -0
  93. data/example/test/fixtures/files/.keep +0 -0
  94. data/example/test/helpers/.keep +0 -0
  95. data/example/test/integration/.keep +0 -0
  96. data/example/test/mailers/.keep +0 -0
  97. data/example/test/models/.keep +0 -0
  98. data/example/test/system/.keep +0 -0
  99. data/example/test/test_helper.rb +0 -13
  100. data/example/tmp/cache/bootsnap/load-path-cache +0 -0
  101. data/example/vendor/.keep +0 -0
  102. data/example/yarn.lock +0 -6888
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 70f7c91ecb05c92f6b6ab4f3eb09c66d5461ae00bc60788b634bcdb03748b608
4
- data.tar.gz: 83a6d7a7f575e71b040416ebe1e989b5cac929e56c57a268a5fb093305a5fda1
3
+ metadata.gz: 5c4bcebf8e4eb279a810b3303033a131efe06d6268e78d8a7ac39d9a1b36a1fe
4
+ data.tar.gz: 14ff5094bf0d70042e048eacc452ebec97e1349f5208477bb34306b9615144e0
5
5
  SHA512:
6
- metadata.gz: 2ad3c7f91b62c2d3fac0c2223539d7defe73b4d39e978fd2829f10ea348d258438dd28944c0772659e46aa7212e564fddaf558451a91cf86f99af1f274e65532
7
- data.tar.gz: 35f70a889f4d71eb0bce143040027533812e8bd400ddd5fd4737481c8830f0904b076f33761ae23e126b12e8d699a1426a7fd08dd56815df3c53a9e16e1fb2e3
6
+ metadata.gz: 0a701718ed6afdda8322a617a8f42cf8d7fc7eefad589bac0d8f8da8d7414e41ffdb1c86d0ac41bc7dd8ee59983cb86853393586272eef6a81dc7b16b328b4d7
7
+ data.tar.gz: 5b1bf1e68526683a41588abd0730f8f66f8159f3c51ddbd733a4f64302d5aa81ea0fbec81c72e106a2b6e6c6bd8f5fafdfa3c59324794a85c8cf754418051859
data/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2021 Build.Security
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
data/README.md CHANGED
@@ -1 +1,114 @@
1
- # opa-rails-middleware
1
+ # opa-rails-middleware
2
+
3
+ <p align="center"><img src="img/logo-build.png" class="center" alt="build-logo" width="30%"/></p>
4
+
5
+ ## Abstract
6
+ [build.security](https://docs.build.security/) provides simple development and management for your organization's authorization policy.
7
+ *opa-rails-middleware* is a Ruby Gem that performs authorization requests against build.security PDPs (Policy Decision Point)/[OPA](https://www.openpolicyagent.org/).
8
+
9
+ ## Data Flow
10
+ <p align="center"> <img src="img/data-flow.png" alt="drawing" width="60%"/></p>
11
+
12
+ ## Usage
13
+ Before you start we recommend completing the onboarding tutorial.
14
+
15
+ ---
16
+ **Important note**
17
+
18
+ To simplify the setup process, the following example uses a local [build.security PDP instance](https://docs.build.security/policy-decision-points-pdp/pdp-deployments/standalone-docker-1).
19
+ If you are already familiar with how to run your PDP, You can also run a PDP on your environment (Dev/Prod, etc).
20
+
21
+ In that case, don't forget to change the **hostname** and **port** in your code.
22
+
23
+ ---
24
+ ### Installation
25
+
26
+ Install the Gem directly
27
+ ```
28
+ gem install policy_decision_point
29
+ ```
30
+
31
+ Or add it to your _Gemfile_
32
+ ```
33
+ gem "policy_decision_point"
34
+ ```
35
+
36
+ and run `bundle install`
37
+
38
+ ---
39
+ ### Add middleware to your Rails application
40
+
41
+ To intercept and authorize requests being made to your Rails application, add the following line to your `config/application.rb` file, under the `Application` class:
42
+
43
+ ```
44
+ config.middleware.use(PolicyDecisionPoint::PDP)
45
+ ```
46
+
47
+ This will initialize the middleware with sensible defaults. To initialize it with different configuration values:
48
+
49
+ ```
50
+ config.middleware.use(PolicyDecisionPoint::PDP, port: 7171, policy_path: 'mypolicy/allow')
51
+ ```
52
+
53
+ This will initialize the middleware and tell it that the PDP server is bound to port `7171` instead of the default `8181`, and that the rule that decides whether to authorize requests is `allow` in the policy package `mypolicy`.
54
+
55
+ You can see how this is done [in the example](/example/config/application.rb).
56
+
57
+ ### Configuration
58
+
59
+ 1. `hostname` - The hostname of the Policy Decision Point (PDP) **Default is localhost**
60
+ 2. `port` - The port at which the PDP service is serving authz decisions **Default is 8181**
61
+ 3. `policy_path` - Full path to the policy (including the rule) that decides whether requests should be authorized **Default is /authz/allow**
62
+ 4. `retry_max_attempts` - the maximum number of retry attempts in case a failure occurs. **Default is 2**.
63
+ 5. `read_timeout_milliseconds` - Read timeout for requests in milliseconds. **Default is 5000**
64
+ 6. `connection_timeout_milliseconds` - Connection timeout in milliseconds. **Default is 5000**
65
+ 7. `retry_backoff_milliseconds` - The number of milliseconds to wait between two consecutive retry attempts. **Default is 250**
66
+
67
+ [How to get your pdp's hostname and port?](https://docs.build.security/policy-decision-points-pdp#pdp-instances-section)
68
+
69
+ ### PDP request/response example
70
+
71
+ This is what the input received by the PDP looks like.
72
+
73
+ Note that the headers are normalized by Rack/Rails: they are uppercase, use underscores, and have prefixes.
74
+
75
+ ```
76
+ {
77
+ "request": {
78
+ "headers": {
79
+ "CONTENT_LENGTH": "7",
80
+ "CONTENT_TYPE": "application/protobuf",
81
+ "HTTP_ACCEPT": "*/*",
82
+ "HTTP_ACCEPT_ENCODING": "gzip;q=1.0,deflate;q=0.6,identity;q=0.3",
83
+ "HTTP_HOST": "9.9.9.9:1234",
84
+ "HTTP_IF_MODIFIED_SINCE": "",
85
+ "HTTP_IF_NONE_MATCH": "",
86
+ "HTTP_USER_AGENT": "Faraday v1.4.3",
87
+ "HTTP_VERSION": "HTTP/1.1"
88
+ },
89
+ "method": "POST",
90
+ "path": "/twirp/example.hello_world.HelloWorld/Hello",
91
+ "query": {
92
+ "key": "value"
93
+ },
94
+ "scheme": "http"
95
+ },
96
+ "source": {
97
+ "ipAddress": "8.8.8.8",
98
+ "port": 1234
99
+ },
100
+ "destination": {
101
+ "ipAddress": "9.9.9.9",
102
+ "port": 1234
103
+ },
104
+ }
105
+ ```
106
+
107
+ If everything works well the middleware receives the following response from the PDP.
108
+
109
+ ```
110
+ {
111
+ "decision_id":"ef414180-05bd-4817-9634-7d1537d5a657",
112
+ "result":true
113
+ }
114
+ ```
data/img/data-flow.png ADDED
Binary file
Binary file
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module PolicyDecisionPoint
4
- VERSION = "0.1.0"
4
+ VERSION = "0.2.0"
5
5
  end
@@ -7,6 +7,7 @@ Gem::Specification.new do |spec|
7
7
  spec.version = PolicyDecisionPoint::VERSION
8
8
  spec.authors = ["Yash Tewari"]
9
9
  spec.email = ["yashtewari1996@gmail.com"]
10
+ spec.licenses = ["MIT"]
10
11
 
11
12
  spec.summary = "Rails middleware that authorizes incoming requests against a Policy Decision Point, such as an Open Policy Agent server"
12
13
  # spec.description = "TODO: Write a longer description or delete this line."
@@ -19,7 +20,7 @@ Gem::Specification.new do |spec|
19
20
  # Specify which files should be added to the gem when it is released.
20
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
21
22
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
22
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|spec|features)/}) }
23
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{\A(?:test|example|spec|features)/}) }
23
24
  end
24
25
 
25
26
  spec.require_paths = ["lib"]
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: policy_decision_point
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yash Tewari
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-11 00:00:00.000000000 Z
11
+ date: 2021-08-18 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description:
14
14
  email:
@@ -23,6 +23,7 @@ files:
23
23
  - ".rubocop.yml"
24
24
  - ".ruby-version"
25
25
  - Gemfile
26
+ - LICENSE
26
27
  - README.md
27
28
  - Rakefile
28
29
  - bin/console
@@ -34,106 +35,15 @@ files:
34
35
  - bin/ruby-parse
35
36
  - bin/ruby-rewrite
36
37
  - bin/setup
37
- - example/Gemfile
38
- - example/Gemfile.lock
39
- - example/README.md
40
- - example/Rakefile
41
- - example/app/assets/config/manifest.js
42
- - example/app/assets/images/.keep
43
- - example/app/assets/stylesheets/application.css
44
- - example/app/channels/application_cable/channel.rb
45
- - example/app/channels/application_cable/connection.rb
46
- - example/app/controllers/application_controller.rb
47
- - example/app/controllers/concerns/.keep
48
- - example/app/controllers/rpc/hello_world/service.proto
49
- - example/app/controllers/rpc/hello_world/service_pb.rb
50
- - example/app/controllers/rpc/hello_world/service_twirp.rb
51
- - example/app/controllers/rpc/hello_world_server.rb
52
- - example/app/helpers/application_helper.rb
53
- - example/app/javascript/channels/consumer.js
54
- - example/app/javascript/channels/index.js
55
- - example/app/javascript/packs/application.js
56
- - example/app/jobs/application_job.rb
57
- - example/app/mailers/application_mailer.rb
58
- - example/app/models/application_record.rb
59
- - example/app/models/concerns/.keep
60
- - example/app/views/layouts/application.html.erb
61
- - example/app/views/layouts/mailer.html.erb
62
- - example/app/views/layouts/mailer.text.erb
63
- - example/babel.config.js
64
- - example/bin/bundle
65
- - example/bin/rails
66
- - example/bin/rake
67
- - example/bin/setup
68
- - example/bin/spring
69
- - example/bin/webpack
70
- - example/bin/webpack-dev-server
71
- - example/bin/yarn
72
- - example/config.ru
73
- - example/config/application.rb
74
- - example/config/boot.rb
75
- - example/config/cable.yml
76
- - example/config/credentials.yml.enc
77
- - example/config/database.yml
78
- - example/config/environment.rb
79
- - example/config/environments/development.rb
80
- - example/config/environments/production.rb
81
- - example/config/environments/test.rb
82
- - example/config/initializers/application_controller_renderer.rb
83
- - example/config/initializers/assets.rb
84
- - example/config/initializers/backtrace_silencers.rb
85
- - example/config/initializers/content_security_policy.rb
86
- - example/config/initializers/cookies_serializer.rb
87
- - example/config/initializers/filter_parameter_logging.rb
88
- - example/config/initializers/inflections.rb
89
- - example/config/initializers/mime_types.rb
90
- - example/config/initializers/permissions_policy.rb
91
- - example/config/initializers/twirp_rails.rb
92
- - example/config/initializers/wrap_parameters.rb
93
- - example/config/locales/en.yml
94
- - example/config/master.key
95
- - example/config/puma.rb
96
- - example/config/routes.rb
97
- - example/config/spring.rb
98
- - example/config/storage.yml
99
- - example/config/webpack/development.js
100
- - example/config/webpack/environment.js
101
- - example/config/webpack/production.js
102
- - example/config/webpack/test.js
103
- - example/config/webpacker.yml
104
- - example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/ffi_c.so
105
- - example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/gem.build_complete
106
- - example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/gem_make.out
107
- - example/extensions/x86_64-linux/3.0.0/ffi-1.15.3/mkmf.log
108
- - example/package.json
109
- - example/postcss.config.js
110
- - example/public/404.html
111
- - example/public/422.html
112
- - example/public/500.html
113
- - example/public/apple-touch-icon-precomposed.png
114
- - example/public/apple-touch-icon.png
115
- - example/public/favicon.ico
116
- - example/public/robots.txt
117
- - example/storage/.keep
118
- - example/test/application_system_test_case.rb
119
- - example/test/channels/application_cable/connection_test.rb
120
- - example/test/controllers/.keep
121
- - example/test/fixtures/files/.keep
122
- - example/test/helpers/.keep
123
- - example/test/integration/.keep
124
- - example/test/mailers/.keep
125
- - example/test/models/.keep
126
- - example/test/system/.keep
127
- - example/test/test_helper.rb
128
- - example/tmp/cache/bootsnap/load-path-cache
129
- - example/vendor/.keep
130
- - example/yarn.lock
38
+ - img/data-flow.png
39
+ - img/logo-build.png
131
40
  - lib/policy_decision_point.rb
132
41
  - lib/policy_decision_point/pdp.rb
133
42
  - lib/policy_decision_point/version.rb
134
43
  - policy_decision_point.gemspec
135
44
  homepage: https://build.security
136
- licenses: []
45
+ licenses:
46
+ - MIT
137
47
  metadata:
138
48
  homepage_uri: https://build.security
139
49
  source_code_uri: https://github.com/build-security/opa-rails-middleware
data/example/Gemfile DELETED
@@ -1,65 +0,0 @@
1
- source 'https://rubygems.org'
2
- git_source(:github) { |repo| "https://github.com/#{repo}.git" }
3
-
4
- ruby '3.0.1'
5
-
6
- # USER DEFINED
7
- gem 'faraday'
8
- gem 'aws-sdk-ec2'
9
- gem 'aws-sdk-iam'
10
- gem 'jwt'
11
-
12
- gem 'twirp-rails'
13
- gem "webrick"
14
-
15
- # Bundle edge Rails instead: gem 'rails', github: 'rails/rails', branch: 'main'
16
- gem 'rails', '~> 6.1.3', '>= 6.1.3.2'
17
- # Use sqlite3 as the database for Active Record
18
- gem 'sqlite3', '~> 1.4'
19
- # Use Puma as the app server
20
- gem 'puma', '~> 5.0'
21
- # Use SCSS for stylesheets
22
- gem 'sass-rails', '>= 6'
23
- # Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
24
- gem 'webpacker', '~> 5.0'
25
- # Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
26
- gem 'turbolinks', '~> 5'
27
- # Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
28
- gem 'jbuilder', '~> 2.7'
29
- # Use Redis adapter to run Action Cable in production
30
- # gem 'redis', '~> 4.0'
31
- # Use Active Model has_secure_password
32
- # gem 'bcrypt', '~> 3.1.7'
33
-
34
- # Use Active Storage variant
35
- # gem 'image_processing', '~> 1.2'
36
-
37
- # Reduces boot times through caching; required in config/boot.rb
38
- gem 'bootsnap', '>= 1.4.4', require: false
39
-
40
- group :development, :test do
41
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
42
- gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
43
- end
44
-
45
- group :development do
46
- # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
47
- gem 'web-console', '>= 4.1.0'
48
- # Display performance information such as SQL time and flame graphs for each request in your browser.
49
- # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
50
- gem 'rack-mini-profiler', '~> 2.0'
51
- gem 'listen', '~> 3.3'
52
- # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
53
- gem 'spring'
54
- end
55
-
56
- group :test do
57
- # Adds support for Capybara system testing and selenium driver
58
- gem 'capybara', '>= 3.26'
59
- gem 'selenium-webdriver'
60
- # Easy installation and use of web drivers to run system tests with browsers
61
- gem 'webdrivers'
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]
data/example/Gemfile.lock DELETED
@@ -1,273 +0,0 @@
1
- GEM
2
- remote: https://rubygems.org/
3
- specs:
4
- actioncable (6.1.4)
5
- actionpack (= 6.1.4)
6
- activesupport (= 6.1.4)
7
- nio4r (~> 2.0)
8
- websocket-driver (>= 0.6.1)
9
- actionmailbox (6.1.4)
10
- actionpack (= 6.1.4)
11
- activejob (= 6.1.4)
12
- activerecord (= 6.1.4)
13
- activestorage (= 6.1.4)
14
- activesupport (= 6.1.4)
15
- mail (>= 2.7.1)
16
- actionmailer (6.1.4)
17
- actionpack (= 6.1.4)
18
- actionview (= 6.1.4)
19
- activejob (= 6.1.4)
20
- activesupport (= 6.1.4)
21
- mail (~> 2.5, >= 2.5.4)
22
- rails-dom-testing (~> 2.0)
23
- actionpack (6.1.4)
24
- actionview (= 6.1.4)
25
- activesupport (= 6.1.4)
26
- rack (~> 2.0, >= 2.0.9)
27
- rack-test (>= 0.6.3)
28
- rails-dom-testing (~> 2.0)
29
- rails-html-sanitizer (~> 1.0, >= 1.2.0)
30
- actiontext (6.1.4)
31
- actionpack (= 6.1.4)
32
- activerecord (= 6.1.4)
33
- activestorage (= 6.1.4)
34
- activesupport (= 6.1.4)
35
- nokogiri (>= 1.8.5)
36
- actionview (6.1.4)
37
- activesupport (= 6.1.4)
38
- builder (~> 3.1)
39
- erubi (~> 1.4)
40
- rails-dom-testing (~> 2.0)
41
- rails-html-sanitizer (~> 1.1, >= 1.2.0)
42
- activejob (6.1.4)
43
- activesupport (= 6.1.4)
44
- globalid (>= 0.3.6)
45
- activemodel (6.1.4)
46
- activesupport (= 6.1.4)
47
- activerecord (6.1.4)
48
- activemodel (= 6.1.4)
49
- activesupport (= 6.1.4)
50
- activestorage (6.1.4)
51
- actionpack (= 6.1.4)
52
- activejob (= 6.1.4)
53
- activerecord (= 6.1.4)
54
- activesupport (= 6.1.4)
55
- marcel (~> 1.0.0)
56
- mini_mime (>= 1.1.0)
57
- activesupport (6.1.4)
58
- concurrent-ruby (~> 1.0, >= 1.0.2)
59
- i18n (>= 1.6, < 2)
60
- minitest (>= 5.1)
61
- tzinfo (~> 2.0)
62
- zeitwerk (~> 2.3)
63
- addressable (2.7.0)
64
- public_suffix (>= 2.0.2, < 5.0)
65
- aws-eventstream (1.1.1)
66
- aws-partitions (1.472.0)
67
- aws-sdk-core (3.115.0)
68
- aws-eventstream (~> 1, >= 1.0.2)
69
- aws-partitions (~> 1, >= 1.239.0)
70
- aws-sigv4 (~> 1.1)
71
- jmespath (~> 1.0)
72
- aws-sdk-ec2 (1.245.0)
73
- aws-sdk-core (~> 3, >= 3.112.0)
74
- aws-sigv4 (~> 1.1)
75
- aws-sdk-iam (1.55.0)
76
- aws-sdk-core (~> 3, >= 3.112.0)
77
- aws-sigv4 (~> 1.1)
78
- aws-sigv4 (1.2.3)
79
- aws-eventstream (~> 1, >= 1.0.2)
80
- bindex (0.8.1)
81
- bootsnap (1.7.5)
82
- msgpack (~> 1.0)
83
- builder (3.2.4)
84
- byebug (11.1.3)
85
- capybara (3.35.3)
86
- addressable
87
- mini_mime (>= 0.1.3)
88
- nokogiri (~> 1.8)
89
- rack (>= 1.6.0)
90
- rack-test (>= 0.6.3)
91
- regexp_parser (>= 1.5, < 3.0)
92
- xpath (~> 3.2)
93
- childprocess (3.0.0)
94
- concurrent-ruby (1.1.9)
95
- crass (1.0.6)
96
- erubi (1.10.0)
97
- faraday (1.4.3)
98
- faraday-em_http (~> 1.0)
99
- faraday-em_synchrony (~> 1.0)
100
- faraday-excon (~> 1.1)
101
- faraday-net_http (~> 1.0)
102
- faraday-net_http_persistent (~> 1.1)
103
- multipart-post (>= 1.2, < 3)
104
- ruby2_keywords (>= 0.0.4)
105
- faraday-em_http (1.0.0)
106
- faraday-em_synchrony (1.0.0)
107
- faraday-excon (1.1.0)
108
- faraday-net_http (1.0.1)
109
- faraday-net_http_persistent (1.1.0)
110
- ffi (1.15.3)
111
- globalid (0.4.2)
112
- activesupport (>= 4.2.0)
113
- google-protobuf (3.17.3-universal-darwin)
114
- google-protobuf (3.17.3-x86_64-linux)
115
- i18n (1.8.10)
116
- concurrent-ruby (~> 1.0)
117
- jbuilder (2.11.2)
118
- activesupport (>= 5.0.0)
119
- jmespath (1.4.0)
120
- listen (3.5.1)
121
- rb-fsevent (~> 0.10, >= 0.10.3)
122
- rb-inotify (~> 0.9, >= 0.9.10)
123
- loofah (2.10.0)
124
- crass (~> 1.0.2)
125
- nokogiri (>= 1.5.9)
126
- mail (2.7.1)
127
- mini_mime (>= 0.1.1)
128
- marcel (1.0.1)
129
- method_source (1.0.0)
130
- mini_mime (1.1.0)
131
- minitest (5.14.4)
132
- msgpack (1.4.2)
133
- multipart-post (2.1.1)
134
- nio4r (2.5.7)
135
- nokogiri (1.11.7-x86_64-darwin)
136
- racc (~> 1.4)
137
- nokogiri (1.11.7-x86_64-linux)
138
- racc (~> 1.4)
139
- public_suffix (4.0.6)
140
- puma (5.3.2)
141
- nio4r (~> 2.0)
142
- racc (1.5.2)
143
- rack (2.2.3)
144
- rack-mini-profiler (2.3.2)
145
- rack (>= 1.2.0)
146
- rack-proxy (0.7.0)
147
- rack
148
- rack-test (1.1.0)
149
- rack (>= 1.0, < 3)
150
- rails (6.1.4)
151
- actioncable (= 6.1.4)
152
- actionmailbox (= 6.1.4)
153
- actionmailer (= 6.1.4)
154
- actionpack (= 6.1.4)
155
- actiontext (= 6.1.4)
156
- actionview (= 6.1.4)
157
- activejob (= 6.1.4)
158
- activemodel (= 6.1.4)
159
- activerecord (= 6.1.4)
160
- activestorage (= 6.1.4)
161
- activesupport (= 6.1.4)
162
- bundler (>= 1.15.0)
163
- railties (= 6.1.4)
164
- sprockets-rails (>= 2.0.0)
165
- rails-dom-testing (2.0.3)
166
- activesupport (>= 4.2.0)
167
- nokogiri (>= 1.6)
168
- rails-html-sanitizer (1.3.0)
169
- loofah (~> 2.3)
170
- railties (6.1.4)
171
- actionpack (= 6.1.4)
172
- activesupport (= 6.1.4)
173
- method_source
174
- rake (>= 0.13)
175
- thor (~> 1.0)
176
- rake (13.0.3)
177
- rb-fsevent (0.11.0)
178
- rb-inotify (0.10.1)
179
- ffi (~> 1.0)
180
- regexp_parser (2.1.1)
181
- ruby2_keywords (0.0.4)
182
- rubyzip (2.3.0)
183
- sass-rails (6.0.0)
184
- sassc-rails (~> 2.1, >= 2.1.1)
185
- sassc (2.4.0)
186
- ffi (~> 1.9)
187
- sassc-rails (2.1.2)
188
- railties (>= 4.0.0)
189
- sassc (>= 2.0)
190
- sprockets (> 3.0)
191
- sprockets-rails
192
- tilt
193
- selenium-webdriver (3.142.7)
194
- childprocess (>= 0.5, < 4.0)
195
- rubyzip (>= 1.2.2)
196
- semantic_range (3.0.0)
197
- spring (2.1.1)
198
- sprockets (4.0.2)
199
- concurrent-ruby (~> 1.0)
200
- rack (> 1, < 3)
201
- sprockets-rails (3.2.2)
202
- actionpack (>= 4.0)
203
- activesupport (>= 4.0)
204
- sprockets (>= 3.0.0)
205
- sqlite3 (1.4.2)
206
- thor (1.1.0)
207
- tilt (2.0.10)
208
- turbolinks (5.2.1)
209
- turbolinks-source (~> 5.2)
210
- turbolinks-source (5.2.0)
211
- twirp (1.7.2)
212
- faraday (< 2)
213
- google-protobuf (~> 3.0, >= 3.7.0)
214
- twirp-rails (0.1.1)
215
- railties (>= 4.2)
216
- twirp
217
- tzinfo (2.0.4)
218
- concurrent-ruby (~> 1.0)
219
- web-console (4.1.0)
220
- actionview (>= 6.0.0)
221
- activemodel (>= 6.0.0)
222
- bindex (>= 0.4.0)
223
- railties (>= 6.0.0)
224
- webdrivers (4.6.0)
225
- nokogiri (~> 1.6)
226
- rubyzip (>= 1.3.0)
227
- selenium-webdriver (>= 3.0, < 4.0)
228
- webpacker (5.4.0)
229
- activesupport (>= 5.2)
230
- rack-proxy (>= 0.6.1)
231
- railties (>= 5.2)
232
- semantic_range (>= 2.3.0)
233
- webrick (1.7.0)
234
- websocket-driver (0.7.5)
235
- websocket-extensions (>= 0.1.0)
236
- websocket-extensions (0.1.5)
237
- xpath (3.2.0)
238
- nokogiri (~> 1.8)
239
- zeitwerk (2.4.2)
240
-
241
- PLATFORMS
242
- x86_64-darwin-20
243
- x86_64-linux
244
-
245
- DEPENDENCIES
246
- aws-sdk-ec2
247
- aws-sdk-iam
248
- bootsnap (>= 1.4.4)
249
- byebug
250
- capybara (>= 3.26)
251
- faraday
252
- jbuilder (~> 2.7)
253
- listen (~> 3.3)
254
- puma (~> 5.0)
255
- rack-mini-profiler (~> 2.0)
256
- rails (~> 6.1.3, >= 6.1.3.2)
257
- sass-rails (>= 6)
258
- selenium-webdriver
259
- spring
260
- sqlite3 (~> 1.4)
261
- turbolinks (~> 5)
262
- twirp-rails
263
- tzinfo-data
264
- web-console (>= 4.1.0)
265
- webdrivers
266
- webpacker (~> 5.0)
267
- webrick
268
-
269
- RUBY VERSION
270
- ruby 3.0.1p64
271
-
272
- BUNDLED WITH
273
- 2.2.15