9dd59df699
peek-redis resets its counters at the start of an ActionController notification (`start_processing.action_controller`), which causes it to miss some Redis queries that precede it, such as the database load balancer and Rack Attack queries. This produces inconsistencies in the performance bar between the number of calls and their durations with the actual calls in the detailed view. We fix this by getting rid of peek-redis in favor of consolidating all logic into the `RedisDetailed` view, which tracks Redis queries using `RequestStore`. This has the nice property of removing thread-specific counters as well. Closes https://gitlab.com/gitlab-org/gitlab-ce/issues/64707
448 lines
10 KiB
Ruby
448 lines
10 KiB
Ruby
source 'https://rubygems.org'
|
|
|
|
gem 'rails', '5.2.3'
|
|
|
|
# Improves copy-on-write performance for MRI
|
|
gem 'nakayoshi_fork', '~> 0.0.4'
|
|
|
|
# Responders respond_to and respond_with
|
|
gem 'responders', '~> 2.0'
|
|
|
|
gem 'sprockets', '~> 3.7.0'
|
|
|
|
# Default values for AR models
|
|
gem 'default_value_for', '~> 3.2.0'
|
|
|
|
# Supported DBs
|
|
gem 'mysql2', '~> 0.4.10', group: :mysql
|
|
gem 'pg', '~> 1.1', group: :postgres
|
|
|
|
gem 'rugged', '~> 0.28'
|
|
gem 'grape-path-helpers', '~> 1.1'
|
|
|
|
gem 'faraday', '~> 0.12'
|
|
|
|
# Authentication libraries
|
|
gem 'devise', '~> 4.6'
|
|
gem 'doorkeeper', '~> 4.3'
|
|
gem 'doorkeeper-openid_connect', '~> 1.5'
|
|
gem 'omniauth', '~> 1.8'
|
|
gem 'omniauth-auth0', '~> 2.0.0'
|
|
gem 'omniauth-azure-oauth2', '~> 0.0.9'
|
|
gem 'omniauth-cas3', '~> 1.1.4'
|
|
gem 'omniauth-facebook', '~> 4.0.0'
|
|
gem 'omniauth-github', '~> 1.3'
|
|
gem 'omniauth-gitlab', '~> 1.0.2'
|
|
gem 'omniauth-google-oauth2', '~> 0.6.0'
|
|
gem 'omniauth-kerberos', '~> 0.3.0', group: :kerberos
|
|
gem 'omniauth-oauth2-generic', '~> 0.2.2'
|
|
gem 'omniauth-saml', '~> 1.10'
|
|
gem 'omniauth-shibboleth', '~> 1.3.0'
|
|
gem 'omniauth-twitter', '~> 1.4'
|
|
gem 'omniauth_crowd', '~> 2.2.0'
|
|
gem 'omniauth-authentiq', '~> 0.3.3'
|
|
gem 'omniauth_openid_connect', '~> 0.3.1'
|
|
gem "omniauth-ultraauth", '~> 0.0.2'
|
|
gem 'omniauth-salesforce', '~> 1.0.5'
|
|
gem 'rack-oauth2', '~> 1.9.3'
|
|
gem 'jwt', '~> 2.1.0'
|
|
|
|
# Spam and anti-bot protection
|
|
gem 'recaptcha', '~> 4.11', require: 'recaptcha/rails'
|
|
gem 'akismet', '~> 2.0'
|
|
|
|
# Two-factor authentication
|
|
gem 'devise-two-factor', '~> 3.0.0'
|
|
gem 'rqrcode-rails3', '~> 0.1.7'
|
|
gem 'attr_encrypted', '~> 3.1.0'
|
|
gem 'u2f', '~> 0.2.1'
|
|
|
|
# GitLab Pages
|
|
gem 'validates_hostname', '~> 1.0.6'
|
|
gem 'rubyzip', '~> 1.2.2', require: 'zip'
|
|
# GitLab Pages letsencrypt support
|
|
gem 'acme-client', '~> 2.0.2'
|
|
|
|
# Browser detection
|
|
gem 'browser', '~> 2.5'
|
|
|
|
# GPG
|
|
gem 'gpgme', '~> 2.0.18'
|
|
|
|
# LDAP Auth
|
|
# GitLab fork with several improvements to original library. For full list of changes
|
|
# see https://github.com/intridea/omniauth-ldap/compare/master...gitlabhq:master
|
|
gem 'gitlab_omniauth-ldap', '~> 2.1.1', require: 'omniauth-ldap'
|
|
gem 'net-ldap'
|
|
|
|
# API
|
|
gem 'grape', '~> 1.1.0'
|
|
gem 'grape-entity', '~> 0.7.1'
|
|
gem 'rack-cors', '~> 1.0.0', require: 'rack/cors'
|
|
|
|
# GraphQL API
|
|
gem 'graphql', '~> 1.8.0'
|
|
gem 'graphiql-rails', '~> 1.4.10'
|
|
gem 'apollo_upload_server', '~> 2.0.0.beta3'
|
|
gem 'graphql-docs', '~> 1.6.0', group: [:development, :test]
|
|
|
|
# Disable strong_params so that Mash does not respond to :permitted?
|
|
gem 'hashie-forbidden_attributes'
|
|
|
|
# Pagination
|
|
gem 'kaminari', '~> 1.0'
|
|
|
|
# HAML
|
|
gem 'hamlit', '~> 2.8.8'
|
|
|
|
# Files attachments
|
|
gem 'carrierwave', '~> 1.3'
|
|
gem 'mini_magick'
|
|
|
|
# for backups
|
|
gem 'fog-aws', '~> 3.5'
|
|
# Locked until fog-google resolves https://github.com/fog/fog-google/issues/421.
|
|
# Also see config/initializers/fog_core_patch.rb.
|
|
gem 'fog-core', '= 2.1.0'
|
|
gem 'fog-google', '~> 1.8'
|
|
gem 'fog-local', '~> 0.6'
|
|
gem 'fog-openstack', '~> 1.0'
|
|
gem 'fog-rackspace', '~> 0.1.1'
|
|
gem 'fog-aliyun', '~> 0.3'
|
|
|
|
# for Google storage
|
|
gem 'google-api-client', '~> 0.23'
|
|
|
|
# for aws storage
|
|
gem 'unf', '~> 0.1.4'
|
|
|
|
# Seed data
|
|
gem 'seed-fu', '~> 2.3.7'
|
|
|
|
# Markdown and HTML processing
|
|
gem 'html-pipeline', '~> 2.8'
|
|
gem 'deckar01-task_list', '2.2.0'
|
|
gem 'gitlab-markup', '~> 1.7.0'
|
|
gem 'github-markup', '~> 1.7.0', require: 'github/markup'
|
|
gem 'commonmarker', '~> 0.17'
|
|
gem 'RedCloth', '~> 4.3.2'
|
|
gem 'rdoc', '~> 6.0'
|
|
gem 'org-ruby', '~> 0.9.12'
|
|
gem 'creole', '~> 0.5.0'
|
|
gem 'wikicloth', '0.8.1'
|
|
gem 'asciidoctor', '~> 2.0.10'
|
|
gem 'asciidoctor-include-ext', '~> 0.3.1', require: false
|
|
gem 'asciidoctor-plantuml', '0.0.9'
|
|
gem 'rouge', '~> 3.5'
|
|
gem 'truncato', '~> 0.7.11'
|
|
gem 'bootstrap_form', '~> 4.2.0'
|
|
gem 'nokogiri', '~> 1.10.3'
|
|
gem 'escape_utils', '~> 1.1'
|
|
|
|
# Calendar rendering
|
|
gem 'icalendar'
|
|
|
|
# Diffs
|
|
gem 'diffy', '~> 3.1.0'
|
|
|
|
# Application server
|
|
gem 'rack', '~> 2.0.7'
|
|
|
|
group :unicorn do
|
|
gem 'unicorn', '~> 5.4.1'
|
|
gem 'unicorn-worker-killer', '~> 0.4.4'
|
|
end
|
|
|
|
group :puma do
|
|
gem 'puma', '~> 3.12', require: false
|
|
gem 'puma_worker_killer', require: false
|
|
gem 'rack-timeout', require: false
|
|
end
|
|
|
|
# State machine
|
|
gem 'state_machines-activerecord', '~> 0.5.1'
|
|
|
|
# Issue tags
|
|
gem 'acts-as-taggable-on', '~> 6.0'
|
|
|
|
# Background jobs
|
|
gem 'sidekiq', '~> 5.2.7'
|
|
gem 'sidekiq-cron', '~> 1.0'
|
|
gem 'redis-namespace', '~> 1.6.0'
|
|
gem 'gitlab-sidekiq-fetcher', '~> 0.4.0', require: 'sidekiq-reliable-fetch'
|
|
|
|
# Cron Parser
|
|
gem 'fugit', '~> 1.2.1'
|
|
|
|
# HTTP requests
|
|
gem 'httparty', '~> 0.16.4'
|
|
|
|
# Colored output to console
|
|
gem 'rainbow', '~> 3.0'
|
|
|
|
# Progress bar
|
|
gem 'ruby-progressbar'
|
|
|
|
# GitLab settings
|
|
gem 'settingslogic', '~> 2.0.9'
|
|
|
|
# Linear-time regex library for untrusted regular expressions
|
|
gem 're2', '~> 1.1.1'
|
|
|
|
# Misc
|
|
|
|
gem 'version_sorter', '~> 2.2.4'
|
|
|
|
# Export Ruby Regex to Javascript
|
|
gem 'js_regex', '~> 3.1'
|
|
|
|
# User agent parsing
|
|
gem 'device_detector'
|
|
|
|
# Cache
|
|
gem 'redis-rails', '~> 5.0.2'
|
|
|
|
# Redis
|
|
gem 'redis', '~> 3.2'
|
|
gem 'connection_pool', '~> 2.0'
|
|
|
|
# Discord integration
|
|
gem 'discordrb-webhooks-blackst0ne', '~> 3.3', require: false
|
|
|
|
# HipChat integration
|
|
gem 'hipchat', '~> 1.5.0'
|
|
|
|
# Jira integration
|
|
gem 'jira-ruby', '~> 1.4'
|
|
|
|
# Flowdock integration
|
|
gem 'flowdock', '~> 0.7'
|
|
|
|
# Slack integration
|
|
gem 'slack-notifier', '~> 1.5.1'
|
|
|
|
# Hangouts Chat integration
|
|
gem 'hangouts-chat', '~> 0.0.5'
|
|
|
|
# Asana integration
|
|
gem 'asana', '~> 0.8.1'
|
|
|
|
# FogBugz integration
|
|
gem 'ruby-fogbugz', '~> 0.2.1'
|
|
|
|
# Kubernetes integration
|
|
gem 'kubeclient', '~> 4.2.2'
|
|
|
|
# Sanitize user input
|
|
gem 'sanitize', '~> 4.6'
|
|
gem 'babosa', '~> 1.0.2'
|
|
|
|
# Sanitizes SVG input
|
|
gem 'loofah', '~> 2.2'
|
|
|
|
# Working with license
|
|
gem 'licensee', '~> 8.9'
|
|
|
|
# Protect against bruteforcing
|
|
gem 'rack-attack', '~> 4.4.1'
|
|
|
|
# Ace editor
|
|
gem 'ace-rails-ap', '~> 4.1.0'
|
|
|
|
# Detect and convert string character encoding
|
|
gem 'charlock_holmes', '~> 0.7.5'
|
|
|
|
# Detect mime content type from content
|
|
gem 'mimemagic', '~> 0.3.2'
|
|
|
|
# Faster blank
|
|
gem 'fast_blank'
|
|
|
|
# Parse time & duration
|
|
gem 'chronic', '~> 0.10.2'
|
|
gem 'chronic_duration', '~> 0.10.6'
|
|
|
|
gem 'webpack-rails', '~> 0.9.10'
|
|
gem 'rack-proxy', '~> 0.6.0'
|
|
|
|
gem 'sassc-rails', '~> 2.1.0'
|
|
gem 'uglifier', '~> 2.7.2'
|
|
|
|
gem 'addressable', '~> 2.5.2'
|
|
gem 'font-awesome-rails', '~> 4.7'
|
|
gem 'gemojione', '~> 3.3'
|
|
gem 'gon', '~> 6.2'
|
|
gem 'request_store', '~> 1.3'
|
|
gem 'virtus', '~> 1.0.1'
|
|
gem 'base32', '~> 0.3.0'
|
|
|
|
# Sentry integration
|
|
gem 'sentry-raven', '~> 2.9'
|
|
|
|
gem 'premailer-rails', '~> 1.9.7'
|
|
|
|
# LabKit: Tracing and Correlation
|
|
gem 'gitlab-labkit', '~> 0.3.0'
|
|
|
|
# I18n
|
|
gem 'ruby_parser', '~> 3.8', require: false
|
|
gem 'rails-i18n', '~> 5.1'
|
|
gem 'gettext_i18n_rails', '~> 1.8.0'
|
|
gem 'gettext_i18n_rails_js', '~> 1.3'
|
|
gem 'gettext', '~> 3.2.2', require: false, group: :development
|
|
|
|
gem 'batch-loader', '~> 1.4.0'
|
|
|
|
# Perf bar
|
|
gem 'peek', '~> 1.0.1'
|
|
gem 'peek-gc', '~> 0.0.2'
|
|
gem 'peek-mysql2', '~> 1.2.0', group: :mysql
|
|
gem 'peek-pg', '~> 1.3.0', group: :postgres
|
|
gem 'peek-rblineprof', '~> 0.2.0'
|
|
|
|
# Memory benchmarks
|
|
gem 'derailed_benchmarks', require: false
|
|
|
|
# Metrics
|
|
group :metrics do
|
|
gem 'method_source', '~> 0.8', require: false
|
|
gem 'influxdb', '~> 0.2', require: false
|
|
|
|
# Prometheus
|
|
gem 'prometheus-client-mmap', '~> 0.9.8'
|
|
gem 'raindrops', '~> 0.18'
|
|
end
|
|
|
|
group :development do
|
|
gem 'foreman', '~> 0.84.0'
|
|
gem 'brakeman', '~> 4.2', require: false
|
|
|
|
gem 'letter_opener_web', '~> 1.3.4'
|
|
gem 'rblineprof', '~> 0.3.6', platform: :mri, require: false
|
|
|
|
# Better errors handler
|
|
gem 'better_errors', '~> 2.5.0'
|
|
gem 'binding_of_caller', '~> 0.8.0'
|
|
|
|
# thin instead webrick
|
|
gem 'thin', '~> 1.7.0'
|
|
end
|
|
|
|
group :development, :test do
|
|
gem 'bootsnap', '~> 1.4'
|
|
gem 'bullet', '~> 5.5.0', require: !!ENV['ENABLE_BULLET']
|
|
gem 'pry-byebug', '~> 3.5.1', platform: :mri
|
|
gem 'pry-rails', '~> 0.3.4'
|
|
|
|
gem 'awesome_print', require: false
|
|
gem 'fuubar', '~> 2.2.0'
|
|
|
|
gem 'database_cleaner', '~> 1.7.0'
|
|
gem 'factory_bot_rails', '~> 4.8.2'
|
|
gem 'rspec-rails', '~> 3.8.0'
|
|
gem 'rspec-retry', '~> 0.6.1'
|
|
gem 'rspec_profiling', '~> 0.0.5'
|
|
gem 'rspec-set', '~> 0.1.3'
|
|
gem 'rspec-parameterized', require: false
|
|
|
|
# Prevent occasions where minitest is not bundled in packaged versions of ruby (see #3826)
|
|
gem 'minitest', '~> 5.11.0'
|
|
|
|
# Generate Fake data
|
|
gem 'ffaker', '~> 2.10'
|
|
|
|
gem 'capybara', '~> 3.22.0'
|
|
gem 'capybara-screenshot', '~> 1.0.22'
|
|
gem 'selenium-webdriver', '~> 3.141'
|
|
|
|
gem 'spring', '~> 2.0.0'
|
|
gem 'spring-commands-rspec', '~> 1.0.4'
|
|
|
|
gem 'gitlab-styles', '~> 2.7', require: false
|
|
# Pin these dependencies, otherwise a new rule could break the CI pipelines
|
|
gem 'rubocop', '~> 0.69.0'
|
|
gem 'rubocop-performance', '~> 1.1.0'
|
|
gem 'rubocop-rspec', '~> 1.22.1'
|
|
|
|
gem 'scss_lint', '~> 0.56.0', require: false
|
|
gem 'haml_lint', '~> 0.31.0', require: false
|
|
gem 'simplecov', '~> 0.16.1', require: false
|
|
gem 'bundler-audit', '~> 0.5.0', require: false
|
|
gem 'mdl', '~> 0.5.0', require: false
|
|
|
|
gem 'benchmark-ips', '~> 2.3.0', require: false
|
|
|
|
gem 'license_finder', '~> 5.4', require: false
|
|
gem 'knapsack', '~> 1.17'
|
|
|
|
gem 'activerecord_sane_schema_dumper', '1.0'
|
|
|
|
gem 'stackprof', '~> 0.2.10', require: false
|
|
|
|
gem 'simple_po_parser', '~> 1.1.2', require: false
|
|
|
|
gem 'timecop', '~> 0.8.0'
|
|
end
|
|
|
|
group :test do
|
|
gem 'shoulda-matchers', '~> 4.0.1', require: false
|
|
gem 'email_spec', '~> 2.2.0'
|
|
gem 'json-schema', '~> 2.8.0'
|
|
gem 'webmock', '~> 3.5.1'
|
|
gem 'rails-controller-testing'
|
|
gem 'sham_rack', '~> 1.3.6'
|
|
gem 'concurrent-ruby', '~> 1.1'
|
|
gem 'test-prof', '~> 0.2.5'
|
|
gem 'rspec_junit_formatter'
|
|
end
|
|
|
|
gem 'octokit', '~> 4.9'
|
|
|
|
gem 'mail_room', '~> 0.9.1'
|
|
|
|
gem 'email_reply_trimmer', '~> 0.1'
|
|
gem 'html2text'
|
|
|
|
gem 'ruby-prof', '~> 0.17.0'
|
|
gem 'rbtrace', '~> 0.4', require: false
|
|
gem 'memory_profiler', '~> 0.9', require: false
|
|
gem 'benchmark-memory', '~> 0.1', require: false
|
|
gem 'activerecord-explain-analyze', '~> 0.1', require: false
|
|
|
|
# OAuth
|
|
gem 'oauth2', '~> 1.4'
|
|
|
|
# Health check
|
|
gem 'health_check', '~> 2.6.0'
|
|
|
|
# System information
|
|
gem 'vmstat', '~> 2.3.0'
|
|
gem 'sys-filesystem', '~> 1.1.6'
|
|
|
|
# SSH host key support
|
|
gem 'net-ssh', '~> 5.2'
|
|
gem 'sshkey', '~> 2.0'
|
|
|
|
# Required for ED25519 SSH host key support
|
|
group :ed25519 do
|
|
gem 'ed25519', '~> 1.2'
|
|
gem 'bcrypt_pbkdf', '~> 1.0'
|
|
end
|
|
|
|
# Gitaly GRPC client
|
|
gem 'gitaly-proto', '~> 1.37.0', require: 'gitaly'
|
|
|
|
gem 'grpc', '~> 1.19.0'
|
|
|
|
gem 'google-protobuf', '~> 3.7.1'
|
|
|
|
gem 'toml-rb', '~> 1.0.0', require: false
|
|
|
|
# Feature toggles
|
|
gem 'flipper', '~> 0.13.0'
|
|
gem 'flipper-active_record', '~> 0.13.0'
|
|
gem 'flipper-active_support_cache_store', '~> 0.13.0'
|
|
|
|
# Structured logging
|
|
gem 'lograge', '~> 0.5'
|
|
gem 'grape_logging', '~> 1.7'
|