my_api_client 0.16.0 → 0.20.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.
- checksums.yaml +4 -4
- data/.circleci/config.yml +95 -135
- data/.gem_comet.yml +13 -2
- data/.rubocop.yml +5 -1
- data/.rubocop_todo.yml +39 -1
- data/CHANGELOG.md +142 -0
- data/Gemfile +0 -3
- data/Gemfile.lock +70 -64
- data/README.jp.md +126 -5
- data/bin/console +4 -0
- data/example/api_clients/application_api_client.rb +2 -2
- data/example/api_clients/my_rest_api_client.rb +9 -3
- data/gemfiles/{rails_4.2.gemfile → rails_6.1.gemfile} +1 -1
- data/lib/generators/rails/USAGE +1 -1
- data/lib/generators/rails/api_client_generator.rb +6 -0
- data/lib/generators/rails/templates/api_client.rb.erb +1 -1
- data/lib/generators/rspec/USAGE +1 -1
- data/lib/generators/rspec/api_client_generator.rb +6 -0
- data/lib/generators/rspec/templates/api_client_spec.rb.erb +23 -16
- data/lib/my_api_client/base.rb +2 -9
- data/lib/my_api_client/error_handling/generator.rb +0 -2
- data/lib/my_api_client/errors.rb +1 -0
- data/lib/my_api_client/integrations/bugsnag.rb +1 -1
- data/lib/my_api_client/params/params.rb +1 -3
- data/lib/my_api_client/request.rb +3 -3
- data/lib/my_api_client/request/basic.rb +1 -3
- data/lib/my_api_client/request/executor.rb +1 -1
- data/lib/my_api_client/rspec/matchers/request_to.rb +1 -1
- data/lib/my_api_client/rspec/stub.rb +30 -9
- data/lib/my_api_client/version.rb +1 -1
- data/my_api/.ruby-version +1 -1
- data/my_api/Gemfile +3 -0
- data/my_api/Gemfile.lock +116 -108
- data/my_api/app/controllers/pagination_controller.rb +2 -2
- data/my_api/spec/controllers/rest_controller_spec.rb +23 -5
- data/my_api_client.gemspec +3 -3
- data/rails_app/rails_5.2/.rspec +3 -0
- data/rails_app/rails_5.2/Gemfile +17 -0
- data/rails_app/rails_5.2/Gemfile.lock +174 -0
- data/rails_app/rails_5.2/README.md +24 -0
- data/rails_app/rails_5.2/Rakefile +8 -0
- data/rails_app/rails_5.2/app/controllers/application_controller.rb +4 -0
- data/rails_app/rails_5.2/app/jobs/application_job.rb +4 -0
- data/rails_app/rails_5.2/bin/bundle +5 -0
- data/rails_app/rails_5.2/bin/rails +6 -0
- data/rails_app/rails_5.2/bin/rake +6 -0
- data/rails_app/rails_5.2/bin/setup +27 -0
- data/rails_app/rails_5.2/bin/update +27 -0
- data/rails_app/rails_5.2/config.ru +7 -0
- data/rails_app/rails_5.2/config/application.rb +37 -0
- data/rails_app/rails_5.2/config/boot.rb +6 -0
- data/rails_app/rails_5.2/config/credentials.yml.enc +1 -0
- data/rails_app/rails_5.2/config/environment.rb +7 -0
- data/rails_app/rails_5.2/config/environments/development.rb +41 -0
- data/rails_app/rails_5.2/config/environments/production.rb +70 -0
- data/rails_app/rails_5.2/config/environments/test.rb +38 -0
- data/rails_app/rails_5.2/config/initializers/application_controller_renderer.rb +9 -0
- data/rails_app/rails_5.2/config/initializers/backtrace_silencers.rb +8 -0
- data/rails_app/rails_5.2/config/initializers/cors.rb +17 -0
- data/rails_app/rails_5.2/config/initializers/filter_parameter_logging.rb +6 -0
- data/rails_app/rails_5.2/config/initializers/inflections.rb +17 -0
- data/rails_app/rails_5.2/config/initializers/mime_types.rb +5 -0
- data/rails_app/rails_5.2/config/initializers/wrap_parameters.rb +11 -0
- data/rails_app/rails_5.2/config/locales/en.yml +33 -0
- data/rails_app/rails_5.2/config/routes.rb +5 -0
- data/rails_app/rails_5.2/config/spring.rb +8 -0
- data/rails_app/rails_5.2/public/robots.txt +1 -0
- data/rails_app/rails_5.2/spec/rails_helper.rb +14 -0
- data/rails_app/rails_5.2/spec/spec_helper.rb +13 -0
- data/rails_app/rails_6.0/.rspec +3 -0
- data/rails_app/rails_6.0/Gemfile +17 -0
- data/rails_app/rails_6.0/Gemfile.lock +190 -0
- data/rails_app/rails_6.0/README.md +24 -0
- data/rails_app/rails_6.0/Rakefile +8 -0
- data/rails_app/rails_6.0/app/controllers/application_controller.rb +4 -0
- data/rails_app/rails_6.0/app/jobs/application_job.rb +9 -0
- data/rails_app/rails_6.0/bin/rails +6 -0
- data/rails_app/rails_6.0/bin/rake +6 -0
- data/rails_app/rails_6.0/bin/setup +27 -0
- data/rails_app/rails_6.0/config.ru +7 -0
- data/rails_app/rails_6.0/config/application.rb +39 -0
- data/rails_app/rails_6.0/config/boot.rb +6 -0
- data/rails_app/rails_6.0/config/credentials.yml.enc +1 -0
- data/rails_app/rails_6.0/config/environment.rb +7 -0
- data/rails_app/rails_6.0/config/environments/development.rb +39 -0
- data/rails_app/rails_6.0/config/environments/production.rb +90 -0
- data/rails_app/rails_6.0/config/environments/test.rb +41 -0
- data/rails_app/rails_6.0/config/initializers/application_controller_renderer.rb +9 -0
- data/rails_app/rails_6.0/config/initializers/backtrace_silencers.rb +8 -0
- data/rails_app/rails_6.0/config/initializers/cors.rb +17 -0
- data/rails_app/rails_6.0/config/initializers/filter_parameter_logging.rb +6 -0
- data/rails_app/rails_6.0/config/initializers/inflections.rb +17 -0
- data/rails_app/rails_6.0/config/initializers/mime_types.rb +5 -0
- data/rails_app/rails_6.0/config/initializers/wrap_parameters.rb +11 -0
- data/rails_app/rails_6.0/config/locales/en.yml +33 -0
- data/rails_app/rails_6.0/config/routes.rb +5 -0
- data/rails_app/rails_6.0/config/spring.rb +8 -0
- data/rails_app/rails_6.0/public/robots.txt +1 -0
- data/rails_app/rails_6.0/spec/rails_helper.rb +14 -0
- data/rails_app/rails_6.0/spec/spec_helper.rb +13 -0
- data/rails_app/rails_6.1/.gitattributes +8 -0
- data/rails_app/rails_6.1/.gitignore +28 -0
- data/rails_app/rails_6.1/.rspec +3 -0
- data/rails_app/rails_6.1/Gemfile +17 -0
- data/rails_app/rails_6.1/Gemfile.lock +197 -0
- data/rails_app/rails_6.1/README.md +24 -0
- data/rails_app/rails_6.1/Rakefile +6 -0
- data/rails_app/rails_6.1/app/controllers/application_controller.rb +4 -0
- data/rails_app/rails_6.1/app/controllers/concerns/.keep +0 -0
- data/rails_app/rails_6.1/app/javascript/.keep +0 -0
- data/rails_app/rails_6.1/app/models/application_record.rb +5 -0
- data/rails_app/rails_6.1/app/models/concerns/.keep +0 -0
- data/rails_app/rails_6.1/bin/bundle +114 -0
- data/rails_app/rails_6.1/bin/rails +4 -0
- data/rails_app/rails_6.1/bin/rake +4 -0
- data/rails_app/rails_6.1/bin/setup +33 -0
- data/rails_app/rails_6.1/config.ru +6 -0
- data/rails_app/rails_6.1/config/application.rb +42 -0
- data/rails_app/rails_6.1/config/boot.rb +5 -0
- data/rails_app/rails_6.1/config/credentials.yml.enc +1 -0
- data/rails_app/rails_6.1/config/database.yml +25 -0
- data/rails_app/rails_6.1/config/environment.rb +7 -0
- data/rails_app/rails_6.1/config/environments/development.rb +59 -0
- data/rails_app/rails_6.1/config/environments/production.rb +97 -0
- data/rails_app/rails_6.1/config/environments/test.rb +51 -0
- data/rails_app/rails_6.1/config/initializers/application_controller_renderer.rb +9 -0
- data/rails_app/rails_6.1/config/initializers/backtrace_silencers.rb +10 -0
- data/rails_app/rails_6.1/config/initializers/cors.rb +17 -0
- data/rails_app/rails_6.1/config/initializers/filter_parameter_logging.rb +8 -0
- data/rails_app/rails_6.1/config/initializers/inflections.rb +17 -0
- data/rails_app/rails_6.1/config/initializers/mime_types.rb +5 -0
- data/rails_app/rails_6.1/config/initializers/wrap_parameters.rb +16 -0
- data/rails_app/rails_6.1/config/locales/en.yml +33 -0
- data/rails_app/rails_6.1/config/routes.rb +5 -0
- data/rails_app/rails_6.1/db/seeds.rb +8 -0
- data/rails_app/rails_6.1/lib/tasks/.keep +0 -0
- data/rails_app/rails_6.1/public/robots.txt +1 -0
- data/rails_app/rails_6.1/spec/rails_helper.rb +14 -0
- data/rails_app/rails_6.1/spec/spec_helper.rb +13 -0
- data/rails_app/rails_6.1/tmp/.keep +0 -0
- data/rails_app/rails_6.1/tmp/pids/.keep +0 -0
- data/rails_app/rails_6.1/vendor/.keep +0 -0
- metadata +115 -9
@@ -1,7 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
class <%= "#{class_name}ApiClient" %> < ::ApplicationApiClient
|
4
|
-
endpoint '
|
4
|
+
endpoint '<%= options[:endpoint] %>'
|
5
5
|
|
6
6
|
# error_handling json: { '$.errors.code': 10 } do |params, logger|
|
7
7
|
# # Behavior when detected an error.
|
data/lib/generators/rspec/USAGE
CHANGED
@@ -2,7 +2,7 @@ Description:
|
|
2
2
|
Generate a new api client spec files.
|
3
3
|
|
4
4
|
Example:
|
5
|
-
rails g rspec:api_client path/to/resource get:path/to/resource`
|
5
|
+
rails g rspec:api_client path/to/resource get:path/to/resource` --endpoint https://example.com
|
6
6
|
|
7
7
|
This will create:
|
8
8
|
create spec/api_clients/path/to/resource_api_client_spec.rb
|
@@ -16,6 +16,12 @@ module Rspec
|
|
16
16
|
default: %w[get:path/to/resource post:path/to/resource],
|
17
17
|
banner: '{method}:{path} {method}:{path}'
|
18
18
|
|
19
|
+
class_option :endpoint,
|
20
|
+
type: :string,
|
21
|
+
default: 'https://example.com',
|
22
|
+
banner: 'https://example.com',
|
23
|
+
desc: 'Common part of the target API endpoint'
|
24
|
+
|
19
25
|
class_option :api_client_specs, type: :boolean, default: true
|
20
26
|
|
21
27
|
def generate_api_client_spec
|
@@ -11,16 +11,28 @@ RSpec.describe <%= "#{class_name}ApiClient" %>, <%= type_metatag(:api_client) %>
|
|
11
11
|
end
|
12
12
|
|
13
13
|
shared_examples 'to handle errors' do
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
14
|
+
context 'when the API returns 200 OK' do
|
15
|
+
it do
|
16
|
+
expect { api_request }
|
17
|
+
.not_to be_handled_as_an_error
|
18
|
+
.when_receive(status_code: 200)
|
19
|
+
end
|
18
20
|
end
|
19
21
|
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
22
|
+
context 'when the API returns 400 Bad Request' do
|
23
|
+
it do
|
24
|
+
expect { api_request }
|
25
|
+
.to be_handled_as_an_error(MyApiClient::ClientError::BadRequest)
|
26
|
+
.when_receive(status_code: 400)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
context 'when the API returns 500 Internal Server Error' do
|
31
|
+
it do
|
32
|
+
expect { api_request }
|
33
|
+
.to be_handled_as_an_error(MyApiClient::ServerError::InternalServerError)
|
34
|
+
.when_receive(status_code: 500)
|
35
|
+
end
|
24
36
|
end
|
25
37
|
end
|
26
38
|
<% yeild_request_arguments do |action, http_method, pathname| -%>
|
@@ -28,22 +40,17 @@ RSpec.describe <%= "#{class_name}ApiClient" %>, <%= type_metatag(:api_client) %>
|
|
28
40
|
describe '#<%= action %>' do
|
29
41
|
subject(:api_request) { api_client.<%= action %> }
|
30
42
|
|
43
|
+
it_behaves_like 'to handle errors'
|
44
|
+
|
31
45
|
it do
|
32
46
|
expect { api_request }
|
33
|
-
.to request_to(:<%= http_method %>, '
|
47
|
+
.to request_to(:<%= http_method %>, '<%= options[:endpoint] %>/<%= pathname %>')
|
34
48
|
<% if http_method == 'get' -%>
|
35
49
|
.with(headers: headers, query: {})
|
36
50
|
<% else -%>
|
37
51
|
.with(headers: headers, body: {})
|
38
52
|
<% end -%>
|
39
53
|
end
|
40
|
-
|
41
|
-
it_behaves_like 'to handle errors' do
|
42
|
-
it do
|
43
|
-
expect { api_request }.not_to be_handled_as_an_error
|
44
|
-
.when_receive(status_code: 200, body: nil, headers: nil)
|
45
|
-
end
|
46
|
-
end
|
47
54
|
end
|
48
55
|
<% end -%>
|
49
56
|
end
|
data/lib/my_api_client/base.rb
CHANGED
@@ -8,15 +8,8 @@ module MyApiClient
|
|
8
8
|
include MyApiClient::Exceptions
|
9
9
|
include MyApiClient::Request
|
10
10
|
|
11
|
-
|
12
|
-
|
13
|
-
class_attribute :error_handlers, instance_writer: false, default: []
|
14
|
-
else
|
15
|
-
class_attribute :logger
|
16
|
-
class_attribute :error_handlers
|
17
|
-
self.logger = ::Logger.new(STDOUT)
|
18
|
-
self.error_handlers = []
|
19
|
-
end
|
11
|
+
class_attribute :logger, instance_writer: false, default: ::Logger.new($stdout)
|
12
|
+
class_attribute :error_handlers, instance_writer: false, default: []
|
20
13
|
|
21
14
|
include MyApiClient::DefaultErrorHandlers
|
22
15
|
|
@@ -85,7 +85,6 @@ module MyApiClient
|
|
85
85
|
end
|
86
86
|
end
|
87
87
|
|
88
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
89
88
|
def match?(operator, target)
|
90
89
|
case operator
|
91
90
|
when nil
|
@@ -102,7 +101,6 @@ module MyApiClient
|
|
102
101
|
raise "Unexpected operator type was given: #{operator.inspect}"
|
103
102
|
end
|
104
103
|
end
|
105
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
106
104
|
|
107
105
|
def match_all?(json, response_body)
|
108
106
|
return true if json.nil?
|
data/lib/my_api_client/errors.rb
CHANGED
@@ -40,9 +40,7 @@ module MyApiClient
|
|
40
40
|
# @return [Hash] Metadata for bugsnag
|
41
41
|
def request_metadata
|
42
42
|
if request.present?
|
43
|
-
request.metadata.
|
44
|
-
memo[:"request_#{key}"] = value
|
45
|
-
end
|
43
|
+
request.metadata.transform_keys { |key| :"request_#{key}" }
|
46
44
|
else
|
47
45
|
{}
|
48
46
|
end
|
@@ -11,7 +11,7 @@ module MyApiClient
|
|
11
11
|
# Executes HTTP request with relative URI.
|
12
12
|
#
|
13
13
|
# @param http_method [Symbol]
|
14
|
-
# HTTP method. e.g. `:get`, `:post`, `:patch` and `:delete`.
|
14
|
+
# HTTP method. e.g. `:get`, `:post`, `:put`, `:patch` and `:delete`.
|
15
15
|
# @param pathname [String]
|
16
16
|
# Pathname of the request target URL.
|
17
17
|
# It's joined with the defined by `endpoint`.
|
@@ -24,7 +24,7 @@ module MyApiClient
|
|
24
24
|
# @return [Sawyer::Response]
|
25
25
|
# Response instance.
|
26
26
|
def _request_with_relative_uri(http_method, pathname, headers, query, body)
|
27
|
-
query_strings = query.present? ?
|
27
|
+
query_strings = query.present? ? "?#{query.to_query}" : ''
|
28
28
|
uri = URI.join(File.join(endpoint, pathname), query_strings)
|
29
29
|
_request_with_absolute_uri(http_method, uri, headers, body)
|
30
30
|
end
|
@@ -32,7 +32,7 @@ module MyApiClient
|
|
32
32
|
# Executes HTTP request with absolute URI.
|
33
33
|
#
|
34
34
|
# @param http_method [Symbol]
|
35
|
-
# HTTP method. e.g. `:get`, `:post`, `:patch` and `:delete`.
|
35
|
+
# HTTP method. e.g. `:get`, `:post`, `:put`, `:patch` and `:delete`.
|
36
36
|
# @param uri [URI]
|
37
37
|
# Request target URI including query strings.
|
38
38
|
# @param headers [Hash, nil]
|
@@ -4,7 +4,7 @@ module MyApiClient
|
|
4
4
|
module Request
|
5
5
|
# Provides basic HTTP request method.
|
6
6
|
module Basic
|
7
|
-
HTTP_METHODS = %i[get post patch delete].freeze
|
7
|
+
HTTP_METHODS = %i[get post put patch delete].freeze
|
8
8
|
|
9
9
|
HTTP_METHODS.each do |http_method|
|
10
10
|
class_eval <<~METHOD, __FILE__, __LINE__ + 1
|
@@ -27,8 +27,6 @@ module MyApiClient
|
|
27
27
|
end
|
28
28
|
METHOD
|
29
29
|
end
|
30
|
-
|
31
|
-
alias put patch
|
32
30
|
end
|
33
31
|
end
|
34
32
|
end
|
@@ -32,7 +32,7 @@ module MyApiClient
|
|
32
32
|
def call
|
33
33
|
request_logger.info('Start')
|
34
34
|
response = api_request
|
35
|
-
request_logger.info("Duration #{response.timing}
|
35
|
+
request_logger.info("Duration #{response.timing.in_milliseconds} msec")
|
36
36
|
verify(response)
|
37
37
|
rescue MyApiClient::Error => e
|
38
38
|
request_logger.warn("Failure (#{e.message})")
|
@@ -50,7 +50,7 @@ RSpec::Matchers.define :request_to do |expected_method, expected_url|
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def request_line(method, url, query = nil)
|
53
|
-
url +=
|
53
|
+
url += "?#{query.to_query}" if query.present?
|
54
54
|
"#{method.upcase} #{url}"
|
55
55
|
end
|
56
56
|
|
@@ -18,6 +18,9 @@ module MyApiClient
|
|
18
18
|
# @example
|
19
19
|
# stub_api_client_all(
|
20
20
|
# ExampleApiClient,
|
21
|
+
# get_users: { # Returns an arbitrary pageable response
|
22
|
+
# pageable: [ { id: 1 }, { id: 2 }] # for `#pageable_get`.
|
23
|
+
# },
|
21
24
|
# get_user: { response: { id: 1 } }, # Returns an arbitrary response.
|
22
25
|
# post_users: { id: 1 }, # You can ommit `response` keyword.
|
23
26
|
# patch_user: ->(params) { { id: params[:id] } }, # Returns calculated result as response.
|
@@ -46,6 +49,9 @@ module MyApiClient
|
|
46
49
|
# @example
|
47
50
|
# api_client = stub_api_client(
|
48
51
|
# ExampleApiClient,
|
52
|
+
# get_users: { # Returns an arbitrary pageable response
|
53
|
+
# pageable: [ { id: 1 }, { id: 2 }] # for `#pageable_get`.
|
54
|
+
# },
|
49
55
|
# get_user: { response: { id: 1 } }, # Returns an arbitrary response.
|
50
56
|
# post_users: { id: 1 }, # You can ommit `response` keyword.
|
51
57
|
# patch_user: ->(params) { { id: params[:id] } }, # Returns calculated result as response.
|
@@ -67,25 +73,40 @@ module MyApiClient
|
|
67
73
|
|
68
74
|
private
|
69
75
|
|
70
|
-
# rubocop:disable Metrics/AbcSize
|
71
76
|
def stubbing(instance, action, options)
|
77
|
+
allow(instance).to receive(action) do |*request|
|
78
|
+
generate_stubbed_response(options, *request)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def generate_stubbed_response(options, *request) # rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
72
83
|
case options
|
73
84
|
when Proc
|
74
|
-
|
85
|
+
stub_as_resource(options.call(*request))
|
75
86
|
when Hash
|
76
|
-
if options[:raise]
|
77
|
-
|
78
|
-
allow(instance).to receive(action).and_raise(exception)
|
87
|
+
if options[:raise] # rubocop:disable Style/GuardClause
|
88
|
+
raise process_raise_option(options[:raise], options[:response])
|
79
89
|
elsif options[:response]
|
80
|
-
|
90
|
+
stub_as_resource(options[:response])
|
91
|
+
elsif options[:pageable].is_a?(Enumerable)
|
92
|
+
stub_as_pageable_resource(options[:pageable].each, *request)
|
81
93
|
else
|
82
|
-
|
94
|
+
stub_as_resource(options)
|
83
95
|
end
|
84
96
|
else
|
85
|
-
|
97
|
+
stub_as_resource(options)
|
86
98
|
end
|
87
99
|
end
|
88
|
-
|
100
|
+
|
101
|
+
def stub_as_pageable_resource(pager, *request)
|
102
|
+
Enumerator.new do |y|
|
103
|
+
loop do
|
104
|
+
y << generate_stubbed_response(pager.next, *request)
|
105
|
+
rescue StopIteration
|
106
|
+
break
|
107
|
+
end
|
108
|
+
end.lazy
|
109
|
+
end
|
89
110
|
|
90
111
|
# Provides a shorthand for `raise` option.
|
91
112
|
# `MyApiClient::Error` requires `MyApiClient::Params::Params` instance on
|
data/my_api/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.7.2
|
data/my_api/Gemfile
CHANGED
@@ -6,6 +6,9 @@ gem 'jets'
|
|
6
6
|
|
7
7
|
gem 'dynomite'
|
8
8
|
|
9
|
+
# See: https://github.com/boltops-tools/jets/issues/523
|
10
|
+
gem 'nokogiri', '~> 1.11.0'
|
11
|
+
|
9
12
|
# development and test groups are not bundled as part of the deployment
|
10
13
|
group :development, :test do
|
11
14
|
# Call 'byebug' anywhere in the code to stop execution and get a debugger console
|
data/my_api/Gemfile.lock
CHANGED
@@ -1,43 +1,44 @@
|
|
1
1
|
GEM
|
2
2
|
remote: https://rubygems.org/
|
3
3
|
specs:
|
4
|
-
actionmailer (6.
|
5
|
-
actionpack (= 6.
|
6
|
-
actionview (= 6.
|
7
|
-
activejob (= 6.
|
4
|
+
actionmailer (6.1.2.1)
|
5
|
+
actionpack (= 6.1.2.1)
|
6
|
+
actionview (= 6.1.2.1)
|
7
|
+
activejob (= 6.1.2.1)
|
8
|
+
activesupport (= 6.1.2.1)
|
8
9
|
mail (~> 2.5, >= 2.5.4)
|
9
10
|
rails-dom-testing (~> 2.0)
|
10
|
-
actionpack (6.
|
11
|
-
actionview (= 6.
|
12
|
-
activesupport (= 6.
|
13
|
-
rack (~> 2.0, >= 2.0.
|
11
|
+
actionpack (6.1.2.1)
|
12
|
+
actionview (= 6.1.2.1)
|
13
|
+
activesupport (= 6.1.2.1)
|
14
|
+
rack (~> 2.0, >= 2.0.9)
|
14
15
|
rack-test (>= 0.6.3)
|
15
16
|
rails-dom-testing (~> 2.0)
|
16
17
|
rails-html-sanitizer (~> 1.0, >= 1.2.0)
|
17
|
-
actionview (6.
|
18
|
-
activesupport (= 6.
|
18
|
+
actionview (6.1.2.1)
|
19
|
+
activesupport (= 6.1.2.1)
|
19
20
|
builder (~> 3.1)
|
20
21
|
erubi (~> 1.4)
|
21
22
|
rails-dom-testing (~> 2.0)
|
22
23
|
rails-html-sanitizer (~> 1.1, >= 1.2.0)
|
23
|
-
activejob (6.
|
24
|
-
activesupport (= 6.
|
24
|
+
activejob (6.1.2.1)
|
25
|
+
activesupport (= 6.1.2.1)
|
25
26
|
globalid (>= 0.3.6)
|
26
|
-
activemodel (6.
|
27
|
-
activesupport (= 6.
|
28
|
-
activerecord (6.
|
29
|
-
activemodel (= 6.
|
30
|
-
activesupport (= 6.
|
31
|
-
activesupport (6.
|
27
|
+
activemodel (6.1.2.1)
|
28
|
+
activesupport (= 6.1.2.1)
|
29
|
+
activerecord (6.1.2.1)
|
30
|
+
activemodel (= 6.1.2.1)
|
31
|
+
activesupport (= 6.1.2.1)
|
32
|
+
activesupport (6.1.2.1)
|
32
33
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
33
|
-
i18n (>=
|
34
|
-
minitest (
|
35
|
-
tzinfo (~>
|
36
|
-
zeitwerk (~> 2.
|
34
|
+
i18n (>= 1.6, < 2)
|
35
|
+
minitest (>= 5.1)
|
36
|
+
tzinfo (~> 2.0)
|
37
|
+
zeitwerk (~> 2.3)
|
37
38
|
addressable (2.7.0)
|
38
39
|
public_suffix (>= 2.0.2, < 5.0)
|
39
|
-
aws-eventstream (1.0
|
40
|
-
aws-mfa-secure (0.4.
|
40
|
+
aws-eventstream (1.1.0)
|
41
|
+
aws-mfa-secure (0.4.3)
|
41
42
|
activesupport
|
42
43
|
aws-sdk-core
|
43
44
|
aws_config
|
@@ -45,85 +46,87 @@ GEM
|
|
45
46
|
rainbow
|
46
47
|
thor
|
47
48
|
zeitwerk
|
48
|
-
aws-partitions (1.
|
49
|
-
aws-sdk-apigateway (1.
|
50
|
-
aws-sdk-core (~> 3, >= 3.
|
49
|
+
aws-partitions (1.416.0)
|
50
|
+
aws-sdk-apigateway (1.58.0)
|
51
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
51
52
|
aws-sigv4 (~> 1.1)
|
52
|
-
aws-sdk-cloudformation (1.
|
53
|
-
aws-sdk-core (~> 3, >= 3.
|
53
|
+
aws-sdk-cloudformation (1.46.0)
|
54
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
54
55
|
aws-sigv4 (~> 1.1)
|
55
|
-
aws-sdk-cloudwatchlogs (1.
|
56
|
-
aws-sdk-core (~> 3, >= 3.
|
56
|
+
aws-sdk-cloudwatchlogs (1.38.0)
|
57
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
57
58
|
aws-sigv4 (~> 1.1)
|
58
|
-
aws-sdk-core (3.
|
59
|
-
aws-eventstream (~> 1
|
59
|
+
aws-sdk-core (3.111.0)
|
60
|
+
aws-eventstream (~> 1, >= 1.0.2)
|
60
61
|
aws-partitions (~> 1, >= 1.239.0)
|
61
62
|
aws-sigv4 (~> 1.1)
|
62
63
|
jmespath (~> 1.0)
|
63
|
-
aws-sdk-dynamodb (1.
|
64
|
-
aws-sdk-core (~> 3, >= 3.
|
64
|
+
aws-sdk-dynamodb (1.58.0)
|
65
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
65
66
|
aws-sigv4 (~> 1.1)
|
66
|
-
aws-sdk-kinesis (1.
|
67
|
-
aws-sdk-core (~> 3, >= 3.
|
67
|
+
aws-sdk-kinesis (1.30.0)
|
68
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
68
69
|
aws-sigv4 (~> 1.1)
|
69
|
-
aws-sdk-kms (1.
|
70
|
-
aws-sdk-core (~> 3, >= 3.
|
70
|
+
aws-sdk-kms (1.41.0)
|
71
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
71
72
|
aws-sigv4 (~> 1.1)
|
72
|
-
aws-sdk-lambda (1.
|
73
|
-
aws-sdk-core (~> 3, >= 3.
|
73
|
+
aws-sdk-lambda (1.57.0)
|
74
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
74
75
|
aws-sigv4 (~> 1.1)
|
75
|
-
aws-sdk-s3 (1.
|
76
|
-
aws-sdk-core (~> 3, >= 3.
|
76
|
+
aws-sdk-s3 (1.87.0)
|
77
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
77
78
|
aws-sdk-kms (~> 1)
|
78
79
|
aws-sigv4 (~> 1.1)
|
79
|
-
aws-sdk-sns (1.
|
80
|
-
aws-sdk-core (~> 3, >= 3.
|
80
|
+
aws-sdk-sns (1.36.0)
|
81
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
81
82
|
aws-sigv4 (~> 1.1)
|
82
|
-
aws-sdk-sqs (1.
|
83
|
-
aws-sdk-core (~> 3, >= 3.
|
83
|
+
aws-sdk-sqs (1.35.0)
|
84
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
84
85
|
aws-sigv4 (~> 1.1)
|
85
|
-
aws-sdk-ssm (1.
|
86
|
-
aws-sdk-core (~> 3, >= 3.
|
86
|
+
aws-sdk-ssm (1.101.0)
|
87
|
+
aws-sdk-core (~> 3, >= 3.109.0)
|
87
88
|
aws-sigv4 (~> 1.1)
|
88
|
-
aws-sigv4 (1.
|
89
|
-
aws-eventstream (~> 1
|
89
|
+
aws-sigv4 (1.2.2)
|
90
|
+
aws-eventstream (~> 1, >= 1.0.2)
|
90
91
|
aws_config (0.1.0)
|
91
92
|
builder (3.2.4)
|
92
|
-
byebug (11.1.
|
93
|
-
capybara (3.
|
93
|
+
byebug (11.1.3)
|
94
|
+
capybara (3.35.3)
|
94
95
|
addressable
|
95
96
|
mini_mime (>= 0.1.3)
|
96
97
|
nokogiri (~> 1.8)
|
97
98
|
rack (>= 1.6.0)
|
98
99
|
rack-test (>= 0.6.3)
|
99
|
-
regexp_parser (
|
100
|
+
regexp_parser (>= 1.5, < 3.0)
|
100
101
|
xpath (~> 3.2)
|
102
|
+
cfn-status (0.4.2)
|
103
|
+
aws-sdk-cloudformation
|
101
104
|
cfn_camelizer (0.4.9)
|
102
105
|
activesupport
|
103
106
|
memoist
|
104
107
|
rainbow
|
105
|
-
|
106
|
-
concurrent-ruby (1.1.
|
108
|
+
cfn_response (0.2.0)
|
109
|
+
concurrent-ruby (1.1.8)
|
107
110
|
crass (1.0.6)
|
108
|
-
diff-lcs (1.
|
109
|
-
dotenv (2.7.
|
110
|
-
dynomite (1.2.
|
111
|
+
diff-lcs (1.4.4)
|
112
|
+
dotenv (2.7.6)
|
113
|
+
dynomite (1.2.6)
|
111
114
|
activesupport
|
112
115
|
aws-sdk-dynamodb
|
113
116
|
rainbow
|
114
|
-
erubi (1.
|
117
|
+
erubi (1.10.0)
|
115
118
|
gems (1.2.0)
|
116
119
|
globalid (0.4.2)
|
117
120
|
activesupport (>= 4.2.0)
|
118
121
|
hashie (4.1.0)
|
119
|
-
i18n (1.8.
|
122
|
+
i18n (1.8.8)
|
120
123
|
concurrent-ruby (~> 1.0)
|
121
|
-
jets (
|
122
|
-
actionmailer (~> 6.
|
123
|
-
actionpack (~> 6.
|
124
|
-
actionview (~> 6.
|
125
|
-
activerecord (~> 6.
|
126
|
-
activesupport (~> 6.
|
124
|
+
jets (3.0.2)
|
125
|
+
actionmailer (~> 6.1.0)
|
126
|
+
actionpack (~> 6.1.0)
|
127
|
+
actionview (~> 6.1.0)
|
128
|
+
activerecord (~> 6.1.0)
|
129
|
+
activesupport (~> 6.1.0)
|
127
130
|
aws-mfa-secure (~> 0.4.0)
|
128
131
|
aws-sdk-apigateway
|
129
132
|
aws-sdk-cloudformation
|
@@ -135,52 +138,52 @@ GEM
|
|
135
138
|
aws-sdk-sns
|
136
139
|
aws-sdk-sqs
|
137
140
|
aws-sdk-ssm
|
141
|
+
cfn-status
|
138
142
|
cfn_camelizer (~> 0.4.6)
|
139
|
-
|
143
|
+
cfn_response
|
140
144
|
dotenv
|
141
145
|
gems
|
142
146
|
hashie
|
143
|
-
jets-gems
|
144
147
|
jets-html-sanitizer
|
145
|
-
json
|
146
148
|
kramdown
|
147
149
|
memoist
|
148
150
|
mimemagic
|
149
151
|
rack
|
150
|
-
railties (~> 6.
|
152
|
+
railties (~> 6.1.0)
|
151
153
|
rainbow
|
152
154
|
recursive-open-struct
|
155
|
+
serverlessgems (~> 0.1.2)
|
153
156
|
shotgun
|
154
157
|
text-table
|
155
158
|
thor
|
156
159
|
zeitwerk
|
157
|
-
jets-gems (0.2.2)
|
158
|
-
gems
|
159
160
|
jets-html-sanitizer (1.0.4)
|
160
161
|
loofah (~> 2.2, >= 2.2.2)
|
161
162
|
jmespath (1.4.0)
|
162
|
-
|
163
|
-
|
163
|
+
kramdown (2.3.0)
|
164
|
+
rexml
|
164
165
|
launchy (2.5.0)
|
165
166
|
addressable (~> 2.7)
|
166
|
-
loofah (2.
|
167
|
+
loofah (2.9.0)
|
167
168
|
crass (~> 1.0.2)
|
168
169
|
nokogiri (>= 1.5.9)
|
169
170
|
mail (2.7.1)
|
170
171
|
mini_mime (>= 0.1.1)
|
171
172
|
memoist (0.16.2)
|
172
173
|
method_source (1.0.0)
|
173
|
-
mimemagic (0.3.
|
174
|
+
mimemagic (0.3.5)
|
174
175
|
mini_mime (1.0.2)
|
175
|
-
mini_portile2 (2.
|
176
|
-
minitest (5.14.
|
177
|
-
nio4r (2.5.
|
178
|
-
nokogiri (1.
|
179
|
-
mini_portile2 (~> 2.
|
180
|
-
|
181
|
-
|
176
|
+
mini_portile2 (2.5.0)
|
177
|
+
minitest (5.14.3)
|
178
|
+
nio4r (2.5.5)
|
179
|
+
nokogiri (1.11.0)
|
180
|
+
mini_portile2 (~> 2.5.0)
|
181
|
+
racc (~> 1.4)
|
182
|
+
public_suffix (4.0.6)
|
183
|
+
puma (5.2.2)
|
182
184
|
nio4r (~> 2.0)
|
183
|
-
|
185
|
+
racc (1.5.2)
|
186
|
+
rack (2.2.3)
|
184
187
|
rack-test (1.1.0)
|
185
188
|
rack (>= 1.0, < 3)
|
186
189
|
rails-dom-testing (2.0.3)
|
@@ -188,41 +191,45 @@ GEM
|
|
188
191
|
nokogiri (>= 1.6)
|
189
192
|
rails-html-sanitizer (1.3.0)
|
190
193
|
loofah (~> 2.3)
|
191
|
-
railties (6.
|
192
|
-
actionpack (= 6.
|
193
|
-
activesupport (= 6.
|
194
|
+
railties (6.1.2.1)
|
195
|
+
actionpack (= 6.1.2.1)
|
196
|
+
activesupport (= 6.1.2.1)
|
194
197
|
method_source
|
195
198
|
rake (>= 0.8.7)
|
196
|
-
thor (
|
199
|
+
thor (~> 1.0)
|
197
200
|
rainbow (3.0.0)
|
198
|
-
rake (13.0.
|
199
|
-
recursive-open-struct (1.1.
|
200
|
-
regexp_parser (
|
201
|
-
|
202
|
-
|
203
|
-
rspec-
|
204
|
-
rspec-
|
205
|
-
|
206
|
-
|
207
|
-
|
201
|
+
rake (13.0.3)
|
202
|
+
recursive-open-struct (1.1.3)
|
203
|
+
regexp_parser (2.0.3)
|
204
|
+
rexml (3.2.4)
|
205
|
+
rspec (3.10.0)
|
206
|
+
rspec-core (~> 3.10.0)
|
207
|
+
rspec-expectations (~> 3.10.0)
|
208
|
+
rspec-mocks (~> 3.10.0)
|
209
|
+
rspec-core (3.10.0)
|
210
|
+
rspec-support (~> 3.10.0)
|
211
|
+
rspec-expectations (3.10.0)
|
208
212
|
diff-lcs (>= 1.2.0, < 2.0)
|
209
|
-
rspec-support (~> 3.
|
210
|
-
rspec-mocks (3.
|
213
|
+
rspec-support (~> 3.10.0)
|
214
|
+
rspec-mocks (3.10.0)
|
211
215
|
diff-lcs (>= 1.2.0, < 2.0)
|
212
|
-
rspec-support (~> 3.
|
213
|
-
rspec-support (3.
|
216
|
+
rspec-support (~> 3.10.0)
|
217
|
+
rspec-support (3.10.0)
|
214
218
|
rspec_junit_formatter (0.4.1)
|
215
219
|
rspec-core (>= 2, < 4, != 2.12.0)
|
220
|
+
serverlessgems (0.1.2)
|
221
|
+
gems
|
222
|
+
memoist
|
223
|
+
zeitwerk
|
216
224
|
shotgun (0.9.2)
|
217
225
|
rack (>= 1.0)
|
218
226
|
text-table (1.2.4)
|
219
|
-
thor (1.0
|
220
|
-
|
221
|
-
|
222
|
-
thread_safe (~> 0.1)
|
227
|
+
thor (1.1.0)
|
228
|
+
tzinfo (2.0.4)
|
229
|
+
concurrent-ruby (~> 1.0)
|
223
230
|
xpath (3.2.0)
|
224
231
|
nokogiri (~> 1.8)
|
225
|
-
zeitwerk (2.
|
232
|
+
zeitwerk (2.4.2)
|
226
233
|
|
227
234
|
PLATFORMS
|
228
235
|
ruby
|
@@ -233,6 +240,7 @@ DEPENDENCIES
|
|
233
240
|
dynomite
|
234
241
|
jets
|
235
242
|
launchy
|
243
|
+
nokogiri (~> 1.11.0)
|
236
244
|
puma
|
237
245
|
rack
|
238
246
|
rspec
|