gitlab/Gemfile.lock

1662 lines
41 KiB
Plaintext
Raw Normal View History

PATH
remote: vendor/gems/mail-smtp_pool
specs:
mail-smtp_pool (0.1.0)
connection_pool (~> 2.0)
mail (~> 2.7)
2011-10-08 23:36:38 +02:00
GEM
remote: https://rubygems.org/
2011-10-08 23:36:38 +02:00
specs:
RedCloth (4.3.2)
acme-client (2.0.6)
faraday (>= 0.17, < 2.0.0)
actioncable (6.1.4.1)
actionpack (= 6.1.4.1)
activesupport (= 6.1.4.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
actionmailbox (6.1.4.1)
actionpack (= 6.1.4.1)
activejob (= 6.1.4.1)
activerecord (= 6.1.4.1)
activestorage (= 6.1.4.1)
activesupport (= 6.1.4.1)
mail (>= 2.7.1)
actionmailer (6.1.4.1)
actionpack (= 6.1.4.1)
actionview (= 6.1.4.1)
activejob (= 6.1.4.1)
activesupport (= 6.1.4.1)
mail (~> 2.5, >= 2.5.4)
rails-dom-testing (~> 2.0)
actionpack (6.1.4.1)
actionview (= 6.1.4.1)
activesupport (= 6.1.4.1)
2021-05-12 16:53:51 +02:00
rack (~> 2.0, >= 2.0.9)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
actiontext (6.1.4.1)
actionpack (= 6.1.4.1)
activerecord (= 6.1.4.1)
activestorage (= 6.1.4.1)
activesupport (= 6.1.4.1)
nokogiri (>= 1.8.5)
actionview (6.1.4.1)
activesupport (= 6.1.4.1)
2014-05-29 14:13:01 +02:00
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.1, >= 1.2.0)
activejob (6.1.4.1)
activesupport (= 6.1.4.1)
globalid (>= 0.3.6)
activemodel (6.1.4.1)
activesupport (= 6.1.4.1)
activerecord (6.1.4.1)
activemodel (= 6.1.4.1)
activesupport (= 6.1.4.1)
activerecord-explain-analyze (0.1.0)
activerecord (>= 4)
pg
activestorage (6.1.4.1)
actionpack (= 6.1.4.1)
activejob (= 6.1.4.1)
activerecord (= 6.1.4.1)
activesupport (= 6.1.4.1)
marcel (~> 1.0.0)
mini_mime (>= 1.1.0)
activesupport (6.1.4.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
2021-05-12 16:53:51 +02:00
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
zeitwerk (~> 2.3)
acts-as-taggable-on (7.0.0)
activerecord (>= 5.0, < 6.2)
addressable (2.8.0)
public_suffix (>= 2.0.2, < 5.0)
aes_key_wrap (1.1.0)
akismet (3.0.0)
android_key_attestation (0.3.0)
apollo_upload_server (2.1.0)
actionpack (>= 4.2)
graphql (>= 1.8)
asana (0.10.3)
faraday (~> 1.0)
faraday_middleware (~> 1.0)
2015-11-25 23:03:30 +01:00
faraday_middleware-multi_json (~> 0.0)
oauth2 (~> 1.4)
asciidoctor (2.0.15)
asciidoctor-include-ext (0.3.1)
asciidoctor (>= 1.5.6, < 3.0.0)
asciidoctor-kroki (0.5.0)
2020-11-06 13:22:36 +01:00
asciidoctor (~> 2.0)
asciidoctor-plantuml (0.0.12)
asciidoctor (>= 1.5.6, < 3.0.0)
ast (2.4.2)
atlassian-jwt (0.2.0)
jwt (~> 2.1.0)
attr_encrypted (3.1.0)
encryptor (~> 3.0.0)
2018-03-19 15:36:38 +01:00
attr_required (1.0.1)
2021-07-08 18:26:21 +02:00
autoprefixer-rails (10.2.5.1)
execjs (> 0)
awesome_print (1.9.2)
awrence (1.1.1)
aws-eventstream (1.1.0)
aws-partitions (1.345.0)
aws-sdk-cloudformation (1.41.0)
aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
aws-sdk-core (3.104.3)
aws-eventstream (~> 1, >= 1.0.2)
aws-partitions (~> 1, >= 1.239.0)
aws-sigv4 (~> 1.1)
jmespath (~> 1.0)
aws-sdk-kms (1.36.0)
aws-sdk-core (~> 3, >= 3.99.0)
aws-sigv4 (~> 1.1)
aws-sdk-s3 (1.75.0)
aws-sdk-core (~> 3, >= 3.104.1)
aws-sdk-kms (~> 1)
aws-sigv4 (~> 1.1)
aws-sigv4 (1.2.1)
aws-eventstream (~> 1, >= 1.0.2)
azure-storage-blob (2.0.1)
azure-storage-common (~> 2.0)
nokogiri (~> 1.11.0.rc2)
azure-storage-common (2.0.2)
faraday (~> 1.0)
faraday_middleware (~> 1.0.0.rc1)
net-http-persistent (~> 4.0)
nokogiri (~> 1.11.0.rc2)
babosa (1.0.4)
2021-06-15 09:29:04 +02:00
backport (1.2.0)
2016-05-02 13:29:17 +02:00
base32 (0.3.2)
batch-loader (2.0.1)
bcrypt (3.1.16)
2017-07-19 15:39:33 +02:00
bcrypt_pbkdf (1.0.0)
benchmark (0.1.1)
benchmark-ips (2.3.0)
2019-05-27 10:30:17 +02:00
benchmark-memory (0.1.2)
memory_profiler (~> 0.9)
2021-04-08 13:29:22 +02:00
better_errors (2.9.1)
coderay (>= 1.0.0)
erubi (>= 1.0.0)
2017-03-25 17:19:22 +01:00
rack (>= 0.9.0)
bindata (2.4.10)
binding_ninja (0.2.3)
bootsnap (1.9.1)
msgpack (~> 1.0)
bootstrap_form (4.2.0)
actionpack (>= 5.0)
activemodel (>= 5.0)
2020-07-13 12:41:30 +02:00
browser (4.2.0)
Wrap requests in an ApplicationContext This provides context to all requests made to Rails controllers or grape endpoints. Doing this starts a new `Labkit::Context`, to which we can provide a namespace, project and user. We're currently setting the following values: - Web requests: In the ApplicationController we wrap the entire request in a `with_context`. - user: based on the `auth_user` if there is one - project: We try to read the @project instance variable of the controller. - namespace: We try to read the @group instance variable of the controller. If there was none, but the project was set, we'll use that path to set the namespace - API requests: The application context is pushed in a before block setting the following values: - user: to `current_user` if there is one - project: to `@project` - namespace: to `@group` - Internal API requests: the application context is pushed in a before block: - user: When to the user set in `Api::Support::GitAccessActor` - project: to @project if it was available The 3 supported attributes for a context are read lazily when required. This also replaces the existing correlation middlewares with the new Labkit::Context middlewares. The rack middleware wraps each rack request in an overarching context that adds the correlation id. The context is cleaned up after the request, so we're sure all child contexts are cleaned up as well. The sidekiq client middleware will write the context into the job that goes into redis when a job is scheduled. The sidekiq server middleware will then re-instantiate this context so the job gets executed with the same context that was alive when it was scheduled. This means that any new job scheduled from sidekiq would also have this context.
2019-12-03 17:18:20 +01:00
builder (3.2.4)
bullet (6.1.3)
activesupport (>= 3.0.0)
uniform_notifier (~> 1.11)
bundler-audit (0.7.0.1)
2020-02-23 09:07:02 +01:00
bundler (>= 1.2.0, < 3)
thor (>= 0.18, < 2)
byebug (11.1.3)
capybara (3.35.3)
2016-03-14 06:52:19 +01:00
addressable
mini_mime (>= 0.1.3)
nokogiri (~> 1.8)
rack (>= 1.6.0)
rack-test (>= 0.6.3)
regexp_parser (>= 1.5, < 3.0)
xpath (~> 3.2)
capybara-screenshot (1.0.22)
capybara (>= 1.0, < 4)
2015-04-25 20:10:09 +02:00
launchy
2021-04-08 18:46:29 +02:00
carrierwave (1.3.2)
2017-05-01 22:15:16 +02:00
activemodel (>= 4.0.0)
activesupport (>= 4.0.0)
2016-03-04 02:32:18 +01:00
mime-types (>= 1.16)
2021-04-08 18:46:29 +02:00
ssrf_filter (~> 1.0)
cbor (0.5.9.6)
character_set (1.4.1)
sorted_set (~> 1.0)
charlock_holmes (0.7.7)
chef-config (16.10.17)
addressable
chef-utils (= 16.10.17)
fuzzyurl
mixlib-config (>= 2.2.12, < 4.0)
mixlib-shellout (>= 2.0, < 4.0)
tomlrb (~> 1.2)
chef-utils (16.10.17)
2019-11-28 16:19:37 +01:00
childprocess (3.0.0)
2015-11-25 17:18:44 +01:00
chunky_png (1.3.5)
citrus (3.0.2)
claide (1.0.3)
claide-plugins (0.9.2)
cork
nap
open4 (~> 1.3)
coderay (1.1.3)
colored2 (3.1.2)
commonmarker (0.23.2)
concurrent-ruby (1.1.9)
connection_pool (2.2.2)
contracts (0.11.0)
cork (0.3.0)
colored2 (~> 3.1)
cose (1.0.0)
cbor (~> 0.5.9)
openssl-signature_algorithm (~> 0.4.0)
countries (3.0.0)
i18n_data (~> 0.8.0)
sixarm_ruby_unaccent (~> 1.1)
unicode_utils (~> 1.4)
Storing of application metrics in InfluxDB This adds the ability to write application metrics (e.g. SQL timings) to InfluxDB. These metrics can in turn be visualized using Grafana, or really anything else that can read from InfluxDB. These metrics can be used to track application performance over time, between different Ruby versions, different GitLab versions, etc. == Transaction Metrics Currently the following is tracked on a per transaction basis (a transaction is a Rails request or a single Sidekiq job): * Timings per query along with the raw (obfuscated) SQL and information about what file the query originated from. * Timings per view along with the path of the view and information about what file triggered the rendering process. * The duration of a request itself along with the controller/worker class and method name. * The duration of any instrumented method calls (more below). == Sampled Metrics Certain metrics can't be directly associated with a transaction. For example, a process' total memory usage is unrelated to any running transactions. While a transaction can result in the memory usage going up there's no accurate way to determine what transaction is to blame, this becomes especially problematic in multi-threaded environments. To solve this problem there's a separate thread that takes samples at a fixed interval. This thread (using the class Gitlab::Metrics::Sampler) currently tracks the following: * The process' total memory usage. * The number of file descriptors opened by the process. * The amount of Ruby objects (using ObjectSpace.count_objects). * GC statistics such as timings, heap slots, etc. The default/current interval is 15 seconds, any smaller interval might put too much pressure on InfluxDB (especially when running dozens of processes). == Method Instrumentation While currently not yet used methods can be instrumented to track how long they take to run. Unlike the likes of New Relic this doesn't require modifying the source code (e.g. including modules), it all happens from the outside. For example, to track `User.by_login` we'd add the following code somewhere in an initializer: Gitlab::Metrics::Instrumentation. instrument_method(User, :by_login) to instead instrument an instance method: Gitlab::Metrics::Instrumentation. instrument_instance_method(User, :save) Instrumentation for either all public model methods or a few crucial ones will be added in the near future, I simply haven't gotten to doing so just yet. == Configuration By default metrics are disabled. This means users don't have to bother setting anything up if they don't want to. Metrics can be enabled by editing one's gitlab.yml configuration file (see config/gitlab.yml.example for example settings). == Writing Data To InfluxDB Because InfluxDB is still a fairly young product I expect the worse. Data loss, unexpected reboots, the database not responding, you name it. Because of this data is _not_ written to InfluxDB directly, instead it's queued and processed by Sidekiq. This ensures that users won't notice anything when InfluxDB is giving trouble. The metrics worker can be started in a standalone manner as following: bundle exec sidekiq -q metrics The corresponding class is called MetricsWorker.
2015-12-09 16:45:51 +01:00
crack (0.4.3)
safe_yaml (~> 1.0.0)
crass (1.0.6)
2015-11-24 21:42:42 +01:00
creole (0.5.0)
crystalball (0.7.0)
git
css_parser (1.7.0)
2016-01-28 17:54:13 +01:00
addressable
2021-02-08 20:15:31 +01:00
daemons (1.3.1)
danger (8.4.1)
claide (~> 1.0)
claide-plugins (>= 0.9.2)
colored2 (~> 3.1)
cork (~> 0.1)
faraday (>= 0.9.0, < 2.0)
faraday-http-cache (~> 2.0)
git (~> 1.7)
kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.0)
no_proxy_fix
octokit (~> 4.7)
terminal-table (>= 1, < 4)
danger-gitlab (8.0.0)
danger
gitlab (~> 4.2, >= 4.2.0)
database_cleaner (1.7.0)
debugger-ruby_core_source (1.3.8)
deckar01-task_list (2.3.1)
html-pipeline
declarative (0.0.20)
declarative-option (0.1.0)
2021-11-05 13:02:38 +01:00
declarative_policy (1.1.0)
default_value_for (3.4.0)
activerecord (>= 3.2.0, < 7.0)
deprecation_toolkit (1.5.1)
activesupport (>= 4.2)
derailed_benchmarks (1.8.1)
benchmark-ips (~> 2)
get_process_mem (~> 0)
heapy (~> 0)
memory_profiler (~> 0)
mini_histogram (>= 0.2.1)
rack (>= 1)
rake (> 10, < 14)
ruby-statistics (>= 2.1)
thor (>= 0.19, < 2)
2018-05-02 10:08:16 +02:00
device_detector (1.0.0)
devise (4.7.3)
2014-07-09 13:17:45 +02:00
bcrypt (~> 3.0)
2012-07-06 08:50:24 +02:00
orm_adapter (~> 0.1)
railties (>= 4.1.0)
2015-09-20 03:12:32 +02:00
responders
warden (~> 1.2.3)
devise-two-factor (4.0.0)
activesupport (< 6.2)
attr_encrypted (>= 1.3, < 4, != 2)
devise (~> 4.0)
railties (< 6.2)
rotp (~> 6.0)
diff-lcs (1.4.4)
diff_match_patch (0.1.0)
2020-02-23 09:52:25 +01:00
diffy (3.3.0)
discordrb-webhooks (3.4.2)
rest-client (>= 2.0.0)
2020-03-02 15:58:08 +01:00
docile (1.3.2)
2020-10-11 08:45:52 +02:00
domain_name (0.5.20190701)
unf (>= 0.0.5, < 1.0.0)
doorkeeper (5.5.0.rc2)
railties (>= 5)
doorkeeper-openid_connect (1.7.5)
doorkeeper (>= 5.2, < 5.5)
json-jwt (>= 1.11.0)
dotenv (2.7.6)
dry-configurable (0.12.0)
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
concurrent-ruby (~> 1.0)
dry-core (~> 0.5, >= 0.5.0)
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
dry-container (0.7.2)
concurrent-ruby (~> 1.0)
dry-configurable (~> 0.1, >= 0.1.3)
dry-core (0.5.0)
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
concurrent-ruby (~> 1.0)
dry-equalizer (0.3.0)
dry-inflector (0.2.0)
dry-logic (1.1.0)
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
concurrent-ruby (~> 1.0)
dry-core (~> 0.5, >= 0.5)
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
dry-types (1.4.0)
concurrent-ruby (~> 1.0)
dry-container (~> 0.3)
dry-core (~> 0.4, >= 0.4.4)
dry-equalizer (~> 0.3)
dry-inflector (~> 0.1, >= 0.1.2)
dry-logic (~> 1.0, >= 1.0.2)
e2mmap (0.1.0)
ecma-re-validator (0.3.0)
regexp_parser (~> 2.0)
ed25519 (1.2.4)
elasticsearch (6.8.2)
elasticsearch-api (= 6.8.2)
elasticsearch-transport (= 6.8.2)
elasticsearch-api (6.8.2)
2016-01-17 19:09:13 +01:00
multi_json
elasticsearch-model (6.1.1)
2016-01-17 19:09:13 +01:00
activesupport (> 3)
elasticsearch (~> 6)
2016-01-17 19:09:13 +01:00
hashie
elasticsearch-rails (6.1.1)
elasticsearch-transport (6.8.2)
faraday (~> 1)
2016-01-17 19:09:13 +01:00
multi_json
email_reply_trimmer (0.1.6)
2018-05-26 16:21:20 +02:00
email_spec (2.2.0)
htmlentities (~> 4.3.3)
2012-11-18 21:51:49 +01:00
launchy (~> 2.1)
2018-05-26 16:21:20 +02:00
mail (~> 2.7)
encryptor (3.0.0)
2019-10-01 15:08:53 +02:00
erubi (1.9.0)
escape_utils (1.2.1)
et-orbi (1.2.1)
tzinfo
eventmachine (1.2.7)
2020-01-17 15:03:38 +01:00
excon (0.71.1)
2021-07-08 18:26:21 +02:00
execjs (2.8.1)
2014-07-28 11:47:27 +02:00
expression_parser (0.9.0)
extended-markdown-filter (0.6.0)
html-pipeline (~> 2.0)
factory_bot (6.2.0)
activesupport (>= 5.0.0)
factory_bot_rails (6.2.0)
factory_bot (~> 6.2.0)
railties (>= 5.0.0)
2021-06-14 22:49:02 +02:00
faraday (1.4.2)
faraday-em_http (~> 1.0)
faraday-em_synchrony (~> 1.0)
faraday-excon (~> 1.1)
faraday-net_http (~> 1.0)
2021-06-14 22:49:02 +02:00
faraday-net_http_persistent (~> 1.1)
2015-10-08 03:54:15 +02:00
multipart-post (>= 1.2, < 3)
2021-06-14 22:49:02 +02:00
ruby2_keywords (>= 0.0.4)
faraday-cookie_jar (0.0.7)
faraday (>= 0.8.0)
http-cookie (~> 1.0.0)
2021-06-14 22:49:02 +02:00
faraday-em_http (1.0.0)
faraday-em_synchrony (1.0.0)
faraday-excon (1.1.0)
faraday-http-cache (2.2.0)
faraday (>= 0.8)
faraday-net_http (1.0.1)
2021-06-14 22:49:02 +02:00
faraday-net_http_persistent (1.1.0)
faraday_middleware (1.0.0)
faraday (~> 1.0)
faraday_middleware-aws-sigv4 (0.3.0)
aws-sigv4 (~> 1.0)
faraday (>= 0.15)
2015-11-25 23:03:30 +01:00
faraday_middleware-multi_json (0.0.6)
faraday_middleware
multi_json
fast_blank (1.0.0)
fast_gettext (2.1.0)
ffaker (2.10.0)
ffi (1.15.3)
ffi-compiler (1.0.1)
ffi (>= 1.0.0)
rake
ffi-yajl (2.3.4)
libyajl2 (~> 1.2)
flipper (0.21.0)
flipper-active_record (0.21.0)
activerecord (>= 5.0, < 7)
flipper (~> 0.21.0)
flipper-active_support_cache_store (0.21.0)
activesupport (>= 5.0, < 7)
flipper (~> 0.21.0)
2015-11-25 17:18:44 +01:00
flowdock (0.7.1)
httparty (~> 0.7)
multi_json
2019-03-01 08:35:50 +01:00
fog-aliyun (0.3.3)
fog-core
fog-json
ipaddress (~> 0.8)
xml-simple (~> 1.1)
fog-aws (3.12.0)
fog-core (~> 2.1)
fog-json (~> 1.1)
2016-01-11 17:41:11 +01:00
fog-xml (~> 0.1)
ipaddress (~> 0.8)
fog-core (2.1.0)
2013-07-08 08:47:31 +02:00
builder
2018-03-05 21:04:01 +01:00
excon (~> 0.58)
formatador (~> 0.2)
mime-types
fog-google (1.15.0)
fog-core (<= 2.1.0)
fog-json (~> 1.2)
fog-xml (~> 0.1.0)
google-api-client (>= 0.44.2, < 0.51)
google-cloud-env (~> 1.2)
fog-json (1.2.0)
fog-core
multi_json (~> 1.10)
fog-local (0.6.0)
fog-core (>= 1.27, < 3.0)
fog-openstack (1.0.8)
fog-core (~> 2.1)
fog-json (>= 1.0)
ipaddress (>= 0.8)
fog-rackspace (0.1.1)
fog-core (>= 1.35)
fog-json (>= 1.0)
fog-xml (>= 0.1)
ipaddress (>= 0.8)
2017-05-01 22:15:16 +02:00
fog-xml (0.1.3)
fog-core
2017-05-01 22:15:16 +02:00
nokogiri (>= 1.5.11, < 2.0.0)
formatador (0.2.5)
fugit (1.2.1)
et-orbi (~> 1.1, >= 1.1.8)
2018-12-20 08:23:25 +01:00
raabro (~> 1.1)
2017-08-03 22:38:29 +02:00
fuubar (2.2.0)
rspec-core (~> 3.0)
2015-06-26 03:43:24 +02:00
ruby-progressbar (~> 1.4)
fuzzyurl (0.9.0)
gemoji (3.0.1)
get_process_mem (0.2.5)
ffi (~> 1.0)
gettext (3.3.6)
2017-04-13 05:41:46 +02:00
locale (>= 2.0.5)
text (>= 1.3.0)
gettext_i18n_rails (1.8.0)
fast_gettext (>= 0.9.0)
gettext_i18n_rails_js (1.3.0)
gettext (>= 3.0.2)
gettext_i18n_rails (>= 0.7.1)
po_to_json (>= 1.0.0)
rails (>= 3.2.0)
git (1.7.0)
rchardet (~> 1.8)
gitaly (14.4.0.pre.rc43)
grpc (~> 1.0)
github-markup (1.7.0)
gitlab (4.16.1)
httparty (~> 0.14, >= 0.14.0)
terminal-table (~> 1.5, >= 1.5.1)
gitlab-chronic (0.10.5)
numerizer (~> 0.2)
gitlab-dangerfiles (2.5.0)
danger (>= 8.3.1)
danger-gitlab (>= 8.0.0)
gitlab-experiment (0.6.4)
activesupport (>= 3.0)
2021-05-05 00:24:15 +02:00
request_store (>= 1.0)
scientist (~> 1.6, >= 1.6.0)
gitlab-fog-azure-rm (1.2.0)
azure-storage-blob (~> 2.0)
azure-storage-common (~> 2.0)
fog-core (= 2.1.0)
fog-json (~> 1.2.0)
mime-types
ms_rest_azure (~> 0.12.0)
gitlab-labkit (0.21.1)
actionpack (>= 5.0.0, < 7.0.0)
activesupport (>= 5.0.0, < 7.0.0)
grpc (~> 1.30.2)
jaeger-client (~> 1.1)
opentracing (~> 0.4)
pg_query (~> 2.1)
redis (> 3.0.0, < 5.0.0)
gitlab-license (2.0.0)
gitlab-mail_room (0.0.9)
gitlab-markup (1.7.1)
gitlab-net-dns (0.9.1)
gitlab-omniauth-openid-connect (0.8.0)
addressable (~> 2.7)
omniauth (~> 1.9)
openid_connect (~> 1.2)
gitlab-sidekiq-fetcher (0.8.0)
sidekiq (~> 6.1)
gitlab-styles (6.4.0)
rubocop (~> 0.91, >= 0.91.1)
rubocop-gitlab-security (~> 0.1.1)
rubocop-performance (~> 1.9.2)
rubocop-rails (~> 2.9)
rubocop-rspec (~> 1.44)
gitlab_chronic_duration (0.10.6.2)
numerizer (~> 0.2)
gitlab_omniauth-ldap (2.1.1)
2017-07-24 20:27:29 +02:00
net-ldap (~> 0.16)
omniauth (~> 1.3)
pyu-ruby-sasl (>= 0.0.3.3, < 0.1)
rubyntlm (~> 0.5)
globalid (0.5.2)
activesupport (>= 5.0)
gon (6.4.0)
actionpack (>= 3.0.20)
i18n (>= 0.7)
2015-11-24 21:36:36 +01:00
multi_json
request_store (>= 1.0)
google-api-client (0.50.0)
addressable (~> 2.5, >= 2.5.1)
googleauth (~> 0.9)
httpclient (>= 2.8.1, < 3.0)
mini_mime (~> 1.0)
representable (~> 3.0)
retriable (>= 2.0, < 4.0)
rexml
signet (~> 0.12)
google-cloud-env (1.5.0)
faraday (>= 0.17.3, < 2.0)
google-protobuf (3.17.3)
googleapis-common-protos-types (1.1.0)
google-protobuf (~> 3.14)
googleauth (0.14.0)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.4, < 3.0)
memoist (~> 0.16)
multi_json (~> 1.11)
2018-10-15 06:09:27 +02:00
os (>= 0.9, < 2.0)
signet (~> 0.14)
gpgme (2.0.20)
mini_portile2 (~> 2.3)
grape (1.5.2)
2012-11-18 21:51:49 +01:00
activesupport
builder
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
dry-types (>= 1.1)
mustermann-grape (~> 1.0.0)
2013-05-01 12:29:29 +02:00
rack (>= 1.3.0)
2012-11-18 21:51:49 +01:00
rack-accept
grape-entity (0.10.0)
activesupport (>= 3.0.0)
multi_json (>= 1.3.2)
grape-path-helpers (1.7.0)
activesupport
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
grape (~> 1.3)
rake (> 12)
ruby2_keywords (~> 0.0.2)
grape_logging (1.8.3)
grape
rack
graphiql-rails (1.4.10)
2017-08-16 15:04:41 +02:00
railties
sprockets-rails
graphlient (0.4.0)
faraday (>= 1.0)
faraday_middleware
graphql-client
graphql (1.11.8)
graphql-client (0.16.0)
activesupport (>= 3.0)
graphql (~> 1.8)
graphql-docs (1.6.0)
commonmarker (~> 0.16)
escape_utils (~> 1.2)
extended-markdown-filter (~> 0.4)
gemoji (~> 3.0)
graphql (~> 1.6)
html-pipeline (~> 2.8)
sass (~> 3.4)
grpc (1.30.2)
google-protobuf (~> 3.12)
googleapis-common-protos-types (~> 1.0)
2016-06-27 18:44:15 +02:00
gssapi (1.2.0)
ffi (>= 1.0.1)
guard (2.16.2)
formatador (>= 0.2.4)
listen (>= 2.7, < 4.0)
lumberjack (>= 1.0.12, < 2.0)
nenv (~> 0.1)
notiffany (~> 0.0)
pry (>= 0.9.12)
shellany (~> 0.0)
thor (>= 0.18.1)
guard-compat (1.2.1)
guard-rspec (4.7.3)
guard (~> 2.1)
guard-compat (~> 1.1)
rspec (>= 2.99.0, < 4.0)
haml (5.1.2)
temple (>= 0.8.0)
tilt
haml_lint (0.36.0)
haml (>= 4.0, < 5.3)
parallel (~> 1.10)
2017-08-04 10:54:03 +02:00
rainbow
rubocop (>= 0.50.0)
sysexits (~> 1.1)
hamlit (2.15.0)
temple (>= 0.8.2)
thor
2013-03-01 14:09:11 +01:00
tilt
hana (1.3.7)
hangouts-chat (0.0.5)
hashdiff (1.0.1)
hashie (4.1.0)
hashie-forbidden_attributes (0.1.1)
hashie (>= 3.0)
health_check (3.0.0)
railties (>= 5.0)
heapy (0.2.0)
thor
html-pipeline (2.13.2)
activesupport (>= 2)
2018-04-02 13:26:24 +02:00
nokogiri (>= 1.4)
html2text (0.2.0)
nokogiri (~> 1.6)
2016-01-28 17:54:13 +01:00
htmlentities (4.3.4)
2020-10-11 08:45:52 +02:00
http (4.4.1)
addressable (~> 2.3)
http-cookie (~> 1.0)
2020-10-11 08:45:52 +02:00
http-form_data (~> 2.2)
http-parser (~> 1.2.0)
2020-10-11 08:45:52 +02:00
http-accept (1.7.0)
http-cookie (1.0.3)
domain_name (~> 0.5)
2020-10-11 08:45:52 +02:00
http-form_data (2.3.0)
http-parser (1.2.3)
ffi-compiler (>= 1.0, < 2.0)
httparty (0.16.4)
mime-types (~> 3.0)
2013-02-28 20:11:12 +01:00
multi_xml (>= 0.5.2)
httpclient (2.8.3)
2021-04-08 13:29:22 +02:00
i18n (1.8.10)
concurrent-ruby (~> 1.0)
i18n_data (0.8.0)
icalendar (2.4.1)
invisible_captcha (1.1.0)
rails (>= 4.2)
ipaddress (0.8.3)
2021-11-04 16:15:41 +01:00
ipynbdiff (0.3.7)
diffy (= 3.3.0)
json (= 2.5.1)
jaeger-client (1.1.0)
opentracing (~> 0.3)
thrift
jaro_winkler (1.5.4)
jira-ruby (2.1.4)
activesupport
atlassian-jwt
multipart-post
oauth (~> 0.5, >= 0.5.0)
jmespath (1.4.0)
js_regex (3.7.0)
2020-07-20 18:44:22 +02:00
character_set (~> 1.4)
regexp_parser (~> 2.1)
regexp_property_values (~> 1.0)
json (2.5.1)
json-jwt (1.13.0)
activesupport (>= 4.2)
aes_key_wrap
bindata
json_schemer (0.2.18)
ecma-re-validator (~> 0.3)
hana (~> 1.3)
regexp_parser (~> 2.0)
uri_template (~> 0.7)
2021-07-09 09:56:12 +02:00
jsonpath (1.1.0)
2020-10-11 08:45:52 +02:00
multi_json
jwt (2.1.0)
2020-05-30 01:48:11 +02:00
kaminari (1.2.1)
activesupport (>= 4.1.0)
2020-05-30 01:48:11 +02:00
kaminari-actionview (= 1.2.1)
kaminari-activerecord (= 1.2.1)
kaminari-core (= 1.2.1)
kaminari-actionview (1.2.1)
actionview
2020-05-30 01:48:11 +02:00
kaminari-core (= 1.2.1)
kaminari-activerecord (1.2.1)
activerecord
2020-05-30 01:48:11 +02:00
kaminari-core (= 1.2.1)
kaminari-core (1.2.1)
kas-grpc (0.0.2)
grpc (~> 1.0)
knapsack (1.21.1)
2016-05-22 03:17:15 +02:00
rake
kramdown (2.3.1)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
2021-07-09 09:56:12 +02:00
kubeclient (4.9.2)
http (>= 3.0, < 5.0)
2020-10-11 08:45:52 +02:00
jsonpath (~> 1.0)
recursive-open-struct (~> 1.1, >= 1.1.1)
2018-03-14 06:23:30 +01:00
rest-client (~> 2.0)
2021-04-08 13:29:22 +02:00
launchy (2.5.0)
addressable (~> 2.7)
lefthook (0.7.5)
letter_opener (1.7.0)
2013-06-24 21:03:32 +02:00
launchy (~> 2.2)
letter_opener_web (2.0.0)
actionmailer (>= 5.2)
letter_opener (~> 1.7)
railties (>= 5.2)
rexml
libyajl2 (1.2.0)
license_finder (6.0.0)
bundler
rubyzip (>= 1, < 3)
thor
2018-08-30 17:38:52 +02:00
toml (= 0.2.0)
with_env (= 1.1.0)
xml-simple
licensee (9.14.1)
dotenv (~> 2.0)
octokit (~> 4.17)
reverse_markdown (~> 1.0)
rugged (>= 0.24, < 2.0)
thor (>= 0.19, < 2.0)
listen (3.6.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
locale (2.1.3)
lockbox (0.6.2)
lograge (0.11.2)
actionpack (>= 4)
activesupport (>= 4)
railties (>= 4)
request_store (~> 1.0)
loofah (2.12.0)
crass (~> 1.0.2)
2015-11-25 17:18:44 +01:00
nokogiri (>= 1.5.9)
lru_redux (1.1.0)
lumberjack (1.2.7)
mail (2.7.1)
mini_mime (>= 0.1.1)
marcel (1.0.1)
marginalia (1.10.0)
actionpack (>= 2.3)
activerecord (>= 2.3)
memoist (0.16.2)
memory_profiler (0.9.14)
method_source (1.0.0)
mime-types (3.3.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2020.0512)
mini_histogram (0.3.1)
2020-10-06 15:03:18 +02:00
mini_magick (4.10.1)
mini_mime (1.1.1)
mini_portile2 (2.5.3)
minitest (5.11.3)
mixlib-cli (2.1.8)
mixlib-config (3.0.9)
tomlrb
mixlib-log (3.0.9)
mixlib-shellout (3.2.5)
chef-utils
ms_rest (0.7.6)
concurrent-ruby (~> 1.0)
faraday (>= 0.9, < 2.0.0)
timeliness (~> 0.3.10)
ms_rest_azure (0.12.0)
concurrent-ruby (~> 1.0)
faraday (>= 0.9, < 2.0.0)
faraday-cookie_jar (~> 0.0.6)
ms_rest (~> 0.7.6)
msgpack (1.3.3)
multi_json (1.14.1)
2017-02-20 19:18:12 +01:00
multi_xml (0.6.0)
multipart-post (2.1.1)
2019-08-26 06:13:54 +02:00
murmurhash3 (0.1.6)
Upgrade to Grape v1.3.3 This brings back many of the changes in https://gitlab.com/gitlab-org/gitlab/-/merge_requests/27276. This was reverted due to some failures in the QA tests with nil parameters. Grape v1.3.3 brings in Ruby 2.7 support and a number of fixes: https://github.com/ruby-grape/grape/blob/master/CHANGELOG.md 1. Move all inherited `Grape::API` -> `Grape::API::Instance` 2. Remove use of Virtus since this has been removed from Grape. 3. Extract `Rack::Response` from API error 4. Grape v1.2.3 pulled in a fix used in `SafeFile`: https://github.com/ruby-grape/grape/pull/1844, so we no longer need to maintain our custom type. 5. Adapt `WorkhorseFile` with the latest changes to make custom types work with Grape and dry-types. 6. Ensure `Array[String]` is coerced properly. The change from Virtus to dry-types now requires all strings to be coerced to arrays. Before this was done within Virtus. 7. Coerce `Array[Integer]` types to arrays of integers 8. Use a new helper, `coerce_nil_params_to_array!`, that coerces nil Array inputs to empty arrays to preserve previous behavior. If you have a parameter of type `Array[String]`, for example, Grape used to coerce a provided `nil` value to `[]`. Grape no longer does this for us, so we need a helper method that will automatically do this if the parameter is present. This merge request also introduces two Rubocop rules for Grape v1.3: 1. `Grape::API::Instance` instead of `Grape::API` is required, unless we solve https://gitlab.com/gitlab-org/gitlab/-/issues/215230. 2. Grape parameters defined with `Array` types (e.g. `Array[String]`, `Array[Integer]`) must have a `coerce_with` block or they will fail to parse properly. See https://github.com/ruby-grape/grape/blob/master/UPGRADING.md for more details.
2020-05-30 01:12:45 +02:00
mustermann (1.1.1)
ruby2_keywords (~> 0.0.1)
mustermann-grape (1.0.1)
mustermann (>= 1.0.0)
nap (1.1.0)
nenv (0.3.0)
net-http-persistent (4.0.1)
connection_pool (~> 2.2)
net-ldap (0.16.3)
net-ntp (2.1.3)
net-scp (3.0.0)
net-ssh (>= 2.6.5, < 7.0.0)
2020-04-24 11:11:02 +02:00
net-ssh (6.0.0)
netrc (0.11.0)
nio4r (2.5.8)
no_proxy_fix (0.1.2)
nokogiri (1.11.7)
mini_portile2 (~> 2.5.0)
racc (~> 1.4)
nokogumbo (2.0.2)
nokogiri (~> 1.8, >= 1.8.4)
notiffany (0.1.3)
nenv (~> 0.1)
shellany (~> 0.0)
numerizer (0.2.0)
oauth (0.5.6)
oauth2 (1.4.7)
faraday (>= 0.8, < 2.0)
jwt (>= 1.0, < 3.0)
2015-08-26 03:42:46 +02:00
multi_json (~> 1.3)
multi_xml (~> 0.5)
rack (>= 1.2, < 3)
octokit (4.20.0)
faraday (>= 0.9)
sawyer (~> 0.8.0, >= 0.5.3)
ohai (16.10.6)
chef-config (>= 12.8, < 17)
chef-utils (>= 16.0, < 17)
ffi (~> 1.9)
ffi-yajl (~> 2.2)
ipaddress
mixlib-cli (>= 1.7.0)
mixlib-config (>= 2.0, < 4.0)
mixlib-log (>= 2.0.1, < 4.0)
mixlib-shellout (>= 2.0, < 4.0)
plist (~> 3.1)
train-core
wmi-lite (~> 1.0)
oj (3.10.6)
omniauth (1.9.1)
hashie (>= 3.4.6)
rack (>= 1.6.2, < 3)
omniauth-atlassian-oauth2 (0.2.0)
omniauth (>= 1.1.1)
omniauth-oauth2 (>= 1.5)
omniauth-auth0 (2.0.0)
omniauth-oauth2 (~> 1.4)
2018-05-24 20:08:16 +02:00
omniauth-authentiq (0.3.3)
jwt (>= 1.5)
omniauth-oauth2 (>= 1.5)
omniauth-azure-activedirectory-v2 (1.0.0)
omniauth-oauth2 (~> 1.7)
omniauth-azure-oauth2 (0.0.10)
jwt (>= 1.0, < 3.0)
2016-01-07 18:27:01 +01:00
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.4)
omniauth-cas3 (1.1.4)
2015-11-12 05:25:31 +01:00
addressable (~> 2.3)
nokogiri (~> 1.7, >= 1.7.1)
2015-11-12 05:25:31 +01:00
omniauth (~> 1.2)
2016-09-13 13:09:04 +02:00
omniauth-facebook (4.0.0)
2015-11-03 17:58:12 +01:00
omniauth-oauth2 (~> 1.2)
2020-02-14 22:53:52 +01:00
omniauth-github (1.4.0)
omniauth (~> 1.5)
omniauth-oauth2 (>= 1.4.0, < 2.0)
omniauth-gitlab (1.0.3)
2015-01-28 00:37:19 +01:00
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.0)
omniauth-google-oauth2 (0.6.0)
jwt (>= 2.0)
2015-11-25 17:18:44 +01:00
omniauth (>= 1.1.1)
omniauth-oauth2 (>= 1.5)
2015-10-07 03:48:19 +02:00
omniauth-kerberos (0.3.0)
2014-12-16 12:57:40 +01:00
omniauth-multipassword
timfel-krb5-auth (~> 0.8)
2015-08-26 03:42:46 +02:00
omniauth-multipassword (0.4.2)
2014-12-16 12:57:40 +01:00
omniauth (~> 1.0)
2015-08-26 03:42:46 +02:00
omniauth-oauth (1.1.0)
2012-09-12 06:48:22 +02:00
oauth
omniauth (~> 1.0)
omniauth-oauth2 (1.7.1)
oauth2 (~> 1.4)
omniauth (>= 1.9, < 3)
omniauth-oauth2-generic (0.2.2)
omniauth-oauth2 (~> 1.0)
omniauth-salesforce (1.0.5)
omniauth (~> 1.0)
omniauth-oauth2 (~> 1.0)
omniauth-saml (1.10.0)
omniauth (~> 1.3, >= 1.3.2)
ruby-saml (~> 1.7)
omniauth-shibboleth (1.3.0)
omniauth (>= 1.0.0)
2018-03-20 07:52:10 +01:00
omniauth-twitter (1.4.0)
2015-10-07 03:42:32 +02:00
omniauth-oauth (~> 1.1)
2018-03-20 07:52:10 +01:00
rack
omniauth_crowd (2.4.0)
2015-08-31 12:59:52 +02:00
activesupport
nokogiri (>= 1.4.4)
omniauth (~> 1.0)
open4 (1.3.4)
openid_connect (1.2.0)
2019-03-17 09:17:53 +01:00
activemodel
attr_required (>= 1.0.0)
json-jwt (>= 1.5.0)
rack-oauth2 (>= 1.6.1)
swd (>= 1.0.0)
tzinfo
validate_email
validate_url
webfinger (>= 1.0.1)
openssl (2.2.0)
openssl-signature_algorithm (0.4.0)
opentracing (0.5.0)
optimist (3.0.1)
2014-12-29 07:22:56 +01:00
org-ruby (0.9.12)
2014-08-13 15:45:48 +02:00
rubypants (~> 0.2)
orm_adapter (0.5.0)
os (1.1.1)
parallel (1.20.1)
parser (3.0.2.0)
ast (~> 2.4.1)
2018-08-30 17:38:52 +02:00
parslet (1.8.2)
2021-05-17 06:33:26 +02:00
pastel (0.8.0)
tty-color (~> 0.5)
peek (1.1.0)
railties (>= 4.0.0)
pg (1.2.3)
pg_query (2.1.1)
google-protobuf (>= 3.17.1)
plist (3.6.0)
png_quantizator (0.2.1)
po_to_json (1.0.1)
json (>= 1.6.0)
premailer (1.11.1)
addressable
css_parser (>= 1.6.0)
2016-01-28 17:54:13 +01:00
htmlentities (>= 4.0.0)
premailer-rails (1.10.3)
actionmailer (>= 3)
2016-01-28 17:54:13 +01:00
premailer (~> 1.7, >= 1.7.9)
proc_to_ast (0.1.0)
coderay
parser
unparser
prometheus-client-mmap (0.15.0)
pry (0.13.1)
coderay (~> 1.1)
method_source (~> 1.0)
2021-05-17 06:33:26 +02:00
pry-byebug (3.9.0)
byebug (~> 11.0)
pry (~> 0.13.0)
2020-01-31 11:21:04 +01:00
pry-rails (0.3.9)
pry (>= 0.10.4)
2021-09-28 14:13:11 +02:00
pry-shell (0.5.0)
2021-05-17 06:33:26 +02:00
pry (~> 0.13.0)
tty-markdown
tty-prompt
2020-10-11 08:45:52 +02:00
public_suffix (4.0.6)
puma (5.3.2)
nio4r (~> 2.0)
puma_worker_killer (0.3.1)
get_process_mem (~> 0.2)
puma (>= 2.7)
2012-01-21 19:36:14 +01:00
pyu-ruby-sasl (0.0.3.3)
2018-12-20 08:23:25 +01:00
raabro (1.1.6)
racc (1.5.2)
rack (2.2.3)
2012-11-18 21:51:49 +01:00
rack-accept (0.4.5)
rack (>= 0.4)
rack-attack (6.3.0)
rack (>= 1.0, < 3)
2020-01-10 21:40:27 +01:00
rack-cors (1.0.6)
rack (>= 1.6.0)
rack-oauth2 (1.16.0)
2018-03-19 15:36:38 +01:00
activesupport
attr_required
httpclient
json-jwt (>= 1.11.0)
rack (>= 2.1.0)
rack-proxy (0.6.0)
rack
rack-test (1.1.0)
rack (>= 1.0, < 3)
rack-timeout (0.5.2)
rails (6.1.4.1)
actioncable (= 6.1.4.1)
actionmailbox (= 6.1.4.1)
actionmailer (= 6.1.4.1)
actionpack (= 6.1.4.1)
actiontext (= 6.1.4.1)
actionview (= 6.1.4.1)
activejob (= 6.1.4.1)
activemodel (= 6.1.4.1)
activerecord (= 6.1.4.1)
activestorage (= 6.1.4.1)
activesupport (= 6.1.4.1)
2021-05-12 16:53:51 +02:00
bundler (>= 1.15.0)
railties (= 6.1.4.1)
sprockets-rails (>= 2.0.0)
rails-controller-testing (1.0.5)
actionpack (>= 5.0.1.rc1)
actionview (>= 5.0.1.rc1)
activesupport (>= 5.0.1.rc1)
rails-dom-testing (2.0.3)
activesupport (>= 4.2.0)
nokogiri (>= 1.6)
rails-html-sanitizer (1.4.2)
loofah (~> 2.3)
rails-i18n (6.0.0)
i18n (>= 0.7, < 2)
railties (>= 6.0.0, < 7)
railties (6.1.4.1)
actionpack (= 6.1.4.1)
activesupport (= 6.1.4.1)
method_source
rake (>= 0.13)
2021-05-12 16:53:51 +02:00
thor (~> 1.0)
rainbow (3.0.0)
rake (13.0.6)
rb-fsevent (0.10.4)
rb-inotify (0.10.1)
ffi (~> 1.0)
rblineprof (0.3.6)
debugger-ruby_core_source (~> 1.3)
rbtrace (0.4.14)
ffi (>= 1.0.6)
msgpack (>= 0.4.3)
optimist (>= 3.0.0)
rbtree (0.4.4)
rchardet (1.8.0)
rdoc (6.3.2)
re2 (1.2.0)
recaptcha (4.13.1)
json
2021-07-09 09:56:12 +02:00
recursive-open-struct (1.1.3)
redis (4.4.0)
redis-actionpack (5.2.0)
actionpack (>= 5, < 7)
redis-rack (>= 2.1.0, < 3)
redis-store (>= 1.1.0, < 2)
redis-namespace (1.8.1)
2018-05-26 16:35:48 +02:00
redis (>= 3.0.4)
redis-rack (2.1.3)
rack (>= 2.0.8, < 3)
redis-store (>= 1.2, < 2)
redis-store (1.9.0)
redis (>= 4, < 5)
regexp_parser (2.1.1)
regexp_property_values (1.0.0)
representable (3.0.4)
declarative (< 0.1.0)
declarative-option (< 0.2.0)
uber (< 0.2.0)
request_store (1.5.0)
rack (>= 1.4)
2019-10-22 23:25:51 +02:00
responders (3.0.0)
actionpack (>= 5.0)
railties (>= 5.0)
2020-10-11 08:45:52 +02:00
rest-client (2.1.0)
http-accept (>= 1.7.0, < 2.0)
http-cookie (>= 1.0.2, < 2.0)
mime-types (>= 1.16, < 4.0)
netrc (~> 0.8)
retriable (3.1.2)
reverse_markdown (1.4.0)
nokogiri
2021-04-08 09:52:02 +02:00
rexml (3.2.5)
2016-07-04 12:25:09 +02:00
rinku (2.0.0)
rotp (6.2.0)
rouge (3.26.1)
2015-08-26 03:42:46 +02:00
rqrcode (0.7.0)
chunky_png
2015-03-27 23:35:26 +01:00
rqrcode-rails3 (0.1.7)
rqrcode (>= 0.4.2)
rspec (3.10.0)
rspec-core (~> 3.10.0)
rspec-expectations (~> 3.10.0)
rspec-mocks (~> 3.10.0)
rspec-core (3.10.1)
rspec-support (~> 3.10.0)
rspec-expectations (3.10.1)
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-mocks (3.10.2)
2015-06-18 00:05:48 +02:00
diff-lcs (>= 1.2.0, < 2.0)
rspec-support (~> 3.10.0)
rspec-parameterized (0.5.0)
binding_ninja (>= 0.2.3)
parser
proc_to_ast
rspec (>= 2.13, < 4)
unparser
rspec-rails (5.0.1)
actionpack (>= 5.2)
activesupport (>= 5.2)
railties (>= 5.2)
rspec-core (~> 3.10)
rspec-expectations (~> 3.10)
rspec-mocks (~> 3.10)
rspec-support (~> 3.10)
rspec-retry (0.6.1)
rspec-core (> 3.3)
rspec-support (3.10.2)
rspec_junit_formatter (0.4.1)
2018-08-31 12:22:33 +02:00
rspec-core (>= 2, < 4, != 2.12.0)
rspec_profiling (0.0.6)
activerecord
pg
rails
sqlite3
rubocop (0.93.1)
parallel (~> 1.10)
parser (>= 2.7.1.5)
rainbow (>= 2.2.2, < 4.0)
regexp_parser (>= 1.8)
rexml
rubocop-ast (>= 0.6.0)
2015-12-14 20:18:32 +01:00
ruby-progressbar (~> 1.7)
unicode-display_width (>= 1.4.0, < 2.0)
rubocop-ast (1.4.1)
parser (>= 2.7.1.5)
rubocop-gitlab-security (0.1.1)
rubocop (>= 0.51)
rubocop-performance (1.9.2)
rubocop (>= 0.90.0, < 2.0)
rubocop-ast (>= 0.4.0)
rubocop-rails (2.9.1)
activesupport (>= 4.2.0)
rack (>= 1.1)
rubocop (>= 0.90.0, < 2.0)
rubocop-rspec (1.44.1)
rubocop (~> 0.87)
rubocop-ast (>= 0.7.1)
2015-09-15 22:09:32 +02:00
ruby-fogbugz (0.2.1)
crack (~> 0.4)
ruby-magic (0.4.0)
mini_portile2 (~> 2.5.0)
ruby-prof (1.3.1)
ruby-progressbar (1.11.0)
ruby-saml (1.13.0)
2021-04-08 09:52:02 +02:00
nokogiri (>= 1.10.5)
rexml
ruby-statistics (2.1.2)
2021-06-14 22:49:02 +02:00
ruby2_keywords (0.0.4)
ruby_parser (3.15.0)
sexp_processor (~> 4.9)
2017-07-24 20:27:29 +02:00
rubyntlm (0.6.2)
2014-05-28 12:23:03 +02:00
rubypants (0.2.0)
rubyzip (2.0.0)
rugged (1.2.0)
safe_yaml (1.0.4)
safety_net_attestation (0.4.0)
jwt (~> 2.0)
sanitize (5.2.1)
crass (~> 1.0.2)
nokogiri (>= 1.8.0)
nokogumbo (~> 2.0)
2018-01-08 00:47:31 +01:00
sass (3.5.5)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
sassc (2.0.1)
ffi (~> 1.9)
rake
sassc-rails (2.1.0)
railties (>= 4.0.0)
sassc (>= 2.0)
sprockets (> 3.0)
sprockets-rails
tilt
sawyer (0.8.2)
addressable (>= 2.3.5)
faraday (> 0.8, < 2.0)
scientist (1.6.0)
sd_notify (0.1.0)
securecompare (1.0.0)
seed-fu (2.3.7)
activerecord (>= 3.1)
activesupport (>= 3.1)
selenium-webdriver (3.142.7)
2019-11-28 16:19:37 +01:00
childprocess (>= 0.5, < 4.0)
rubyzip (>= 1.2.2)
sentry-raven (3.1.2)
faraday (>= 1.0)
set (1.0.1)
settingslogic (2.0.9)
sexp_processor (4.15.1)
shellany (0.0.1)
shoulda-matchers (4.0.1)
activesupport (>= 4.2.0)
sidekiq (6.2.2)
connection_pool (>= 2.2.2)
rack (~> 2.0)
redis (>= 4.2.0)
sidekiq-cron (1.0.4)
2018-12-20 08:23:25 +01:00
fugit (~> 1.1)
sidekiq (>= 4.2.1)
signet (0.14.0)
addressable (~> 2.3)
faraday (>= 0.17.3, < 2.0)
jwt (>= 1.5, < 3.0)
multi_json (~> 1.10)
2017-07-20 17:32:17 +02:00
simple_po_parser (1.1.2)
2020-03-02 15:58:08 +01:00
simplecov (0.18.5)
docile (~> 1.1)
2020-03-02 15:58:08 +01:00
simplecov-html (~> 0.11)
simplecov-cobertura (1.3.1)
simplecov (~> 0.8)
simplecov-html (0.12.3)
sixarm_ruby_unaccent (1.2.0)
slack-messenger (2.3.4)
snowplow-tracker (0.6.1)
contracts (~> 0.7, <= 0.11)
2021-08-03 07:00:33 +02:00
solargraph (0.43.0)
2021-06-15 09:29:04 +02:00
backport (~> 1.2)
benchmark
bundler (>= 1.17.2)
2021-06-15 09:29:04 +02:00
diff-lcs (~> 1.4)
e2mmap
jaro_winkler (~> 1.5)
kramdown (~> 2.3)
kramdown-parser-gfm (~> 1.1)
parser (~> 3.0)
reverse_markdown (>= 1.0.5, < 3)
rubocop (>= 0.52)
thor (~> 1.0)
tilt (~> 2.0)
yard (~> 0.9, >= 0.9.24)
sorted_set (1.0.3)
rbtree
set (~> 1.0)
spamcheck (0.1.0)
Squashed commit of the following: commit a2ef9f1e1c0ae4fd119481a493cf118fb0e2113d Author: Ethan Urie <ethan.urie@gmail.com> Date: Thu Apr 29 12:24:51 2021 -0400 Responding to code review comments commit 107845cfcfefe3056bb772a3eeb09d7579faa07f Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 28 21:42:27 2021 -0400 Add support for Recaptcha and CONDITIONAL_ALLOW commit 82b0f2d5a4cfb5698f01d9c98b43cc6911e1496a Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 28 21:06:35 2021 -0400 Add GRPC credentials for TLS in production commit 5d569e39feea23a2606d9a2a23d5794251f1e704 Merge: cd12ff5e748 d6fb606a38d Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 28 17:17:01 2021 -0400 Merge branch '299558-integrate-with-anti-spam-service' of gitlab.com:gitlab-org/gitlab into 299558-integrate-with-anti-spam-service commit cd12ff5e748855c10b90f68394e3be60f82204fc Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 28 17:12:41 2021 -0400 Addressing code review comments Mostly removed unused or unnecessary code commit f71f72cac863375273eee1360ac2c4497c960e76 Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 28 16:10:39 2021 -0400 Adding changelog commit d6fb606a38de171b3c3c0347e581c2f7c4bb74aa Author: agroleau <agroleau@gitlab.com> Date: Wed Apr 28 16:10:36 2021 -0400 Integrate Spamcheck gRPC gem into GitLab spam verdict service Introduction of the Security Automation anti-spam engine protobuf gem. Sets up a GRPC channel from the SpamVerdictService to the anti-spam engine. commit 292046c74fdaf5f67c55ef361973835427fd253f Merge: 9058ba98ad6 c1e4eca80ca Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 28 16:03:03 2021 -0400 Merge branch '299558-integrate-with-anti-spam-service' of gitlab.com:gitlab-org/gitlab into 299558-integrate-with-anti-spam-service commit c1e4eca80ca26b5d0f0f0c28171170213b1ad85d Author: agroleau <agroleau@gitlab.com> Date: Wed Apr 28 14:39:09 2021 -0400 Integrate Spamcheck gRPC gem into GitLab spam verdict service The anti-spam engine, spamcheck, is going to utilize gRPC in production but for now, it provides an HTTP endpoint that accepts and returns JSON. However, the JSON has to be formatted to match the structure of the protocol buffers that will eventually be used. This MR reformats the JSON to match spamcheck's protobufs. commit 9058ba98ad614ad5c610382cecf727fab832bf9c Author: Ethan Urie <ethan.urie@gmail.com> Date: Mon Apr 26 14:17:04 2021 -0400 Re-implement rescuing a specific error type commit 4015eebfcc2eebab096ad5f4815f23477ad3388c Merge: d6b5a6ec4c8 ba710a0df6c Author: Ethan Urie <ethan.urie@gmail.com> Date: Mon Apr 26 12:57:38 2021 -0400 Merged with master commit d6b5a6ec4c87467cff8e8235cd9a90d21dc50a61 Author: Ethan Urie <ethan.urie@gmail.com> Date: Fri Apr 23 12:53:32 2021 -0400 Fix build issues commit 1e43f06fa678263779ec432818e6f4750aca8779 Author: Ethan Urie <ethan.urie@gmail.com> Date: Fri Apr 23 10:50:08 2021 -0400 Set spamcheck gem to 0.0.5 from rubygems Refactor `SpamVerdictService` to use the new Spamcheck client class commit 2c5d10fdf0716f7b843ca16abe7d29c54fa7adde Merge: 4cb5cbd1bc4 69594f0851b Author: Ethan Urie <ethan.urie@gmail.com> Date: Thu Apr 22 16:53:16 2021 -0400 Merged with master commit 4cb5cbd1bc4ac15429c69d726bb2f649f87cadc8 Merge: 6d7eeb78d98 0dd8c84b74a Author: Ethan Urie <ethan.urie@gmail.com> Date: Tue Apr 20 16:03:46 2021 -0400 Merged with master commit 6d7eeb78d9818320dabf550a8796487f7d3414f8 Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 14 16:14:33 2021 -0400 Fix Ruby 2.7 deprecations commit 863ee96aafe1071c985f74decc59b624a04e507f Merge: 7cfd704de6f 2b6e5caba0d Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Apr 14 08:47:41 2021 -0400 Merge remote-tracking branch 'origin/master' into 299558-integrate-with-anti-spam-service commit 7cfd704de6f915230aacb01d5b45647ebadb66a7 Merge: 50f0fcba818 b49dd8e17b4 Author: Ethan Urie <ethan.urie@gmail.com> Date: Tue Apr 13 15:09:35 2021 -0400 Merged with master commit 50f0fcba818e877e4382677b69b5ed04993da442 Author: Ethan Urie <ethan.urie@gmail.com> Date: Fri Apr 9 10:03:37 2021 -0400 Move `spamcheck_client` to `spamcheck` and updated tests commit ee7011fc712f53e88d4d84ef3576bd06723b7314 Author: Ethan Urie <ethan.urie@gmail.com> Date: Thu Apr 8 15:02:50 2021 -0400 Capture the user's primary email address commit 324464315216f4759411cb9383457afd9f8255c2 Merge: 1dd4f510955 5dbbb980ac1 Author: Ethan Urie <ethan.urie@gmail.com> Date: Thu Apr 8 10:47:24 2021 -0400 Merge branch '299558-integrate-with-anti-spam-service' of https://gitlab.com/gitlab-org/gitlab into 299558-integrate-with-anti-spam-service commit 5dbbb980ac1200e94e757354e484df17b1a7d34d Author: Jayson Salazar <jsalazar@gitlab.com> Date: Thu Apr 8 14:45:46 2021 +0000 Add a BLOCK_USER case to spam_action_service.rb as otherwise the result would be ALLOW for external_verdict='block' commit 1dd4f510955d137b3680d3417fb993781e945418 Author: Ethan Urie <ethan.urie@gmail.com> Date: Thu Apr 8 10:44:43 2021 -0400 Set spamcheck branch to master commit ff64700c27f80dc0ee85dd56d5bb77f19a8abacb Author: Jayson Salazar <jsalazar@gitlab.com> Date: Thu Apr 8 14:43:34 2021 +0000 Add a BLOCK_USER case to spam_action_service.rb as otherwise the result would be ALLOW for external_verdict='block' commit f2af0e2833c5176dbd6907340f805a13eb566ed1 Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Mar 10 17:14:15 2021 -0500 Update application settings to support grpc spam check URL commit e016cb86d767f6750d78fa1d4e5b42fc614c0ae1 Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Mar 10 15:26:54 2021 -0500 Created initial SpamcheckClient specs commit ccccc3a682df9ad6730365e3dbca4f22f115cc0b Author: Ethan Urie <ethan.urie@gmail.com> Date: Tue Mar 9 08:41:12 2021 -0500 SpamVerdictService specs are passing, starting client specs commit 1193aeeea5295aea8b81de3a6c05d5975949f5e0 Author: Ethan Urie <ethan.urie@gmail.com> Date: Mon Mar 8 14:14:16 2021 -0500 Move verdict mappings into a hash from a method commit f014a98307b765202f784ec2c62dc9ebedbc72bb Author: Ethan Urie <ethan.urie@gmail.com> Date: Fri Mar 5 15:31:49 2021 -0500 Updated specs for GRPC commit b40b348702b843bc5d98c45ce01516d7ce60c43d Author: Ethan Urie <ethan.urie@gmail.com> Date: Wed Mar 3 14:12:15 2021 -0500 Initial client tests with updated gem files Updated gems and created the first, skeletal tests for the new client code for Spamcheck. commit b55a29c0bf15c0aaacf6fd5b5b6bd1eb8781b323 Author: Ethan Urie <ethan.urie@gmail.com> Date: Fri Jan 22 08:36:19 2021 -0500 Reformat JSON message to match the expeted protobuf message commit 8e89d41ccddfdbcc84c8b678c70da7c2a667ed7a Author: Ethan Urie <ethan.urie@gmail.com> Date: Thu Feb 25 13:54:16 2021 -0500 Initial client code commit 0e9621825cbf709bf2a5d6c40488ad38e8536be3 Author: Ethan Urie <ethan.urie@gmail.com> Date: Mon Feb 22 14:35:03 2021 -0500 Add spamcheck gem to the Gemfile commit 1d70b4e8dd849163321a6319421438579efe85ba Author: Ethan Urie <ethan.urie@gmail.com> Date: Mon Feb 1 14:32:08 2021 -0500 Add changes to format to include multiple emails and updated_at commit 9d4b43a234a1f5c4983a6c5d839b8b5a471cb95e Author: Ethan Urie <ethan.urie@gmail.com> Date: Tue Jan 26 14:59:42 2021 -0500 Reformat JSON message to match the expeted protobuf message
2021-04-29 20:51:19 +02:00
grpc (~> 1.0)
spring (2.1.1)
spring-commands-rspec (1.0.4)
2014-02-15 20:46:15 +01:00
spring (>= 0.9.1)
sprite-factory (1.7.1)
sprockets (3.7.2)
concurrent-ruby (~> 1.0)
rack (> 1, < 3)
sprockets-rails (3.2.2)
2016-03-28 21:37:53 +02:00
actionpack (>= 4.0)
activesupport (>= 4.0)
sprockets (>= 3.0.0)
sqlite3 (1.3.13)
sshkey (2.0.0)
2021-04-08 18:46:29 +02:00
ssrf_filter (1.0.7)
stackprof (0.2.15)
state_machines (0.5.0)
state_machines-activemodel (0.8.0)
activemodel (>= 5.1)
state_machines (>= 0.5.0)
state_machines-activerecord (0.8.0)
activerecord (>= 5.1)
state_machines-activemodel (>= 0.8.0)
2021-05-17 06:33:26 +02:00
strings (0.2.1)
strings-ansi (~> 0.2)
unicode-display_width (>= 1.5, < 3.0)
unicode_utils (~> 1.4)
strings-ansi (0.2.0)
swd (1.2.0)
2019-03-17 09:17:53 +01:00
activesupport (>= 3)
attr_required (>= 0.0.5)
httpclient (>= 2.4)
sys-filesystem (1.1.9)
ffi
sysexits (1.2.0)
tanuki_emoji (0.5.0)
temple (0.8.2)
terminal-table (1.8.0)
unicode-display_width (~> 1.1, >= 1.1.1)
terser (1.0.2)
execjs (>= 0.3.0, < 3)
2021-10-06 18:06:14 +02:00
test-prof (1.0.7)
test_file_finder (0.1.4)
faraday (~> 1.0)
2017-04-13 05:41:46 +02:00
text (1.3.1)
2021-02-08 20:15:31 +01:00
thin (1.8.0)
2015-08-26 03:42:46 +02:00
daemons (~> 1.0, >= 1.0.9)
2015-11-25 17:18:44 +01:00
eventmachine (~> 1.0, >= 1.0.4)
rack (>= 1, < 3)
thor (1.1.0)
thrift (0.14.0)
2019-12-15 21:22:33 +01:00
tilt (2.0.10)
2020-02-29 09:09:44 +01:00
timecop (0.9.1)
timeliness (0.3.10)
2015-03-18 18:36:57 +01:00
timfel-krb5-auth (0.8.3)
2018-08-30 17:38:52 +02:00
toml (0.2.0)
parslet (~> 1.8.0)
2021-06-25 17:09:34 +02:00
toml-rb (2.0.1)
citrus (~> 3.0, > 3.0)
tomlrb (1.3.0)
tpm-key_attestation (0.9.0)
bindata (~> 2.4)
openssl-signature_algorithm (~> 0.4.0)
train-core (3.4.9)
addressable (~> 2.5)
ffi (!= 1.13.0)
json (>= 1.8, < 3.0)
mixlib-shellout (>= 2.0, < 4.0)
net-scp (>= 1.2, < 4.0)
net-ssh (>= 2.9, < 7.0)
truncato (0.7.11)
htmlentities (~> 4.3.1)
nokogiri (>= 1.7.0, <= 2.0)
2021-05-17 06:33:26 +02:00
tty-color (0.6.0)
tty-cursor (0.7.1)
tty-markdown (0.7.0)
kramdown (>= 1.16.2, < 3.0)
pastel (~> 0.8)
rouge (~> 3.14)
strings (~> 0.2.0)
tty-color (~> 0.5)
tty-screen (~> 0.8)
tty-prompt (0.23.1)
pastel (~> 0.8)
tty-reader (~> 0.8)
tty-reader (0.9.0)
tty-cursor (~> 0.7)
tty-screen (~> 0.8)
wisper (~> 2.0)
tty-screen (0.8.1)
2021-05-12 16:53:51 +02:00
tzinfo (2.0.4)
concurrent-ruby (~> 1.0)
u2f (0.2.1)
uber (0.1.0)
unf (0.1.4)
unf_ext
2020-10-11 08:45:52 +02:00
unf_ext (0.0.7.7)
unicode-display_width (1.7.0)
unicode_utils (1.4.0)
uniform_notifier (1.13.0)
unleash (3.2.2)
2019-08-26 06:13:54 +02:00
murmurhash3 (~> 0.1.6)
unparser (0.6.0)
diff-lcs (~> 1.3)
parser (>= 3.0.0)
uri_template (0.7.0)
valid_email (0.1.3)
activemodel
mail (>= 2.6.1)
2019-03-17 09:17:53 +01:00
validate_email (0.1.6)
activemodel (>= 3.0)
mail (>= 2.2.5)
validate_url (1.0.13)
2019-03-17 09:17:53 +01:00
activemodel (>= 3.0.0)
public_suffix
validates_hostname (1.0.11)
2016-02-09 18:06:55 +01:00
activerecord (>= 3.0)
activesupport (>= 3.0)
version_sorter (2.2.4)
vmstat (2.3.0)
warden (1.2.8)
rack (>= 2.0.6)
warning (1.2.0)
webauthn (2.3.0)
android_key_attestation (~> 0.3.0)
awrence (~> 1.1)
bindata (~> 2.4)
cbor (~> 0.5.9)
cose (~> 1.0)
openssl (~> 2.0)
safety_net_attestation (~> 0.4.0)
securecompare (~> 1.0)
tpm-key_attestation (~> 0.9.0)
2019-03-17 09:17:53 +01:00
webfinger (1.1.0)
activesupport
httpclient (>= 2.4)
webmock (3.9.1)
addressable (>= 2.3.6)
2013-05-01 12:29:29 +02:00
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
webrick (1.6.1)
websocket-driver (0.7.5)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
2014-07-28 11:47:27 +02:00
wikicloth (0.8.1)
builder
expression_parser
rinku
2021-05-17 06:33:26 +02:00
wisper (2.0.1)
2017-11-16 15:14:29 +01:00
with_env (1.1.0)
wmi-lite (1.0.5)
xml-simple (1.1.5)
xpath (3.2.0)
nokogiri (~> 1.8)
yajl-ruby (1.4.1)
yard (0.9.26)
zeitwerk (2.4.2)
2011-10-08 23:36:38 +02:00
PLATFORMS
ruby
DEPENDENCIES
RedCloth (~> 4.3.2)
acme-client (~> 2.0, >= 2.0.6)
activerecord-explain-analyze (~> 0.1)
acts-as-taggable-on (~> 7.0)
addressable (~> 2.8)
akismet (~> 3.0)
apollo_upload_server (~> 2.1.0)
asana (~> 0.10.3)
asciidoctor (~> 2.0.10)
asciidoctor-include-ext (~> 0.3.1)
asciidoctor-kroki (~> 0.5.0)
asciidoctor-plantuml (~> 0.0.12)
atlassian-jwt (~> 0.2.0)
attr_encrypted (~> 3.1.0)
2021-07-08 18:26:21 +02:00
autoprefixer-rails (= 10.2.5.1)
awesome_print
aws-sdk-cloudformation (~> 1)
aws-sdk-core (~> 3)
aws-sdk-s3 (~> 1)
babosa (~> 1.0.4)
2016-05-02 13:29:17 +02:00
base32 (~> 0.3.0)
batch-loader (~> 2.0.1)
bcrypt (~> 3.1, >= 3.1.14)
2017-07-19 15:39:33 +02:00
bcrypt_pbkdf (~> 1.0)
benchmark-ips (~> 2.3.0)
2019-05-27 10:30:17 +02:00
benchmark-memory (~> 0.1)
2021-04-08 13:29:22 +02:00
better_errors (~> 2.9.0)
bootsnap (~> 1.9.1)
bootstrap_form (~> 4.2.0)
2020-07-13 12:41:30 +02:00
browser (~> 4.2)
bullet (~> 6.1.3)
bundler-audit (~> 0.7.0.1)
capybara (~> 3.35.3)
capybara-screenshot (~> 1.0.22)
carrierwave (~> 1.3)
charlock_holmes (~> 0.7.7)
commonmarker (~> 0.23.2)
concurrent-ruby (~> 1.1)
Storing of application metrics in InfluxDB This adds the ability to write application metrics (e.g. SQL timings) to InfluxDB. These metrics can in turn be visualized using Grafana, or really anything else that can read from InfluxDB. These metrics can be used to track application performance over time, between different Ruby versions, different GitLab versions, etc. == Transaction Metrics Currently the following is tracked on a per transaction basis (a transaction is a Rails request or a single Sidekiq job): * Timings per query along with the raw (obfuscated) SQL and information about what file the query originated from. * Timings per view along with the path of the view and information about what file triggered the rendering process. * The duration of a request itself along with the controller/worker class and method name. * The duration of any instrumented method calls (more below). == Sampled Metrics Certain metrics can't be directly associated with a transaction. For example, a process' total memory usage is unrelated to any running transactions. While a transaction can result in the memory usage going up there's no accurate way to determine what transaction is to blame, this becomes especially problematic in multi-threaded environments. To solve this problem there's a separate thread that takes samples at a fixed interval. This thread (using the class Gitlab::Metrics::Sampler) currently tracks the following: * The process' total memory usage. * The number of file descriptors opened by the process. * The amount of Ruby objects (using ObjectSpace.count_objects). * GC statistics such as timings, heap slots, etc. The default/current interval is 15 seconds, any smaller interval might put too much pressure on InfluxDB (especially when running dozens of processes). == Method Instrumentation While currently not yet used methods can be instrumented to track how long they take to run. Unlike the likes of New Relic this doesn't require modifying the source code (e.g. including modules), it all happens from the outside. For example, to track `User.by_login` we'd add the following code somewhere in an initializer: Gitlab::Metrics::Instrumentation. instrument_method(User, :by_login) to instead instrument an instance method: Gitlab::Metrics::Instrumentation. instrument_instance_method(User, :save) Instrumentation for either all public model methods or a few crucial ones will be added in the near future, I simply haven't gotten to doing so just yet. == Configuration By default metrics are disabled. This means users don't have to bother setting anything up if they don't want to. Metrics can be enabled by editing one's gitlab.yml configuration file (see config/gitlab.yml.example for example settings). == Writing Data To InfluxDB Because InfluxDB is still a fairly young product I expect the worse. Data loss, unexpected reboots, the database not responding, you name it. Because of this data is _not_ written to InfluxDB directly, instead it's queued and processed by Sidekiq. This ensures that users won't notice anything when InfluxDB is giving trouble. The metrics worker can be started in a standalone manner as following: bundle exec sidekiq -q metrics The corresponding class is called MetricsWorker.
2015-12-09 16:45:51 +01:00
connection_pool (~> 2.0)
countries (~> 3.0)
2015-11-24 21:42:42 +01:00
creole (~> 0.5.0)
crystalball (~> 0.7.0)
database_cleaner (~> 1.7.0)
deckar01-task_list (= 2.3.1)
2021-11-05 13:02:38 +01:00
declarative_policy (~> 1.1.0)
default_value_for (~> 3.4.0)
deprecation_toolkit (~> 1.5.1)
derailed_benchmarks
2018-05-02 10:08:16 +02:00
device_detector
devise (~> 4.7.2)
devise-two-factor (~> 4.0.0)
diff_match_patch (~> 0.1.0)
2020-02-23 09:52:25 +01:00
diffy (~> 3.3)
discordrb-webhooks (~> 3.4)
doorkeeper (~> 5.5.0.rc2)
doorkeeper-openid_connect (~> 1.7.5)
ed25519 (~> 1.2)
elasticsearch-api (~> 6.8.2)
elasticsearch-model (~> 6.1)
elasticsearch-rails (~> 6.1)
email_reply_trimmer (~> 0.1)
2018-05-26 16:21:20 +02:00
email_spec (~> 2.2.0)
2020-01-31 09:13:54 +01:00
erubi (~> 1.9.0)
escape_utils (~> 1.1)
factory_bot_rails (~> 6.2.0)
faraday (~> 1.0)
faraday_middleware-aws-sigv4 (~> 0.3.0)
fast_blank
ffaker (~> 2.10)
flipper (~> 0.21.0)
flipper-active_record (~> 0.21.0)
flipper-active_support_cache_store (~> 0.21.0)
flowdock (~> 0.7)
fog-aliyun (~> 0.3)
fog-aws (~> 3.12)
fog-core (= 2.1.0)
fog-google (~> 1.15)
fog-local (~> 0.6)
fog-openstack (~> 1.0)
fog-rackspace (~> 0.1.1)
fugit (~> 1.2.1)
2017-08-03 22:38:29 +02:00
fuubar (~> 2.2.0)
gettext (~> 3.3)
2017-04-13 05:41:46 +02:00
gettext_i18n_rails (~> 1.8.0)
gettext_i18n_rails_js (~> 1.3)
gitaly (~> 14.4.0.pre.rc43)
github-markup (~> 1.7.0)
gitlab-chronic (~> 0.10.5)
gitlab-dangerfiles (~> 2.5.0)
gitlab-experiment (~> 0.6.4)
gitlab-fog-azure-rm (~> 1.2.0)
gitlab-labkit (~> 0.21.1)
gitlab-license (~> 2.0)
gitlab-mail_room (~> 0.0.9)
gitlab-markup (~> 1.7.1)
gitlab-net-dns (~> 0.9.1)
gitlab-omniauth-openid-connect (~> 0.8.0)
gitlab-sidekiq-fetcher (= 0.8.0)
gitlab-styles (~> 6.4.0)
gitlab_chronic_duration (~> 0.10.6.2)
gitlab_omniauth-ldap (~> 2.1.1)
gon (~> 6.4.0)
google-api-client (~> 0.33)
google-protobuf (~> 3.17.1)
2019-11-13 10:53:35 +01:00
gpgme (~> 2.0.19)
grape (~> 1.5.2)
grape-entity (~> 0.10.0)
grape-path-helpers (~> 1.7.0)
grape_logging (~> 1.7)
graphiql-rails (~> 1.4.10)
graphlient (~> 0.4.0)
graphql (~> 1.11.8)
graphql-docs (~> 1.6.0)
grpc (~> 1.30.2)
2018-03-08 01:55:10 +01:00
gssapi
guard-rspec
haml_lint (~> 0.36.0)
hamlit (~> 2.15.0)
hangouts-chat (~> 0.0.5)
hashie
hashie-forbidden_attributes
health_check (~> 3.0)
html-pipeline (~> 2.13.2)
html2text
httparty (~> 0.16.4)
icalendar
invisible_captcha (~> 1.1.0)
2020-10-06 15:59:00 +02:00
ipaddress (~> 0.8.3)
2021-11-04 16:15:41 +01:00
ipynbdiff (= 0.3.7)
jira-ruby (~> 2.1.4)
js_regex (~> 3.7)
json (~> 2.5.1)
json_schemer (~> 0.2.18)
jwt (~> 2.1.0)
kaminari (~> 1.0)
kas-grpc (~> 0.0.2)
knapsack (~> 1.21.1)
kramdown (~> 2.3.1)
2021-07-09 09:56:12 +02:00
kubeclient (~> 4.9.2)
2021-04-08 13:29:22 +02:00
lefthook (~> 0.7.0)
letter_opener_web (~> 2.0.0)
license_finder (~> 6.0)
licensee (~> 9.14.1)
lockbox (~> 0.6.2)
lograge (~> 0.5)
loofah (~> 2.2)
lru_redux
mail (= 2.7.1)
mail-smtp_pool (~> 0.1.0)!
marginalia (~> 1.10.0)
2019-05-27 10:30:17 +02:00
memory_profiler (~> 0.9)
method_source (~> 1.0)
2020-10-06 15:03:18 +02:00
mini_magick (~> 4.10.1)
minitest (~> 5.11.0)
multi_json (~> 1.14.1)
net-ldap (~> 0.16.3)
net-ntp
2020-04-24 11:11:02 +02:00
net-ssh (~> 6.0)
nokogiri (~> 1.11.4)
oauth2 (~> 1.4)
octokit (~> 4.15)
ohai (~> 16.10)
oj (~> 3.10.6)
2018-03-15 08:38:01 +01:00
omniauth (~> 1.8)
omniauth-atlassian-oauth2 (~> 0.2.0)
omniauth-auth0 (~> 2.0.0)
2018-05-24 20:08:16 +02:00
omniauth-authentiq (~> 0.3.3)
omniauth-azure-activedirectory-v2 (~> 1.0)
omniauth-azure-oauth2 (~> 0.0.9)
omniauth-cas3 (~> 1.1.4)
2016-09-13 13:09:04 +02:00
omniauth-facebook (~> 4.0.0)
2020-02-14 22:53:52 +01:00
omniauth-github (~> 1.4)
omniauth-gitlab (~> 1.0.2)
omniauth-google-oauth2 (~> 0.6.0)
2015-10-07 03:48:19 +02:00
omniauth-kerberos (~> 0.3.0)
omniauth-oauth2-generic (~> 0.2.2)
omniauth-salesforce (~> 1.0.5)
2018-03-15 09:20:51 +01:00
omniauth-saml (~> 1.10)
omniauth-shibboleth (~> 1.3.0)
2018-03-20 07:52:10 +01:00
omniauth-twitter (~> 1.4)
omniauth_crowd (~> 2.4.0)
2015-08-26 03:42:46 +02:00
org-ruby (~> 0.9.12)
parallel (~> 1.19)
Replace the changelog regex parser with Parslet In https://gitlab.com/gitlab-org/gitlab/-/merge_requests/50063 we introduced code for generating Markdown changelogs using the API, using a custom template language. The compiler for this language would convert a custom syntax into ERB, making sure arbitrary code execution isn't possible; or so we thought. In https://gitlab.com/gitlab-org/gitlab/-/issues/300224 we found a way to bypass the template engine's harness, and run arbitrary Ruby code. In response to this issue, I decided to investigate replacing the setup with something more secure. We always planned on doing so when deemed necessary, unfortunately that need arrived sooner than expected. In this commit we replace the regex/ERB based setup with a parser built using Parslet (http://kschiess.github.io/parslet/). Parslet makes it pretty easy to write a parser, and was already an indirect dependency of GitLab (through the license_finder Gem). This new parser doesn't allow for arbitrary code execution, doesn't depend on ERB, and is less fragile compared to the old setup. Templates are executed by walking and evaluating the AST nodes the parser produces. While this won't break any speed records, it's easy to maintain and understand, and fast enough for our needs. In this new setup there is a slight difference compared to the old setup. In the old setup, expression tags on their own line don't add a new line. So this: foo {% if something %}{% end %} bar Compiles into this: foo bar Getting this right using the Parslet parser proved difficult, so we took a slightly different approach: any newline following an expression tag (if, else, end, and each) consumes the newline that directly follows it (if any). This requires only a small change in the template, is easy to implement, and still intuitive to the user. As part of this commit we also fix a small bug that would lead to empty entries being included in the template, and add a note about using the right YAML syntax to preserve newlines.
2021-02-02 20:18:44 +01:00
parslet (~> 1.8)
peek (~> 1.1)
2018-12-27 14:45:27 +01:00
pg (~> 1.1)
pg_query (~> 2.1)
png_quantizator (~> 0.2.1)
premailer-rails (~> 1.10.3)
prometheus-client-mmap (~> 0.15.0)
2021-05-17 06:33:26 +02:00
pry-byebug
2020-01-31 11:21:04 +01:00
pry-rails (~> 0.3.9)
2021-09-28 14:13:11 +02:00
pry-shell (~> 0.5.0)
puma (~> 5.3.1)
puma_worker_killer (~> 0.3.1)
rack (~> 2.2.3)
rack-attack (~> 6.3.0)
rack-cors (~> 1.0.6)
rack-oauth2 (~> 1.16.0)
rack-proxy (~> 0.6.0)
rack-timeout (~> 0.5.1)
rails (~> 6.1.4.1)
rails-controller-testing
rails-i18n (~> 6.0)
rainbow (~> 3.0)
rblineprof (~> 0.3.6)
rbtrace (~> 0.4)
rdoc (~> 6.3.2)
re2 (~> 1.2.0)
2018-11-16 08:34:16 +01:00
recaptcha (~> 4.11)
redis (~> 4.4.0)
redis-actionpack (~> 5.2.0)
redis-namespace (~> 1.8.1)
request_store (~> 1.5)
2019-10-22 23:25:51 +02:00
responders (~> 3.0)
retriable (~> 3.1.2)
2021-04-08 09:52:02 +02:00
rexml (~> 3.2.5)
rouge (~> 3.26.1)
2015-08-26 03:42:46 +02:00
rqrcode-rails3 (~> 0.1.7)
rspec-parameterized
rspec-rails (~> 5.0.1)
rspec-retry (~> 0.6.1)
2018-08-31 12:22:33 +02:00
rspec_junit_formatter
rspec_profiling (~> 0.0.6)
2015-09-15 22:09:32 +02:00
ruby-fogbugz (~> 0.2.1)
ruby-magic (~> 0.4)
ruby-prof (~> 1.3.0)
ruby-progressbar (~> 1.10)
ruby-saml (~> 1.13.0)
ruby_parser (~> 3.15)
rubyzip (~> 2.0.0)
rugged (~> 1.2)
sanitize (~> 5.2.1)
sassc-rails (~> 2.1.0)
sd_notify (~> 0.1.0)
seed-fu (~> 2.3.7)
2019-11-28 16:19:37 +01:00
selenium-webdriver (~> 3.142)
sentry-raven (~> 3.1)
2015-08-26 03:42:46 +02:00
settingslogic (~> 2.0.9)
shoulda-matchers (~> 4.0.1)
sidekiq (~> 6.2.2)
sidekiq-cron (~> 1.0)
2017-07-20 17:32:17 +02:00
simple_po_parser (~> 1.1.2)
2020-03-02 15:58:08 +01:00
simplecov (~> 0.18.5)
simplecov-cobertura (~> 1.3.1)
slack-messenger (~> 2.3.4)
snowplow-tracker (~> 0.6.1)
2021-08-03 07:00:33 +02:00
solargraph (~> 0.43)
spamcheck (~> 0.1.0)
spring (~> 2.1.0)
2015-08-26 03:42:46 +02:00
spring-commands-rspec (~> 1.0.4)
sprite-factory (~> 1.7)
sprockets (~> 3.7.0)
sshkey (~> 2.0)
stackprof (~> 0.2.15)
state_machines-activerecord (~> 0.8.0)
sys-filesystem (~> 1.1.6)
tanuki_emoji (~> 0.5)
terser (= 1.0.2)
2021-10-06 18:06:14 +02:00
test-prof (~> 1.0.7)
test_file_finder (~> 0.1.3)
2021-02-08 20:15:31 +01:00
thin (~> 1.8.0)
thrift (>= 0.14.0)
2020-02-29 09:09:44 +01:00
timecop (~> 0.9.1)
2021-06-25 17:09:34 +02:00
toml-rb (~> 2.0)
truncato (~> 0.7.11)
u2f (~> 0.2.1)
2015-08-26 03:42:46 +02:00
unf (~> 0.1.4)
unleash (~> 3.2.2)
valid_email (~> 0.1)
validates_hostname (~> 1.0.11)
version_sorter (~> 2.2.4)
vmstat (~> 2.3.0)
warning (~> 1.2.0)
webauthn (~> 2.3)
webmock (~> 3.9.1)
webrick (~> 1.6.1)
2014-07-28 11:47:27 +02:00
wikicloth (= 0.8.1)
yajl-ruby (~> 1.4.1)
BUNDLED WITH
2.1.4