openaustralia/planningalerts

View on GitHub
Gemfile

Summary

Maintainability
Test Coverage
# frozen_string_literal: true

source "https://rubygems.org"

gem "bootsnap", require: false
gem "rails", "~> 7.0.8.1"
gem "rake"

gem "pg"

# Supports postgis so we can magically do spatial queries
gem "activerecord-postgis-adapter"

# API
gem "dalli"

# For throttling API requests
gem "rack-attack"

# Admin interface
gem "administrate"

# Logging in and such things
gem "devise", "~> 4.2" # Pin to a particular major version to get deprecation warnings
gem "pundit", "~> 2.2"

# To handle different kinds of view templates
gem "haml"
gem "rabl"

# Extra validation
gem "validates_email_format_of"
gem "validate_url"

# Background queue uses sidekiq
# TODO: Upgrade to sidekiq 7.0
gem "sidekiq", "<7"
# Run cron jobs alongside sidekiq. Only use this for jobs that need
# to run once across a cluster. We're still using "regular" cron
# for jobs that need to run on every machine
gem "sidekiq-cron"

# For accessing external urls
# TODO: Just pick one and use it for everything
gem "httparty"
gem "rest-client"

# Pagination
gem "kaminari"

# Geocoding and location stuff
gem "geokit"
# rexml is used by geokit but is no longer by default in ruby 3.1
gem "rexml"

# CSS related stuff
gem "autoprefixer-rails"
gem "bourbon"
gem "compass-blueprint"
# compass is no longer maintained. TODO: Move away from compass
# We can't upgrade to ruby 3.2 until we get rid of compass
gem "compass-rails", "3.1.0"
gem "sass-rails"
gem "susy"
gem "tailwindcss-rails", "~> 2.0"

# Icons
gem "foundation-icons-sass-rails"

# Date picker with no dependencies
gem "flatpickr"

# Sanitizing and manipulating user input
gem "rails_autolink"
gem "sanitize"

# Startup setup and environment
gem "dotenv-rails"
gem "foreman"

# Figure out who is likely to be human
gem "recaptcha", require: "recaptcha/rails"

# Site search
gem "searchkick"

# Used to parse different external application feeds
gem "atdis"
gem "nokogiri"

# For making forms a little easier
gem "formtastic"

# Speed up json parsing
# TODO: Double check where this is being used
gem "oj"

# For logging API calls to elasticsearch
# We can't upgrade elasticsearch gem until we've upgraded the server
# TODO: Fix this
gem "elasticsearch", "~> 7"
gem "ruby-progressbar"
gem "typhoeus"

# For conditional counter caches (used to count visible comments)
gem "counter_culture"

# Make it easier for people using the API by setting CORS headers
gem "rack-cors"

# For type checking
gem "sorbet-runtime"

# For automatic creation of github issues when scrapers are broken
gem "octokit"

# For rendering json output
gem "jb"

# For sending notifications to Slack about bounced emails to authorities
gem "slack-notifier"

# Provide a url endpoint that checks the health of the app
# (used by load balancer)
gem "health_check"

# For rendering markdown in ATDIS specification
gem "redcarpet"

# For accessing the Github GraphQL API which we're using for accessing projects
# which we're using for managing the list of broken scrapers
gem "graphql-client"

# For feature flags
gem "flipper"
gem "flipper-redis"
gem "flipper-ui"

# Testing this out for application performance monitoring
gem "skylight"

# For making more reusable and testable components
gem "view_component"

# For uploading sitemaps to S3 and uploading attachments to S3 using active storage
gem "aws-sdk-s3", "~> 1"

# For generating sitemaps for search engines
gem "sitemap_generator"

# For accessing wikidata
gem "sparql-client"
gem "wikidata"

# For reading in authority boundary data
gem "rgeo-shapefile"
gem "rubyzip"

# Using this webserver for development and production
gem "puma"

group :test do
  gem "capybara"
  # For some reason upgrading to email_spec 2.2.1 completely breaks things for us
  # TODO: Figure out what's going on fix this properly
  gem "email_spec", "2.2.0"
  gem "factory_bot"
  gem "factory_bot_rails"
  gem "rails-controller-testing"
  gem "rspec-rails"
  gem "selenium-webdriver"
  gem "simplecov", require: false
  gem "timecop"
  gem "vcr"
  gem "webdrivers"
  gem "webmock"
  # FIXME: stop using `mock_model` and remove this
  gem "rspec-activemodel-mocks"
  # For automated accessibility testing
  gem "axe-core-capybara"
  gem "axe-core-rspec"
  # For visual differencing using percy.io
  gem "percy-capybara"
end

group :development do
  # To profile code in development
  gem "rack-mini-profiler"

  # For static type checking
  gem "sorbet"
  gem "spoom"
  gem "tapioca"

  # For guard and associated bits
  gem "growl"
  gem "guard"
  gem "guard-rspec"
  gem "guard-rubocop"
  gem "rb-fsevent"
  gem "rb-inotify", require: false

  gem "rails_live_reload"

  # For a better error page in development
  gem "better_errors"
  gem "binding_of_caller"

  # For deployment
  gem "capistrano", require: false
  # For puma 6 support we're using the "beta" version
  gem "capistrano3-puma", ">= 6.0.0.beta.1", require: false
  gem "capistrano-aws"
  gem "capistrano-bundler", require: false
  gem "capistrano-rails", require: false
  gem "capistrano-rvm", require: false

  # Help with code quality
  gem "brakeman"
  gem "erb_lint", require: false
  gem "haml_lint", require: false
  gem "rubocop", require: false
  gem "rubocop-rails", require: false
  gem "rubocop-rake", require: false
  gem "rubocop-rspec", require: false
  gem "rubocop-sorbet", require: false

  # To help identify database issues
  gem "active_record_doctor"
end

group :production do
  # Reporting exceptions
  gem "honeybadger"

  # Javascript runtime (required for precompiling assets in production)
  gem "mini_racer"
  gem "uglifier"
end