apisonator 2.100.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/CHANGELOG.md +317 -0
- data/Gemfile +11 -0
- data/Gemfile.base +65 -0
- data/Gemfile.lock +319 -0
- data/Gemfile.on_prem +1 -0
- data/Gemfile.on_prem.lock +297 -0
- data/LICENSE +202 -0
- data/NOTICE +15 -0
- data/README.md +230 -0
- data/Rakefile +287 -0
- data/apisonator.gemspec +47 -0
- data/app/api/api.rb +13 -0
- data/app/api/internal/alert_limits.rb +32 -0
- data/app/api/internal/application_keys.rb +49 -0
- data/app/api/internal/application_referrer_filters.rb +43 -0
- data/app/api/internal/applications.rb +77 -0
- data/app/api/internal/errors.rb +54 -0
- data/app/api/internal/events.rb +42 -0
- data/app/api/internal/internal.rb +104 -0
- data/app/api/internal/metrics.rb +40 -0
- data/app/api/internal/service_tokens.rb +46 -0
- data/app/api/internal/services.rb +58 -0
- data/app/api/internal/stats.rb +42 -0
- data/app/api/internal/usagelimits.rb +62 -0
- data/app/api/internal/utilization.rb +23 -0
- data/bin/3scale_backend +223 -0
- data/bin/3scale_backend_worker +26 -0
- data/config.ru +4 -0
- data/config/puma.rb +192 -0
- data/config/schedule.rb +9 -0
- data/ext/mkrf_conf.rb +64 -0
- data/lib/3scale/backend.rb +67 -0
- data/lib/3scale/backend/alert_limit.rb +56 -0
- data/lib/3scale/backend/alerts.rb +137 -0
- data/lib/3scale/backend/analytics/kinesis.rb +3 -0
- data/lib/3scale/backend/analytics/kinesis/adapter.rb +180 -0
- data/lib/3scale/backend/analytics/kinesis/exporter.rb +86 -0
- data/lib/3scale/backend/analytics/kinesis/job.rb +135 -0
- data/lib/3scale/backend/analytics/redshift.rb +3 -0
- data/lib/3scale/backend/analytics/redshift/adapter.rb +367 -0
- data/lib/3scale/backend/analytics/redshift/importer.rb +83 -0
- data/lib/3scale/backend/analytics/redshift/job.rb +33 -0
- data/lib/3scale/backend/application.rb +330 -0
- data/lib/3scale/backend/application_events.rb +76 -0
- data/lib/3scale/backend/background_job.rb +65 -0
- data/lib/3scale/backend/configurable.rb +20 -0
- data/lib/3scale/backend/configuration.rb +151 -0
- data/lib/3scale/backend/configuration/loader.rb +42 -0
- data/lib/3scale/backend/constants.rb +19 -0
- data/lib/3scale/backend/cors.rb +84 -0
- data/lib/3scale/backend/distributed_lock.rb +67 -0
- data/lib/3scale/backend/environment.rb +21 -0
- data/lib/3scale/backend/error_storage.rb +52 -0
- data/lib/3scale/backend/errors.rb +343 -0
- data/lib/3scale/backend/event_storage.rb +120 -0
- data/lib/3scale/backend/experiment.rb +84 -0
- data/lib/3scale/backend/extensions.rb +5 -0
- data/lib/3scale/backend/extensions/array.rb +19 -0
- data/lib/3scale/backend/extensions/hash.rb +26 -0
- data/lib/3scale/backend/extensions/nil_class.rb +13 -0
- data/lib/3scale/backend/extensions/redis.rb +44 -0
- data/lib/3scale/backend/extensions/string.rb +13 -0
- data/lib/3scale/backend/extensions/time.rb +110 -0
- data/lib/3scale/backend/failed_jobs_scheduler.rb +141 -0
- data/lib/3scale/backend/job_fetcher.rb +122 -0
- data/lib/3scale/backend/listener.rb +728 -0
- data/lib/3scale/backend/listener_metrics.rb +99 -0
- data/lib/3scale/backend/logging.rb +48 -0
- data/lib/3scale/backend/logging/external.rb +44 -0
- data/lib/3scale/backend/logging/external/impl.rb +93 -0
- data/lib/3scale/backend/logging/external/impl/airbrake.rb +66 -0
- data/lib/3scale/backend/logging/external/impl/bugsnag.rb +69 -0
- data/lib/3scale/backend/logging/external/impl/default.rb +18 -0
- data/lib/3scale/backend/logging/external/resque.rb +57 -0
- data/lib/3scale/backend/logging/logger.rb +18 -0
- data/lib/3scale/backend/logging/middleware.rb +62 -0
- data/lib/3scale/backend/logging/middleware/json_writer.rb +21 -0
- data/lib/3scale/backend/logging/middleware/text_writer.rb +60 -0
- data/lib/3scale/backend/logging/middleware/writer.rb +143 -0
- data/lib/3scale/backend/logging/worker.rb +107 -0
- data/lib/3scale/backend/manifest.rb +80 -0
- data/lib/3scale/backend/memoizer.rb +277 -0
- data/lib/3scale/backend/metric.rb +275 -0
- data/lib/3scale/backend/metric/collection.rb +91 -0
- data/lib/3scale/backend/oauth.rb +4 -0
- data/lib/3scale/backend/oauth/token.rb +26 -0
- data/lib/3scale/backend/oauth/token_key.rb +30 -0
- data/lib/3scale/backend/oauth/token_storage.rb +313 -0
- data/lib/3scale/backend/oauth/token_value.rb +25 -0
- data/lib/3scale/backend/period.rb +3 -0
- data/lib/3scale/backend/period/boundary.rb +107 -0
- data/lib/3scale/backend/period/cache.rb +28 -0
- data/lib/3scale/backend/period/period.rb +402 -0
- data/lib/3scale/backend/queue_storage.rb +16 -0
- data/lib/3scale/backend/rack.rb +49 -0
- data/lib/3scale/backend/rack/exception_catcher.rb +136 -0
- data/lib/3scale/backend/rack/internal_error_catcher.rb +23 -0
- data/lib/3scale/backend/rack/prometheus.rb +19 -0
- data/lib/3scale/backend/saas.rb +6 -0
- data/lib/3scale/backend/saas_analytics.rb +4 -0
- data/lib/3scale/backend/server.rb +30 -0
- data/lib/3scale/backend/server/falcon.rb +52 -0
- data/lib/3scale/backend/server/puma.rb +71 -0
- data/lib/3scale/backend/service.rb +317 -0
- data/lib/3scale/backend/service_token.rb +97 -0
- data/lib/3scale/backend/stats.rb +8 -0
- data/lib/3scale/backend/stats/aggregator.rb +170 -0
- data/lib/3scale/backend/stats/aggregators/base.rb +72 -0
- data/lib/3scale/backend/stats/aggregators/response_code.rb +58 -0
- data/lib/3scale/backend/stats/aggregators/usage.rb +34 -0
- data/lib/3scale/backend/stats/bucket_reader.rb +135 -0
- data/lib/3scale/backend/stats/bucket_storage.rb +108 -0
- data/lib/3scale/backend/stats/cleaner.rb +195 -0
- data/lib/3scale/backend/stats/codes_commons.rb +14 -0
- data/lib/3scale/backend/stats/delete_job_def.rb +60 -0
- data/lib/3scale/backend/stats/key_generator.rb +73 -0
- data/lib/3scale/backend/stats/keys.rb +104 -0
- data/lib/3scale/backend/stats/partition_eraser_job.rb +58 -0
- data/lib/3scale/backend/stats/partition_generator_job.rb +46 -0
- data/lib/3scale/backend/stats/period_commons.rb +34 -0
- data/lib/3scale/backend/stats/stats_parser.rb +141 -0
- data/lib/3scale/backend/stats/storage.rb +113 -0
- data/lib/3scale/backend/statsd.rb +14 -0
- data/lib/3scale/backend/storable.rb +35 -0
- data/lib/3scale/backend/storage.rb +40 -0
- data/lib/3scale/backend/storage_async.rb +4 -0
- data/lib/3scale/backend/storage_async/async_redis.rb +21 -0
- data/lib/3scale/backend/storage_async/client.rb +205 -0
- data/lib/3scale/backend/storage_async/pipeline.rb +79 -0
- data/lib/3scale/backend/storage_async/resque_extensions.rb +30 -0
- data/lib/3scale/backend/storage_helpers.rb +278 -0
- data/lib/3scale/backend/storage_key_helpers.rb +9 -0
- data/lib/3scale/backend/storage_sync.rb +43 -0
- data/lib/3scale/backend/transaction.rb +62 -0
- data/lib/3scale/backend/transactor.rb +177 -0
- data/lib/3scale/backend/transactor/limit_headers.rb +54 -0
- data/lib/3scale/backend/transactor/notify_batcher.rb +139 -0
- data/lib/3scale/backend/transactor/notify_job.rb +47 -0
- data/lib/3scale/backend/transactor/process_job.rb +33 -0
- data/lib/3scale/backend/transactor/report_job.rb +84 -0
- data/lib/3scale/backend/transactor/status.rb +236 -0
- data/lib/3scale/backend/transactor/usage_report.rb +182 -0
- data/lib/3scale/backend/usage.rb +63 -0
- data/lib/3scale/backend/usage_limit.rb +115 -0
- data/lib/3scale/backend/use_cases/provider_key_change_use_case.rb +60 -0
- data/lib/3scale/backend/util.rb +17 -0
- data/lib/3scale/backend/validators.rb +26 -0
- data/lib/3scale/backend/validators/base.rb +36 -0
- data/lib/3scale/backend/validators/key.rb +17 -0
- data/lib/3scale/backend/validators/limits.rb +57 -0
- data/lib/3scale/backend/validators/oauth_key.rb +15 -0
- data/lib/3scale/backend/validators/oauth_setting.rb +15 -0
- data/lib/3scale/backend/validators/redirect_uri.rb +33 -0
- data/lib/3scale/backend/validators/referrer.rb +60 -0
- data/lib/3scale/backend/validators/service_state.rb +15 -0
- data/lib/3scale/backend/validators/state.rb +15 -0
- data/lib/3scale/backend/version.rb +5 -0
- data/lib/3scale/backend/views/oauth_access_tokens.builder +14 -0
- data/lib/3scale/backend/views/oauth_app_id_by_token.builder +4 -0
- data/lib/3scale/backend/worker.rb +87 -0
- data/lib/3scale/backend/worker_async.rb +88 -0
- data/lib/3scale/backend/worker_metrics.rb +44 -0
- data/lib/3scale/backend/worker_sync.rb +32 -0
- data/lib/3scale/bundler_shim.rb +17 -0
- data/lib/3scale/prometheus_server.rb +10 -0
- data/lib/3scale/tasks/connectivity.rake +41 -0
- data/lib/3scale/tasks/helpers.rb +3 -0
- data/lib/3scale/tasks/helpers/environment.rb +23 -0
- data/lib/3scale/tasks/stats.rake +131 -0
- data/lib/3scale/tasks/swagger.rake +46 -0
- data/licenses.xml +1215 -0
- metadata +227 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: '02689c2d07caa6e88eb1079c13064378fafa921ffb28e4da095cd8ad5fbac578'
|
4
|
+
data.tar.gz: 434d69fc1eb06088b1c4111bd41979567f1b00c22b149e5b4a7bdbda48c447a1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: edc21e4dedc90447e734e7afe0fe681127d9a4a88cd4ba3d9f9633b7eae3ee31488aa54b9cfaaeb6e28c158eb822c9679e325c4b6773130779fd63f5a6498fe9
|
7
|
+
data.tar.gz: 3267cfad364babfafb0c563feea99ecd0ff346b7a12d224b37178ff28e13a92fcce8a25372b1901f54a1bfcf6ecdeea0f9665ac2e30dcc6fe0fa3aff15bce468
|
data/CHANGELOG.md
ADDED
@@ -0,0 +1,317 @@
|
|
1
|
+
# Change Log
|
2
|
+
|
3
|
+
Notable changes to Apisonator will be tracked in this document.
|
4
|
+
|
5
|
+
## 2.100.0 - 2020-04-21
|
6
|
+
|
7
|
+
### Added
|
8
|
+
|
9
|
+
- The behavior of the referrer filters validator is now configurable
|
10
|
+
([#190](https://github.com/3scale/apisonator/pull/190)).
|
11
|
+
|
12
|
+
### Fixed
|
13
|
+
|
14
|
+
- When running the listeners in async mode, Apisonator no longer returns
|
15
|
+
exception messages to the caller
|
16
|
+
([#186](https://github.com/3scale/apisonator/pull/186)).
|
17
|
+
- Fixed a small concurrency issue when running the workers in async mode. It
|
18
|
+
only affected to some job run times that appear in the logs
|
19
|
+
([#191](https://github.com/3scale/apisonator/pull/191)).
|
20
|
+
|
21
|
+
### Removed
|
22
|
+
|
23
|
+
- Deleted some unused rake tasks for uploading swagger specs
|
24
|
+
([#193](https://github.com/3scale/apisonator/pull/193)).
|
25
|
+
|
26
|
+
## 2.99.0 - 2020-03-31
|
27
|
+
|
28
|
+
### Added
|
29
|
+
|
30
|
+
- Support for specifying transaction timestamps as UNIX epoch timestamps
|
31
|
+
([#167](https://github.com/3scale/apisonator/pull/167))
|
32
|
+
- Prometheus metrics for the listener
|
33
|
+
([#174](https://github.com/3scale/apisonator/pull/174),
|
34
|
+
[#178](https://github.com/3scale/apisonator/pull/178))
|
35
|
+
|
36
|
+
### Changed
|
37
|
+
|
38
|
+
- Updated yabeda-prometheus to v0.5.0
|
39
|
+
([#171](https://github.com/3scale/apisonator/pull/171))
|
40
|
+
- Updated async-container to v0.16.4
|
41
|
+
([#179](https://github.com/3scale/apisonator/pull/179))
|
42
|
+
- Stopped propagating unused log attributes unnecessarily
|
43
|
+
([#180](https://github.com/3scale/apisonator/pull/180))
|
44
|
+
- No longer sets a default of 1 for `CONFIG_NOTIFICATION_BATCH` in the
|
45
|
+
Dockerfiles ([#183](https://github.com/3scale/apisonator/pull/183))
|
46
|
+
|
47
|
+
### Removed
|
48
|
+
|
49
|
+
- The "latest transactions" functionality has been removed. It was no longer
|
50
|
+
needed by Porta ([#169](https://github.com/3scale/apisonator/pull/169))
|
51
|
+
|
52
|
+
## 2.98.1.1 - 2020-03-05
|
53
|
+
|
54
|
+
### Changed
|
55
|
+
|
56
|
+
- Updated Nokogiri to v1.10.9 [#163](https://github.com/3scale/apisonator/pull/163)
|
57
|
+
- Updated Rake to v13.0.1 [#162](https://github.com/3scale/apisonator/pull/162)
|
58
|
+
|
59
|
+
## 2.98.1 - 2020-02-18
|
60
|
+
|
61
|
+
### Fixed
|
62
|
+
|
63
|
+
- No longer crashes when the address of a sentinel cannot be resolved. It tries
|
64
|
+
to connect to another sentinel in the list instead.
|
65
|
+
[#158](https://github.com/3scale/apisonator/pull/158)
|
66
|
+
|
67
|
+
## 2.98.0 - 2020-02-04
|
68
|
+
|
69
|
+
### Added
|
70
|
+
|
71
|
+
- Listeners can now be deployed in async mode using Falcon. Still experimental
|
72
|
+
[#150](https://github.com/3scale/apisonator/pull/150)
|
73
|
+
- Added the delete stats task to the `backend-cron` executable
|
74
|
+
[#156](https://github.com/3scale/apisonator/pull/156)
|
75
|
+
|
76
|
+
### Fixed
|
77
|
+
|
78
|
+
- Fixed a minor bug in the stats deletion feature. The task no longer crashes
|
79
|
+
with invalid keys [#154](https://github.com/3scale/apisonator/pull/154)
|
80
|
+
- `backend-cron` no longer crashes when `RESCHEDULE_JOBS_FREQ` is set
|
81
|
+
[#155](https://github.com/3scale/apisonator/pull/155)
|
82
|
+
|
83
|
+
## 2.97.0 - 2020-01-13
|
84
|
+
|
85
|
+
### Added
|
86
|
+
|
87
|
+
- New "flat_usage" extension, useful for caching. [#142](https://github.com/3scale/apisonator/pull/142)
|
88
|
+
|
89
|
+
### Changed
|
90
|
+
|
91
|
+
- New approach to delete the stats of a service [#143](https://github.com/3scale/apisonator/pull/143)
|
92
|
+
- Updated Rack to 2.0.8 [#144](https://github.com/3scale/apisonator/pull/144)
|
93
|
+
|
94
|
+
## 2.96.2 - 2019-10-17
|
95
|
+
|
96
|
+
### Added
|
97
|
+
|
98
|
+
- Async params can be configured using environment variables [#138](https://github.com/3scale/apisonator/pull/138)
|
99
|
+
|
100
|
+
### Fixed
|
101
|
+
|
102
|
+
- Rake tasks now work when using the async redis client [#137](https://github.com/3scale/apisonator/pull/137)
|
103
|
+
|
104
|
+
## 2.96.1 - 2019-10-10
|
105
|
+
|
106
|
+
### Changed
|
107
|
+
|
108
|
+
- Updated async-redis to v0.4.1 [#132](https://github.com/3scale/apisonator/pull/132)
|
109
|
+
- Updated rubyzip to v2.0.0 [#133](https://github.com/3scale/apisonator/pull/133)
|
110
|
+
|
111
|
+
## 2.96.0 - 2019-09-30
|
112
|
+
|
113
|
+
### Added
|
114
|
+
|
115
|
+
- Support for non-blocking Redis calls using the redis-async gem. The feature is
|
116
|
+
opt-in and can be enabled only in workers for now. The feature is enabled with
|
117
|
+
`CONFIG_REDIS_ASYNC=true` [#96](https://github.com/3scale/apisonator/pull/96)
|
118
|
+
|
119
|
+
## 2.95.0 - 2019-09-25
|
120
|
+
|
121
|
+
### Changed
|
122
|
+
|
123
|
+
- Dropped support for end-users [#128](https://github.com/3scale/apisonator/pull/128)
|
124
|
+
|
125
|
+
## 2.94.2 - 2019-09-10
|
126
|
+
|
127
|
+
### Changed
|
128
|
+
|
129
|
+
- Perf optimization: `Usage.usage` is more efficient now because it does not create unnecessary instance periods [#126](https://github.com/3scale/apisonator/pull/126)
|
130
|
+
|
131
|
+
## 2.94.1 - 2019-09-09
|
132
|
+
|
133
|
+
### Changed
|
134
|
+
|
135
|
+
- Perf optimization: `Metric.ascendants` and `Metric.descendants` are memoized now [#124](https://github.com/3scale/apisonator/pull/124)
|
136
|
+
|
137
|
+
## 2.94.0 - 2019-09-04
|
138
|
+
|
139
|
+
### Added
|
140
|
+
|
141
|
+
- Prometheus metrics for workers [#111](https://github.com/3scale/apisonator/pull/111)
|
142
|
+
- Support for metric hierarchies with more than 2 levels [#119](https://github.com/3scale/apisonator/pull/119), [#121](https://github.com/3scale/apisonator/pull/121), [#122](https://github.com/3scale/apisonator/pull/122)
|
143
|
+
|
144
|
+
### Changed
|
145
|
+
|
146
|
+
- Updated Nokogiri to v1.10.4 [#118](https://github.com/3scale/apisonator/pull/118)
|
147
|
+
|
148
|
+
## 2.93.0 - 2019-07-31
|
149
|
+
|
150
|
+
### Changed
|
151
|
+
|
152
|
+
- Dropped support for Ruby < 2.4 [#109](https://github.com/3scale/apisonator/pull/109)
|
153
|
+
|
154
|
+
## 2.92.0 - 2019-06-12
|
155
|
+
|
156
|
+
### Added
|
157
|
+
|
158
|
+
- Support for password-protected Redis sentinels [#101](https://github.com/3scale/apisonator/pull/101)
|
159
|
+
- New limit header with the max value for the limit [#103](https://github.com/3scale/apisonator/pull/103)
|
160
|
+
- CI tests now run on Ruby 2.5 and Ruby 2.6 too [#84](https://github.com/3scale/apisonator/pull/84), [#97](https://github.com/3scale/apisonator/pull/97)
|
161
|
+
|
162
|
+
### Changed
|
163
|
+
|
164
|
+
- Updated redis gem to v4.1.1 [#99](https://github.com/3scale/apisonator/pull/99)
|
165
|
+
- Performance optimizations in some time methods [#80](https://github.com/3scale/apisonator/pull/80), [#81](https://github.com/3scale/apisonator/pull/81)
|
166
|
+
|
167
|
+
|
168
|
+
## 2.91.1 - 2019-03-08
|
169
|
+
|
170
|
+
### Changed
|
171
|
+
|
172
|
+
- The endpoint of the internal API to delete stats of a service has been disabled because of performance issues. It will be re-enabled once those are solved. [#87](https://github.com/3scale/apisonator/pull/87)
|
173
|
+
|
174
|
+
|
175
|
+
## 2.91.0 - 2019-03-05
|
176
|
+
|
177
|
+
### Added
|
178
|
+
|
179
|
+
- New endpoint in the internal API to delete the stats of a service. [#72](https://github.com/3scale/apisonator/pull/72), [#73](https://github.com/3scale/apisonator/pull/73), [#74](https://github.com/3scale/apisonator/pull/74), [#78](https://github.com/3scale/apisonator/pull/78), [#82](https://github.com/3scale/apisonator/pull/82).
|
180
|
+
|
181
|
+
### Changed
|
182
|
+
|
183
|
+
- Rakefile now accepts a list of files as an argument in the "bench" target [#79](https://github.com/3scale/apisonator/pull/79)
|
184
|
+
|
185
|
+
|
186
|
+
## 2.90.0 - 2019-02-20
|
187
|
+
|
188
|
+
### Added
|
189
|
+
|
190
|
+
- New endpoint in the internal API to delete the users of a service. [#38](https://github.com/3scale/apisonator/pull/38)
|
191
|
+
|
192
|
+
### Changed
|
193
|
+
|
194
|
+
- Updated rack to v2.0.6. [#63](https://github.com/3scale/apisonator/pull/63)
|
195
|
+
- Updated Nokogiri to v1.9.1. [#70](https://github.com/3scale/apisonator/pull/70)
|
196
|
+
|
197
|
+
### Fixed
|
198
|
+
|
199
|
+
- Small fixes and improvements in the Makefiles and Dockerfiles used to build the docker images and the dev environment. [#61](https://github.com/3scale/apisonator/pull/61), [#64](https://github.com/3scale/apisonator/pull/64), [#67](https://github.com/3scale/apisonator/pull/67), [#68](https://github.com/3scale/apisonator/pull/68), [#69](https://github.com/3scale/apisonator/pull/69).
|
200
|
+
|
201
|
+
|
202
|
+
## 2.89.0 - 2018-10-23
|
203
|
+
|
204
|
+
### Added
|
205
|
+
|
206
|
+
- Tasks to check redis storage and queue storage connection. [#58](https://github.com/3scale/apisonator/pull/58)
|
207
|
+
|
208
|
+
### Security
|
209
|
+
|
210
|
+
- Updated rubyzip to version 1.2.2 due to [CVE-2018-1000544](https://access.redhat.com/security/cve/cve-2018-1000544). [#57](https://github.com/3scale/apisonator/pull/57)
|
211
|
+
|
212
|
+
## 2.88.1 - 2018-10-10
|
213
|
+
|
214
|
+
### Fixed
|
215
|
+
|
216
|
+
- The Limit Headers now show the correct information when the request is
|
217
|
+
rate-limited. [#55](https://github.com/3scale/apisonator/pull/55)
|
218
|
+
|
219
|
+
## 2.88.0 - 2018-09-19
|
220
|
+
|
221
|
+
### Added
|
222
|
+
|
223
|
+
- Add documentation about utilization alerts. [#43](https://github.com/3scale/apisonator/pull/43)
|
224
|
+
- Set sentinel default port when no port is provided in Redis sentinel configuration. [#46](https://github.com/3scale/apisonator/pull/46)
|
225
|
+
|
226
|
+
### Changed
|
227
|
+
|
228
|
+
- When a Service is deleted delete all of its errors. [#44](https://github.com/3scale/apisonator/pull/44)
|
229
|
+
- When a Service is deleted all its transactions are deleted. [#45](https://github.com/3scale/apisonator/pull/45)
|
230
|
+
- Allow deletion of default service when it is the only existing one. [#51](https://github.com/3scale/apisonator/pull/51)
|
231
|
+
|
232
|
+
### Fixes
|
233
|
+
|
234
|
+
- Fix apisonator docker commands order in README. [#49](https://github.com/3scale/apisonator/pull/49)
|
235
|
+
|
236
|
+
## 2.87.2 - 2018-07-02
|
237
|
+
|
238
|
+
### Changed
|
239
|
+
|
240
|
+
- Allow defining Resque configuration without sentinels and defining non-localhost
|
241
|
+
Resque configuration for development and test environments. [#41](https://github.com/3scale/apisonator/pull/41)
|
242
|
+
|
243
|
+
## 2.87.1 - 2018-06-27
|
244
|
+
|
245
|
+
### Fixes
|
246
|
+
|
247
|
+
- Fix existing Services prior the 2.87.0 release not being set as active by
|
248
|
+
default [#39](https://github.com/3scale/apisonator/pull/39)
|
249
|
+
|
250
|
+
## 2.87.0 - 2018-06-21
|
251
|
+
|
252
|
+
### Added
|
253
|
+
|
254
|
+
- Services now can be active (default) or inactive. Calls on inactive services
|
255
|
+
always fail, with authorizations being denied. ([#34](https://github.com/3scale/apisonator/issues/34))
|
256
|
+
|
257
|
+
### Changed
|
258
|
+
|
259
|
+
- Small cleaups and refactor of transactor code. ([#26](https://github.com/3scale/apisonator/pull/26))
|
260
|
+
- Allow multiple job schedulers to be executed in parallel with multiple Resque
|
261
|
+
Redis servers. ([#29](https://github.com/3scale/apisonator/pull/29))
|
262
|
+
- Revamp README.md so that it is more oriented to usage and extract dev
|
263
|
+
instructions to DEVELOPMENT.md. ([#33](https://github.com/3scale/apisonator/pull/33))
|
264
|
+
|
265
|
+
### Fixes
|
266
|
+
|
267
|
+
- Fix a race condition in a spec that tests a race condition. ([#32](https://github.com/3scale/apisonator/pull/32))
|
268
|
+
|
269
|
+
### Security
|
270
|
+
|
271
|
+
- Updated Sinatra to version 2.0.3 due to [CVE-2018-11627](https://nvd.nist.gov/vuln/detail/CVE-2018-11627). ([#30](https://github.com/3scale/apisonator/pull/30))
|
272
|
+
- Updated Nokogiri to version 1.8.3 due to multiple libxml2 CVEs including
|
273
|
+
[CVE-2017-18258](https://nvd.nist.gov/vuln/detail/CVE-2017-18258).
|
274
|
+
This library is only used in the test suite. ([#28](https://github.com/3scale/apisonator/pull/28), [#37](https://github.com/3scale/apisonator/pull/37))
|
275
|
+
|
276
|
+
## 2.86.0 - 2018-05-10
|
277
|
+
|
278
|
+
### Added
|
279
|
+
|
280
|
+
- The metrics used for reporting transactions and authorizations to the master
|
281
|
+
account are now configurable under `master.metrics.transactions` and
|
282
|
+
`master.metrics.transactions_authorize`. ([#15](https://github.com/3scale/apisonator/pull/15))
|
283
|
+
- There is now a set of rake targets for selectively run tests and specs by type
|
284
|
+
(ie. integration, unit, etc) and by specific file. ([#11](https://github.com/3scale/apisonator/issues/11))
|
285
|
+
- The `make dev` command supports specifying an env variable `PORT` to expose
|
286
|
+
the listener in that port on the local machine. ([#8](https://github.com/3scale/apisonator/pull/8))
|
287
|
+
- Minor miscellaneous improvements. ([#7](https://github.com/3scale/apisonator/pull/7), [#9](https://github.com/3scale/apisonator/pull/9), [#12](https://github.com/3scale/apisonator/issues/12), [#16](https://github.com/3scale/apisonator/pull/16), [#17](https://github.com/3scale/apisonator/pull/17), [#20](https://github.com/3scale/apisonator/pull/20), [#23](https://github.com/3scale/apisonator/pull/23), [#24](https://github.com/3scale/apisonator/pull/24))
|
288
|
+
|
289
|
+
### Changed
|
290
|
+
|
291
|
+
- Added extra measures to avoid creating applications through the internal API
|
292
|
+
without mandatory attributes. ([#13](https://github.com/3scale/apisonator/pull/13))
|
293
|
+
- Some error conditions that produced empty or incorrect responses now behave
|
294
|
+
like other errors and output XML bodies. ([#14](https://github.com/3scale/apisonator/pull/14), [#19](https://github.com/3scale/apisonator/pull/19))
|
295
|
+
|
296
|
+
### Fixed
|
297
|
+
|
298
|
+
- Running make in systems with a non-GNU version of `time` should stop failing
|
299
|
+
because of using options supported only by GNU time. ([#5](https://github.com/3scale/apisonator/pull/5))
|
300
|
+
- Fixed a bug that made extra requests for stats with the inexistent `seconds`
|
301
|
+
period. ([#21](https://github.com/3scale/apisonator/pull/21))
|
302
|
+
- Fixed a bug in dealing with the `notification_batch` configuration that made
|
303
|
+
Apisonator enqueue NotifyJobs continuously when the setting was left
|
304
|
+
unspecified. ([#22](https://github.com/3scale/apisonator/pull/22))
|
305
|
+
|
306
|
+
## 2.85.0 - 2018-03-19
|
307
|
+
|
308
|
+
### Added
|
309
|
+
|
310
|
+
- Support for specifying Redis Sentinel roles in the configuration file. This
|
311
|
+
finished support for Redis HA through Sentinels. Use settings
|
312
|
+
`config.redis.role` and `config.queues.role` to specify either `:master` or
|
313
|
+
`:slave` _if_ you are using the Sentinel support.
|
314
|
+
- Set up the CI for the project in CircleCI with multiple Ruby versions.
|
315
|
+
- `make dev` will create a container for you to work in Apisonator sync'ing the
|
316
|
+
contents with the repository.
|
317
|
+
- `make test` will optionally build the CI image from scratch.
|
data/Gemfile
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
eval_gemfile(File.expand_path('../Gemfile.base', __FILE__))
|
2
|
+
|
3
|
+
platform :ruby do
|
4
|
+
gem 'pg', '= 0.20.0'
|
5
|
+
end
|
6
|
+
|
7
|
+
gem 'aws-sdk', '= 2.4.2'
|
8
|
+
gem 'whenever', '= 0.9.7'
|
9
|
+
gem 'scientist', '= 1.0.0'
|
10
|
+
gem 'statsd-ruby', '= 1.4.0'
|
11
|
+
gem 'airbrake', '= 4.3.1', require: nil
|
data/Gemfile.base
ADDED
@@ -0,0 +1,65 @@
|
|
1
|
+
source 'https://rubygems.org'
|
2
|
+
|
3
|
+
gemspec
|
4
|
+
|
5
|
+
# C-API only gems
|
6
|
+
#
|
7
|
+
# It is useful to tag these because not all Ruby implementations support these
|
8
|
+
# kinds of gems. In particular, gems here have NO alternative non C-API
|
9
|
+
# implementations (ie. pure Ruby, java, etc).
|
10
|
+
#
|
11
|
+
platform :ruby do
|
12
|
+
gem 'hiredis', '= 0.6.1'
|
13
|
+
gem 'yajl-ruby', '~> 1.3.1', require: 'yajl'
|
14
|
+
gem 'pry-byebug', '~> 3.5.1', groups: [:development]
|
15
|
+
end
|
16
|
+
|
17
|
+
group :test do
|
18
|
+
gem 'benchmark-ips', '~> 2.7.2'
|
19
|
+
gem 'mocha', '~> 1.3'
|
20
|
+
gem 'nokogiri', '~> 1.10.8'
|
21
|
+
gem 'pkg-config', '~> 1.1.7'
|
22
|
+
gem 'rack-test', '~> 0.8.2'
|
23
|
+
gem 'resque_unit', '~> 0.4.4', source: 'https://rubygems.org'
|
24
|
+
gem 'test-unit', '~> 3.2.6'
|
25
|
+
gem 'resque_spec', '~> 0.17.0'
|
26
|
+
gem 'timecop', '~> 0.9.1'
|
27
|
+
gem 'rspec', '~> 3.7.0', require: nil
|
28
|
+
gem 'geminabox', '~> 0.13.11', require: false
|
29
|
+
gem 'codeclimate-test-reporter', '~> 0.6.0', require: nil
|
30
|
+
gem 'async-rspec'
|
31
|
+
end
|
32
|
+
|
33
|
+
group :development do
|
34
|
+
gem 'sshkit'
|
35
|
+
gem 'source2swagger', git: 'https://github.com/3scale/source2swagger', branch: 'backend'
|
36
|
+
gem 'pry', '~> 0.11.3'
|
37
|
+
gem 'pry-doc', '~> 0.11.1'
|
38
|
+
gem 'license_finder', '~> 5'
|
39
|
+
end
|
40
|
+
|
41
|
+
group :development, :test do
|
42
|
+
gem 'rspec_api_documentation', '~> 5.0'
|
43
|
+
end
|
44
|
+
|
45
|
+
# Default server by platform
|
46
|
+
gem 'puma', git: 'https://github.com/3scale/puma', ref: 'b034371406690d3e6c2a9301c4a48bd721f3efc3'
|
47
|
+
# gems required by the runner
|
48
|
+
gem 'gli', '~> 2.16.1', require: nil
|
49
|
+
# Workers
|
50
|
+
gem 'daemons', '= 1.2.4'
|
51
|
+
|
52
|
+
# Production gems
|
53
|
+
gem 'rake', '~> 13.0'
|
54
|
+
gem 'builder', '= 3.2.3'
|
55
|
+
gem 'redis', '= 4.1.1'
|
56
|
+
# Use a patched resque to allow reusing their Airbrake Failure class
|
57
|
+
gem 'resque', git: 'https://github.com/3scale/resque', branch: '3scale'
|
58
|
+
gem 'rack', '~> 2.0.8'
|
59
|
+
gem 'sinatra', '~> 2.0.3'
|
60
|
+
gem 'sinatra-contrib', '~> 2.0.3'
|
61
|
+
# Optional external error logging services
|
62
|
+
gem 'bugsnag', '~> 6', require: nil
|
63
|
+
gem 'yabeda-prometheus', '~> 0.5.0'
|
64
|
+
gem 'async-redis', '~> 0.4.1'
|
65
|
+
gem 'falcon', '~> 0.35'
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,319 @@
|
|
1
|
+
GIT
|
2
|
+
remote: https://github.com/3scale/puma
|
3
|
+
revision: b034371406690d3e6c2a9301c4a48bd721f3efc3
|
4
|
+
ref: b034371406690d3e6c2a9301c4a48bd721f3efc3
|
5
|
+
specs:
|
6
|
+
puma (2.15.3)
|
7
|
+
|
8
|
+
GIT
|
9
|
+
remote: https://github.com/3scale/resque
|
10
|
+
revision: 88839e71756ea9b6edfc9426a0af71e94109c135
|
11
|
+
branch: 3scale
|
12
|
+
specs:
|
13
|
+
resque (1.27.4)
|
14
|
+
mono_logger (~> 1.0)
|
15
|
+
multi_json (~> 1.0)
|
16
|
+
redis-namespace (~> 1.3)
|
17
|
+
sinatra (>= 0.9.2)
|
18
|
+
vegas (~> 0.1.2)
|
19
|
+
|
20
|
+
GIT
|
21
|
+
remote: https://github.com/3scale/source2swagger
|
22
|
+
revision: 9a787007577fc58b5822b55720e977cc063057fd
|
23
|
+
branch: backend
|
24
|
+
specs:
|
25
|
+
source2swagger (0.0.2)
|
26
|
+
json
|
27
|
+
|
28
|
+
PATH
|
29
|
+
remote: .
|
30
|
+
specs:
|
31
|
+
apisonator (2.100.0)
|
32
|
+
|
33
|
+
GEM
|
34
|
+
remote: https://rubygems.org/
|
35
|
+
specs:
|
36
|
+
activesupport (5.1.4)
|
37
|
+
concurrent-ruby (~> 1.0, >= 1.0.2)
|
38
|
+
i18n (~> 0.7)
|
39
|
+
minitest (~> 5.1)
|
40
|
+
tzinfo (~> 1.1)
|
41
|
+
airbrake (4.3.1)
|
42
|
+
builder
|
43
|
+
multi_json
|
44
|
+
async (1.24.2)
|
45
|
+
console (~> 1.0)
|
46
|
+
nio4r (~> 2.3)
|
47
|
+
timers (~> 4.1)
|
48
|
+
async-container (0.16.4)
|
49
|
+
async (~> 1.0)
|
50
|
+
async-io (~> 1.26)
|
51
|
+
process-group
|
52
|
+
async-http (0.50.7)
|
53
|
+
async (~> 1.23)
|
54
|
+
async-io (~> 1.27.0)
|
55
|
+
async-pool (~> 0.2)
|
56
|
+
protocol-http (~> 0.15.1)
|
57
|
+
protocol-http1 (~> 0.10.0)
|
58
|
+
protocol-http2 (~> 0.11.0)
|
59
|
+
async-http-cache (0.1.5)
|
60
|
+
async-http
|
61
|
+
protocol-http (~> 0.14)
|
62
|
+
async-io (1.27.5)
|
63
|
+
async (~> 1.14)
|
64
|
+
async-pool (0.2.0)
|
65
|
+
async (~> 1.8)
|
66
|
+
async-redis (0.4.1)
|
67
|
+
async (~> 1.8)
|
68
|
+
async-io (~> 1.10)
|
69
|
+
protocol-redis (~> 0.2.0)
|
70
|
+
async-rspec (1.13.0)
|
71
|
+
rspec (~> 3.0)
|
72
|
+
rspec-files (~> 1.0)
|
73
|
+
rspec-memory (~> 1.0)
|
74
|
+
aws-sdk (2.4.2)
|
75
|
+
aws-sdk-resources (= 2.4.2)
|
76
|
+
aws-sdk-core (2.4.2)
|
77
|
+
jmespath (~> 1.0)
|
78
|
+
aws-sdk-resources (2.4.2)
|
79
|
+
aws-sdk-core (= 2.4.2)
|
80
|
+
backports (3.11.3)
|
81
|
+
benchmark-ips (2.7.2)
|
82
|
+
bugsnag (6.6.4)
|
83
|
+
concurrent-ruby (~> 1.0)
|
84
|
+
build-environment (1.13.0)
|
85
|
+
builder (3.2.3)
|
86
|
+
byebug (9.1.0)
|
87
|
+
chronic (0.10.2)
|
88
|
+
codeclimate-test-reporter (0.6.0)
|
89
|
+
simplecov (>= 0.7.1, < 1.0.0)
|
90
|
+
coderay (1.1.2)
|
91
|
+
concurrent-ruby (1.0.5)
|
92
|
+
console (1.8.2)
|
93
|
+
daemons (1.2.4)
|
94
|
+
diff-lcs (1.3)
|
95
|
+
docile (1.1.5)
|
96
|
+
dry-initializer (3.0.3)
|
97
|
+
falcon (0.35.6)
|
98
|
+
async (~> 1.13)
|
99
|
+
async-container (~> 0.16.0)
|
100
|
+
async-http (~> 0.50.4)
|
101
|
+
async-http-cache (~> 0.1.0)
|
102
|
+
async-io (~> 1.22)
|
103
|
+
build-environment (~> 1.13)
|
104
|
+
localhost (~> 1.1)
|
105
|
+
process-metrics (~> 0.1.0)
|
106
|
+
rack (>= 1.0)
|
107
|
+
samovar (~> 2.1)
|
108
|
+
faraday (0.13.1)
|
109
|
+
multipart-post (>= 1.2, < 3)
|
110
|
+
ffi (1.12.2)
|
111
|
+
geminabox (0.13.11)
|
112
|
+
builder
|
113
|
+
faraday
|
114
|
+
httpclient (>= 2.2.7)
|
115
|
+
nesty
|
116
|
+
reentrant_flock
|
117
|
+
sinatra (>= 1.2.7)
|
118
|
+
gli (2.16.1)
|
119
|
+
hiredis (0.6.1)
|
120
|
+
httpclient (2.8.3)
|
121
|
+
i18n (0.9.1)
|
122
|
+
concurrent-ruby (~> 1.0)
|
123
|
+
jmespath (1.3.1)
|
124
|
+
json (2.1.0)
|
125
|
+
license_finder (5.9.2)
|
126
|
+
bundler
|
127
|
+
rubyzip
|
128
|
+
thor
|
129
|
+
toml (= 0.2.0)
|
130
|
+
with_env (= 1.1.0)
|
131
|
+
xml-simple
|
132
|
+
localhost (1.1.6)
|
133
|
+
mapping (1.1.1)
|
134
|
+
metaclass (0.0.4)
|
135
|
+
method_source (0.9.0)
|
136
|
+
mini_portile2 (2.4.0)
|
137
|
+
minitest (5.10.3)
|
138
|
+
mocha (1.3.0)
|
139
|
+
metaclass (~> 0.0.1)
|
140
|
+
mono_logger (1.1.0)
|
141
|
+
multi_json (1.13.1)
|
142
|
+
multipart-post (2.0.0)
|
143
|
+
mustache (1.0.5)
|
144
|
+
mustermann (1.0.2)
|
145
|
+
nesty (1.0.2)
|
146
|
+
net-scp (1.2.1)
|
147
|
+
net-ssh (>= 2.6.5)
|
148
|
+
net-ssh (4.2.0)
|
149
|
+
nio4r (2.5.2)
|
150
|
+
nokogiri (1.10.9)
|
151
|
+
mini_portile2 (~> 2.4.0)
|
152
|
+
parslet (1.8.2)
|
153
|
+
pg (0.20.0)
|
154
|
+
pkg-config (1.1.9)
|
155
|
+
power_assert (1.1.1)
|
156
|
+
process-group (1.2.1)
|
157
|
+
process-terminal (~> 0.2.0)
|
158
|
+
process-metrics (0.1.1)
|
159
|
+
process-terminal (0.2.0)
|
160
|
+
ffi
|
161
|
+
prometheus-client (1.0.0)
|
162
|
+
protocol-hpack (1.4.2)
|
163
|
+
protocol-http (0.15.1)
|
164
|
+
protocol-http1 (0.10.3)
|
165
|
+
protocol-http (~> 0.15)
|
166
|
+
protocol-http2 (0.11.6)
|
167
|
+
protocol-hpack (~> 1.4)
|
168
|
+
protocol-http (~> 0.15)
|
169
|
+
protocol-redis (0.2.0)
|
170
|
+
pry (0.11.3)
|
171
|
+
coderay (~> 1.1.0)
|
172
|
+
method_source (~> 0.9.0)
|
173
|
+
pry-byebug (3.5.1)
|
174
|
+
byebug (~> 9.1)
|
175
|
+
pry (~> 0.10)
|
176
|
+
pry-doc (0.11.1)
|
177
|
+
pry (~> 0.9)
|
178
|
+
yard (~> 0.9)
|
179
|
+
rack (2.0.9)
|
180
|
+
rack-protection (2.0.3)
|
181
|
+
rack
|
182
|
+
rack-test (0.8.2)
|
183
|
+
rack (>= 1.0, < 3)
|
184
|
+
rake (13.0.1)
|
185
|
+
redis (4.1.1)
|
186
|
+
redis-namespace (1.6.0)
|
187
|
+
redis (>= 3.0.4)
|
188
|
+
reentrant_flock (0.1.1)
|
189
|
+
resque_spec (0.17.0)
|
190
|
+
resque (>= 1.19.0)
|
191
|
+
rspec-core (>= 3.0.0)
|
192
|
+
rspec-expectations (>= 3.0.0)
|
193
|
+
rspec-mocks (>= 3.0.0)
|
194
|
+
resque_unit (0.4.8)
|
195
|
+
json (>= 1.4.6)
|
196
|
+
rspec (3.7.0)
|
197
|
+
rspec-core (~> 3.7.0)
|
198
|
+
rspec-expectations (~> 3.7.0)
|
199
|
+
rspec-mocks (~> 3.7.0)
|
200
|
+
rspec-core (3.7.0)
|
201
|
+
rspec-support (~> 3.7.0)
|
202
|
+
rspec-expectations (3.7.0)
|
203
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
204
|
+
rspec-support (~> 3.7.0)
|
205
|
+
rspec-files (1.0.1)
|
206
|
+
rspec (~> 3.0)
|
207
|
+
rspec-memory (1.0.1)
|
208
|
+
rspec (~> 3.0)
|
209
|
+
rspec-mocks (3.7.0)
|
210
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
211
|
+
rspec-support (~> 3.7.0)
|
212
|
+
rspec-support (3.7.0)
|
213
|
+
rspec_api_documentation (5.1.0)
|
214
|
+
activesupport (>= 3.0.0)
|
215
|
+
mustache (~> 1.0, >= 0.99.4)
|
216
|
+
rspec (~> 3.0)
|
217
|
+
rubyzip (2.0.0)
|
218
|
+
samovar (2.1.4)
|
219
|
+
console (~> 1.0)
|
220
|
+
mapping (~> 1.0)
|
221
|
+
scientist (1.0.0)
|
222
|
+
simplecov (0.15.1)
|
223
|
+
docile (~> 1.1.0)
|
224
|
+
json (>= 1.8, < 3)
|
225
|
+
simplecov-html (~> 0.10.0)
|
226
|
+
simplecov-html (0.10.2)
|
227
|
+
sinatra (2.0.3)
|
228
|
+
mustermann (~> 1.0)
|
229
|
+
rack (~> 2.0)
|
230
|
+
rack-protection (= 2.0.3)
|
231
|
+
tilt (~> 2.0)
|
232
|
+
sinatra-contrib (2.0.3)
|
233
|
+
activesupport (>= 4.0.0)
|
234
|
+
backports (>= 2.8.2)
|
235
|
+
multi_json
|
236
|
+
mustermann (~> 1.0)
|
237
|
+
rack-protection (= 2.0.3)
|
238
|
+
sinatra (= 2.0.3)
|
239
|
+
tilt (>= 1.3, < 3)
|
240
|
+
sshkit (1.15.1)
|
241
|
+
net-scp (>= 1.1.2)
|
242
|
+
net-ssh (>= 2.8.0)
|
243
|
+
statsd-ruby (1.4.0)
|
244
|
+
test-unit (3.2.6)
|
245
|
+
power_assert
|
246
|
+
thor (0.20.3)
|
247
|
+
thread_safe (0.3.6)
|
248
|
+
tilt (2.0.8)
|
249
|
+
timecop (0.9.1)
|
250
|
+
timers (4.3.0)
|
251
|
+
toml (0.2.0)
|
252
|
+
parslet (~> 1.8.0)
|
253
|
+
tzinfo (1.2.4)
|
254
|
+
thread_safe (~> 0.1)
|
255
|
+
vegas (0.1.11)
|
256
|
+
rack (>= 1.0.0)
|
257
|
+
whenever (0.9.7)
|
258
|
+
chronic (>= 0.6.3)
|
259
|
+
with_env (1.1.0)
|
260
|
+
xml-simple (1.1.5)
|
261
|
+
yabeda (0.5.0)
|
262
|
+
concurrent-ruby
|
263
|
+
dry-initializer
|
264
|
+
yabeda-prometheus (0.5.0)
|
265
|
+
prometheus-client (~> 1.0)
|
266
|
+
yabeda (~> 0.5)
|
267
|
+
yajl-ruby (1.3.1)
|
268
|
+
yard (0.9.20)
|
269
|
+
|
270
|
+
PLATFORMS
|
271
|
+
ruby
|
272
|
+
|
273
|
+
DEPENDENCIES
|
274
|
+
airbrake (= 4.3.1)
|
275
|
+
apisonator!
|
276
|
+
async-redis (~> 0.4.1)
|
277
|
+
async-rspec
|
278
|
+
aws-sdk (= 2.4.2)
|
279
|
+
benchmark-ips (~> 2.7.2)
|
280
|
+
bugsnag (~> 6)
|
281
|
+
builder (= 3.2.3)
|
282
|
+
codeclimate-test-reporter (~> 0.6.0)
|
283
|
+
daemons (= 1.2.4)
|
284
|
+
falcon (~> 0.35)
|
285
|
+
geminabox (~> 0.13.11)
|
286
|
+
gli (~> 2.16.1)
|
287
|
+
hiredis (= 0.6.1)
|
288
|
+
license_finder (~> 5)
|
289
|
+
mocha (~> 1.3)
|
290
|
+
nokogiri (~> 1.10.8)
|
291
|
+
pg (= 0.20.0)
|
292
|
+
pkg-config (~> 1.1.7)
|
293
|
+
pry (~> 0.11.3)
|
294
|
+
pry-byebug (~> 3.5.1)
|
295
|
+
pry-doc (~> 0.11.1)
|
296
|
+
puma!
|
297
|
+
rack (~> 2.0.8)
|
298
|
+
rack-test (~> 0.8.2)
|
299
|
+
rake (~> 13.0)
|
300
|
+
redis (= 4.1.1)
|
301
|
+
resque!
|
302
|
+
resque_spec (~> 0.17.0)
|
303
|
+
resque_unit (~> 0.4.4)!
|
304
|
+
rspec (~> 3.7.0)
|
305
|
+
rspec_api_documentation (~> 5.0)
|
306
|
+
scientist (= 1.0.0)
|
307
|
+
sinatra (~> 2.0.3)
|
308
|
+
sinatra-contrib (~> 2.0.3)
|
309
|
+
source2swagger!
|
310
|
+
sshkit
|
311
|
+
statsd-ruby (= 1.4.0)
|
312
|
+
test-unit (~> 3.2.6)
|
313
|
+
timecop (~> 0.9.1)
|
314
|
+
whenever (= 0.9.7)
|
315
|
+
yabeda-prometheus (~> 0.5.0)
|
316
|
+
yajl-ruby (~> 1.3.1)
|
317
|
+
|
318
|
+
BUNDLED WITH
|
319
|
+
1.16.6
|