# frozen_string_literal: true

source 'https://rubygems.org'

# Match ruby version in .ruby-version
ruby File.read('.ruby-version')

gem 'rails', '~> 7.2.0'

# Keeping old sprockets
# https://github.com/rails/sprockets-rails/issues/444#issuecomment-637817050
gem "sprockets", "<4"

gem 'bundler', '>= 2.4.22'

gem 'coffee-rails'
gem 'haml'
gem 'sassc-rails'

# API data
gem 'jsonapi-resources'
gem 'jsonapi-swagger'
gem 'rswag-api'
gem 'rswag-ui'

# CSS framework
gem "bootstrap", ">= 5.0.0"
gem 'material-sass', '4.1.1'

# Icons used by bootstrap/material-sass
gem 'material_icons'

# icons
gem 'font-awesome-sass'

gem 'terser'

gem 'oj' # Speeds up json

# planting and harvest predictions
# based on median values for the crop
gem 'active_median'
gem 'active_record_union'

gem 'flickraw'
gem 'jquery-rails'
gem 'jquery-ui-rails', github: 'jquery-ui-rails/jquery-ui-rails', tag: 'v7.0.0' # See https://github.com/jquery-ui-rails/jquery-ui-rails/issues/146

gem 'cancancan'                    # for checking member privileges
gem 'csv_shaper'                   # CSV export
gem 'gibbon', '~>1.2.0'            # for Mailchimp newsletter subscriptions

# Maps
gem 'leaflet-rails', '>= 1.9.2'
gem 'rails-assets-leaflet.markercluster', source: 'https://rails-assets.org'

gem 'pg'
gem 'ruby-units'                   # for unit conversion
gem 'unicorn'                      # http server

gem "comfortable_mexican_sofa", git: "https://github.com/restarone/comfortable-mexican-sofa.git"

gem 'active_utils'
gem 'sidekiq'

# Markdown formatting for updates etc
gem 'bluecloth'

# Pagination
gem 'will_paginate'
gem 'will_paginate-bootstrap-style'

# user signup/login/etc
gem 'devise'

# nicely formatted URLs
gem 'friendly_id'

# validates URLs
gem "validate_url"

# gravatars
gem 'gravatar-ultimate'

# For geolocation
gem 'geocoder'

# For easy calendar selection
gem 'bootstrap-datepicker-rails'

# DRY-er easier bootstrap 4 forms
gem "bootstrap_form", ">= 4.5.0"

# For connecting to other services (eg Flickr)
gem 'omniauth', '~> 1.3'
gem 'omniauth-flickr', '>= 0.0.15'

# Pretty charts
gem "chartkick"

# clever elastic search
gem 'elasticsearch', '~> 7.0.0'
gem 'searchkick'

gem "hashie", ">= 3.5.3"

gem 'rake', '>= 10.0.0'

# locale based flash notices for controllers
gem "responders"

# allows soft delete. Used for members.
gem 'discard', '>= 1.2'

gem 'xmlrpc' # fixes rake error - can be removed if not needed later

gem 'puma'

gem 'rack-attack'

gem 'loofah', '>= 2.19.1'
gem 'rack-protection', '>= 2.0.1'

# Member to member messaging system
gem 'mailboxer', '>= 0.15.1'

gem 'faraday'

gem 'rack-cors'

gem 'icalendar'

# for signups as requested by email service
gem 'recaptcha'

# External APIs for data
gem "gbifrb"

gem "msgpack"

# Pinned due to RAILS_ENV=production bundle exec rake assets:precompile failing with ArgumentError: wrong number of arguments (given 1, expected 0) (ArgumentError)
# /tmp/build_8301a541/vendor/bundle/ruby/3.3.0/gems/connection_pool-3.0.2/lib/connection_pool.rb:48:in `initialize'
# /tmp/build_8301a541/vendor/bundle/ruby/3.3.0/gems/activesupport-7.2.3/lib/active_support/cache/mem_cache_store.rb:63:in `new'
gem "connection_pool", "< 3"

group :production do
  gem 'bonsai-elasticsearch-rails' # Integration with Bonsa-Elasticsearch on heroku
  gem 'dalli'
  gem 'memcachier'
  gem 'rails_12factor' # supresses heroku plugin injection

  gem 'scout_apm' # monitoring
end

group :development do
  gem 'better_errors'
  gem 'letter_opener'
  gem 'listen'
end

group :development, :test do
  gem 'bullet'                  # performance tuning by finding unnecesary queries
  gem 'byebug'                  # debugging
  gem 'capybara'                # integration tests
  gem 'capybara-email'          # integration tests for email
  gem 'capybara-screenshot'     # for test debugging
  gem 'database_cleaner'
  gem 'factory_bot_rails'       # for creating test data
  gem 'faker'
  gem 'haml-rails'              # HTML templating language
  gem 'pry'
  gem 'query_diet'
  gem 'rspec-activemodel-mocks'
  gem 'rspec-rails'             # unit testing framework
  gem 'rswag-specs'
  gem 'rubocop-capybara'
  gem 'rubocop-factory_bot'
  gem 'rubocop-rails'
  gem 'rubocop-rake'
  gem 'rubocop-rspec'
  gem 'rubocop-rspec_rails'
  gem 'webrat'                  # provides HTML matchers for view tests

  gem 'crowdin-cli'             # for translations
  gem 'dotenv-rails'

  # cli utils
  gem 'haml_lint', '>= 0.25.1', require: false # Checks haml files for goodness
  gem 'i18n-tasks', require: false # adds tests for finding missing and unused translations
  gem 'rspectre', require: false # finds unused code in specs
  gem 'rubocop', require: false
end

group :test do
  gem 'axe-core-capybara'
  gem 'axe-core-rspec'
  gem "percy-capybara", "~> 5.0.0"
  gem 'rails-controller-testing'
  gem "rspec-rebound"
  gem 'selenium-webdriver'
  gem 'timecop'
  gem 'vcr'
end

gem "i18n_data", "~> 1.1"

gem "paper_trail", "~> 17.0"

gem 'aws-sdk-s3', '~> 1', '>= 1.114.0'
gem 'sitemap_generator'
