Keygen

Submitted by @ezekg
# frozen_string_literal: true

source 'https://rubygems.org'
ruby '3.2.2'

gem 'rails', '~> 7.0.7.1'
gem 'pg', '~> 1.3.4'
gem 'puma', '~> 6.4.0'
gem 'bcrypt', '~> 3.1.7'
gem 'rack', '~> 2.2.6.2'
gem 'rack-timeout', require: 'rack/timeout/base'
gem 'rack-attack', '~> 6.6'
gem 'rack-cors'
gem 'uri', '>= 0.12.2'

# Redis for caching and background jobs
gem 'redis', '~> 4.7.1'

# API migrations
gem 'request_migrations', '~> 1.1'

# API params
gem 'typed_params', '~> 1.1'

# JSON API serializers
gem 'json', '~> 2.3.0'
gem 'jsonapi-rails', '0.4.0'
gem 'oj'

# XML/HTML
gem 'nokogiri', '~> 1.15.4'
gem 'rails-html-sanitizer', '~> 1.4.4'
gem 'loofah', '~> 2.19.1'

# Billing and subscriptions
gem 'stripe', '~> 5.43'

# Authorization
gem 'action_policy', '~> 0.6.3'

# Cryptography
gem 'openssl', '~> 3.1.0'
gem 'ed25519'
gem 'jwt'

# 2FA/TOTP
gem 'rotp', '~> 6.2'

# Scopes and pagination
gem 'has_scope'
gem 'kaminari', '~> 1.2.0'

# Postgres/DB extensions
gem 'active_record_union'
gem 'active_record_distinct_on'
gem 'activerecord_where_assoc'

# Pattern matching
gem 'rails-pattern_matching'

# Background jobs
gem 'sidekiq', '~> 7.1.3'
gem 'sidekiq-unique-jobs', '~> 8.0.3'
gem 'sidekiq-cron', '~> 1.9.1'
gem 'sidekiq-cronitor', '~> 3.6.0'

# HTTP requests
gem 'httparty', '~> 0.21.0'

# State machine
gem 'aasm', '~> 5.0.3'

# Emails
gem 'sendgrid-ruby'
gem 'sendgrid-actionmailer'

# Email templating
gem 'sprockets', '~> 3.0'
gem 'premailer-rails'
gem 'haml-rails'
gem 'sass-rails'

# Logging
gem 'lograge'

# Dist
gem 'aws-sdk-s3', '~> 1'
gem 'semverse'

group :production do
  # Monitoring/APM
  gem 'barnes'

  unless ENV.key?('NO_RAILS_AUTOSCALE')
    gem 'rails_autoscale_agent'
  end

  # Dyno management
  gem 'whacamole'
end

group :development, :test do
  gem 'byebug', platform: :mri
  gem 'dotenv-rails'
  gem 'timecop', '~> 0.9.5'
  gem 'bullet', '~> 7.0.1'
  gem 'parallel_tests', '~> 4.2.1'
  gem 'cuke_modeler', '~> 3.19' # for running `parallel_test --group-by scenarios`
  gem 'faker', '~> 2.20.0'
end

group :development do
  gem 'listen', '>= 3.8.0'
  gem 'tracer'
end

group :test do
  gem 'stripe-ruby-mock', github: 'stripe-ruby-mock/stripe-ruby-mock', ref: '6ceea9679bb573cb8bc6830f1bdf670b220a9859', require: 'stripe_mock'
  gem 'cucumber-rails', '~> 2.5', require: false
  gem 'rspec-rails', '~> 6.0.1'
  gem 'rspec-expectations', '~> 3.12.1'
  gem 'factory_bot_rails', '~> 6.2'
  gem 'database_cleaner', '~> 2.0'
  gem 'webmock', '~> 3.14.0'
  gem 'elif', '~> 0.1.0'
end