# frozen_string_literal: true

source "https://rubygems.org"
git_source(:github) { |repo| "https://github.com/#{repo}.git" }

ruby File.read(".ruby-version").strip

# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
gem "rails", "~> 7.0"

# Use the Puma web server [https://github.com/puma/puma]
gem "puma", "~> 6.3"

# for making kick-ass http queries
gem "httpsensible", "~> 0.1"

# Build JSON APIs with ease [https://github.com/rails/jbuilder]
gem "jbuilder", "~> 2.11"

# Use Redis adapter to run Action Cable in production
gem "redis", "~> 5.0"

# Use hiredis to get better performance than the "redis" gem
gem "hiredis", "~> 0.6"

# better loggin'
gem "lograge", "~> 0.12"

# provides middleware to make OpenAPI parsing simpler
gem "openapi_first", "~> 0.20"

# For Honeycomb.io
gem "opentelemetry-sdk", "~> 1.2"
gem "opentelemetry-exporter-otlp", "~> 0.25"
gem "opentelemetry-semantic_conventions", "~> 1.10"

gem "opentelemetry-instrumentation-rack", "~> 0.23"
gem "opentelemetry-instrumentation-rails", "~> 0.27"
gem "opentelemetry-instrumentation-concurrent_ruby", "~> 0.21"

gem "opentelemetry-instrumentation-net_http", "~> 0.22"

gem "opentelemetry-instrumentation-active_job", "~> 0.5"
gem "opentelemetry-instrumentation-redis", "~> 0.25"
gem "opentelemetry-instrumentation-sidekiq", "~> 0.23"

# massively improved JSON parsing
gem "oj", "~> 3.16"

# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]

# Reduces boot times through caching; required in config/boot.rb
gem "bootsnap", require: false

gem "safety_dance", "~> 1.0"

# Use Sidekiq for the jobs queue
gem "sidekiq", "~> 7.1"

# sends logs to Slack
gem "slack_webhook_logger", "~> 0.5"

group :development, :test do
  # better debug output with `ap`
  gem "amazing_print"

  # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
  gem "debug", platforms: [:mri, :mingw, :x64_mingw], require: false

  gem "faker", "~> 2.20"
  gem "rubocop", require: false
  gem "rubocop-standard", require: false
end

group :development do
  gem "dotenv-rails"

  gem "foreman", "~> 0.87"

  gem "licensed", "~> 4.4"

  gem "ruby-lsp", "~> 0.6", require: false

  gem "spoom"
  gem "sorbet"
  gem "tapioca", require: false
  gem "webrick"
end
gem "sorbet-runtime"

group :test do
  gem "simplecov", "~> 0.18", require: false
  gem "simplecov-console", "~> 0.7", require: false

  # track down flakey tests
  gem "minitest-bisect"

  # mocking lib
  gem "mocha"

  # allow easier middleware testing
  gem "rack-test", "~> 2.0"

  # navigate website
  gem "selenium-webdriver"

  # jump around through time
  gem "timecop", "~> 0.9"

  # prevents real http requests
  gem "webmock", "~> 3.8"
end

group :ci do
  gem "brakeman", "~> 5.3"
  gem "bundle-audit", "~> 0.1"
end