Skip to content

Instantly share code, notes, and snippets.

@blahutka
Created May 11, 2023 14:55
Show Gist options
  • Save blahutka/354cdbc25249f3f44b4cf81c4b8e24ec to your computer and use it in GitHub Desktop.
Save blahutka/354cdbc25249f3f44b4cf81c4b8e24ec to your computer and use it in GitHub Desktop.
source 'https://rubygems.org'
# add version numbers with the pessimistic constraint operator to all gems in your Gemfile
# https://github.com/joonty/pessimize
# change also in semaphore.yml and .ruby-version
# before upgrading check if SemaphoreCI supports it already:
# https://docs.semaphoreci.com/reference/semaphore-changelog/
# To prevent forged authentication requests, we need to also include CSRF protection. If you're using OmniAuth with Rails, include:
# disabling for now - we would need to change facebook login to post, but there is client (JS)
# flow and server-side flow and there are differnces in hybrid apps... need to be tested well
# gem 'omniauth-rails_csrf_protection', '~> 0.1'
ruby '3.1.2'
##
# RAILS CORE
gem 'rails', '6.1.7'
gem 'bootsnap', '1.7.3', require: false
gem 'net-smtp', require: false # after Rails 7 wont be needed some? https://stackoverflow.com/questions/70500220/rails-7-ruby-3-1-loaderror-cannot-load-such-file-net-smtp
gem 'net-pop', require: false
gem 'net-imap', require: false
gem 'nokogiri', '1.13.10', group: [:web, :test]
gem 'prime', require: false # after ruby 3.1 upgrade https://bugs.ruby-lang.org/issues/18400 - resque need that?
##
# SERVERS
gem 'puma', '~> 5.6.5', group: [:web, :test]
gem 'sinatra', '2.2.3', require: false # background
gem "webrick", "~> 1.7", require: false # when running rake db:setup on semaphore LoadError: cannot load such file -- webrick: https://github.com/jekyll/jekyll/issues/8523
gem 'pg', '~> 1.2.3'
gem 'pg_search'
gem 'redis', '4.7.1'
gem 'resque', '~> 1.27.0', require: 'resque/server' # after upgrade to version 2, remove monkey patch config/initializers/resque_patch.rb
gem 'resque-logger', '~> 0.2.0'
gem 'resque_mailer', '~> 2.4.2'
gem 'resque-retry', '~> 1.5.0'
gem 'resque-scheduler', '~> 4.4.0', group: [:resque]
gem 'resque-pool', '~> 0.7.1', group: [:resque]
gem 'rack-attack', '6.5.0'
gem 'rack-timeout', '~> 0.6.0' # heroku
gem 'rack-cors', '~> 1.1.0', require: 'rack/cors'
gem 'rack-www', github: 'hlidacky/rack-www' # need to bump rack dependency...
gem 'dalli', '~> 3.2.3' # Memcached client for ruby
##
# SERVICES
gem 'aws-sdk-kms' # AWS Key Management Service
gem 'aws-sdk-s3', '~> 1.91.0' # AWS S3 Storage
gem 'aws-sdk-sns', '~> 1.9.0' # AWS Simple Notification Service
gem 'rollbar', '~> 3.3.0' # Error catching
gem 'appsignal', '~> 3.4', '>= 3.4.2' # Monitoring
gem 'mixpanel-ruby', '~> 2.2.0' # analytics
gem 'staccato', '~> 0.5.1', require: false, group: [:resque] # Google Analytics Measurement
gem 'fcm', '~> 0.0.6', require: false, group: [:resque] # Firebase Cloud Messaging
gem 'pusher', '~> 1.3.0', group: [:resque] # pusher.com
gem 'venice', '~> 0.5.0', require: false, group: [:resque] # iTunes in App purchase receipt verification
gem 'monza', '~> 1.3.2', require: false, group: [:resque] # iTunes Validate iTunes purchase receipts
gem 'cloudflare-rails', group: [:production, :staging] # CloudFlare configure for request.ip and request.remote_ip
gem 'imgix-rails', '~> 4.2.0' # imgix.com optimize and delivers assets
gem 'facebookbusiness', '0.12.0.1', require: false # API SDK. When upgrading the cassette need change version in URL (fixtures/vcr_cassettes/fb_audience_upload.yml) or find propere way to re-record the cassette:)
gem 'koala', '~> 3.0.0' # SDK for Facebook.
gem 'whereby-ruby', require: false # Whereby's HTTP API to create video rooms and conferences
##
# PAYMENTS
gem 'gopay-ruby', require: 'gopay', github: 'petrsigut/gopay-ruby', branch: 'remove-deprecated-uri-escape' # we are rescuing the underlying rest-client exception in update_payment_state and void_recurrence
#
# AUTHENTICATION & AUTHORIZATION, ENCRYPTION
gem 'cancancan', '~> 3.2.1' # Authorization solution
gem 'omniauth-identity', '~> 2.0.0' # Traditional username/password authentication. need older rack?
gem 'omniauth-auth0', '~> 3.0.0' # Auth0 platform https://auth0.com/docs/quickstart/webapp/rails/01-login
gem 'omniauth-facebook', '~> 8.0.0'# Facebook platform
gem 'omniauth-google-oauth2', '~> 1.1.1' # Google platform
gem 'omniauth-mojeid', github: 'petrsigut/omniauth-mojeid' # MojeId platform
gem 'googleauth'
gem 'openid_connect', '~> 1.4.2' # OpenID Connect Server & Client Library
gem 'ruby-openid', github: 'petrsigut/ruby-openid', branch: '2022-logging-problematic-nil-values'
gem 'jwt' # JSON Web Token implementation.
gem 'kms_encrypted' # Lockbox secure key management for Lockbox and attr_encrypted
gem 'lockbox' # Lockbox - Moder encryption for ROR
##
# TRANSLATION, LOCALIZATION
gem 'translation', '1.23' # translation.ido service plus management
gem 'rails-i18n', '6.0.0'
gem 'route_translator', '12.1.0' # routes translations
gem 'i18n-tasks', group: [:development, :test] # task for managing *.yml files
##
# ASSETS, IMAGES, PDF, UPLOADS
# # group [:assets] Gems used only for assets and not required in production environments by default.
gem 'rails_12factor', '~> 0.0.3', group: [:production, :staging] # logging aggregation and static assets serving in production
gem 'sprockets', '~> 4.0' # https://blog.heroku.com/rails-asset-pipeline-vulnerability
gem 'importmap-rails', github: 'hlidacky/importmap-rails', branch: 'upgrade-shim-to-1-5-17'
gem 'sass', '~> 3.7.4', group: [:assets]
gem 'sass-rails', '~> 6.0.0', group: [:assets]
gem 'sassc', '~> 2.4.0', group: [:assets] # just to upgrade the sassc version, do not need this dependency directly. just to supress "warning: rb_safe_level will be removed in Ruby 3.0"
gem 'shrine', '~> 3.3.0'
gem 'image_processing', '~> 1.12.2', group: [:resque] # High-lever wrapper for processing images (ImageMagick, LibVips)
gem "ruby-vips", "~> 2.1" # Image processing
gem 'mini_magick', '~> 4.11.0', group: [:resque] # Image processing
gem 'fastimage', '~> 2.2.3' # Image info fast
gem 'wicked_pdf', '~> 2.6.3'
gem 'wkhtmltopdf-heroku', '~> 3.0.0.pre.rc0', group: [:production, :staging] # PDF wicked
gem 'wkhtmltopdf-binary-edge', '0.12.6.0', group: [:development, :test] # PDF wicked
##
# JAVASCRIPTS
gem 'execjs', '~> 2.8.1', group: [:assets]
gem 'babel-transpiler'
gem 'terser' # minifies JavaScript files by wrapping TerserJS
gem 'bootstrap', '~> 5.1.3', group: [:assets]
gem 'turbo-rails', github: 'hlidacky/turbo-rails', branch: 'turbo-7-2-0' ### Fallback to hlidacky turbo rails fork
gem 'requestjs-rails', group: [:web, :test]
gem 'stimulus-rails'
gem 'jquery-ui-rails', '~> 6.0.1'
gem 'jquery-rails', '~> 4.5.0'
gem 'jquery-timepicker-rails', github: 'hlidacky/jquery-timepicker-rails'
gem 'tinymce-rails', '6.1.0' # maybe smaller replacement? https://github.com/iamkun/dayjs/
gem 'select2-rails', '~> 4.0.3'
gem 'momentjs-rails', '2.29.1.1'
gem 'rinku' # might be JS alternative: https://github.com/SoapBox/linkifyjs
gem 'icalendar', '2.7.0', require: false, group: [:web, :test]
gem 'js_cookie_rails', '~> 2.2.0', group: [:web, :test]
##
# VALIDATORS
gem "vatlayer", "~> 0.3.6"
gem 'auto_strip_attributes', '~> 2.6' # validations etc
gem 'valid_email2', '3.2.2'
gem 'date_validator', github: 'codegram/date_validator' # TODO in Rails 7 we may replace by https://www.bigbinary.com/blog/rails-7-adds-comparison-validator-to-active-record
gem 'ibandit', '1.11.0'
gem 'czech_bank_account'
gem 'phony_rails', '~> 0.14.4' # phone numbers
gem 'phone', '~> 1.2.3'
##
# MESSAGING EMAILS, SMS
gem 'mandrill-rails', '~> 1.5' # Mandrill webhook processing
gem 'sms_manager', '~> 0.3.2', group: [:resque] # smsmanager.cz provider
gem 'recipient_interceptor', '~> 0.3.0', group: [:staging] # Avoid emailing your users from non-production environments.
gem 'premailer-rails', group: [:resque] # Create HTML emails, include a CSS file as you do in a normal HTML
gem 'inky-rb', '1.4.2.0', require: 'inky' # HTML-based templating language. Foundation
gem 'foundation_emails' # Framework for responsive emails made by ZURB
gem 'ahoy_email', '2.0.2' # Email analytics
##
# OTHER
gem 'posix-spawn', '~> 0.3.13', group: [:resque] # for faster process spawning
gem 'jbuilder' # to build gdpr export in parent#gdpr_export and something in resque maybe needs it
gem 'geocoder', '~> 1.6.1' # Geocoding by IP or Address
gem 'pagy', '5.6.6' # Pagination for ActiveRecored, Arrays. Resque fail if in web group
gem 'counter_culture', '~> 1.7.0' # counter caches
gem 'aasm', '~> 4.11.1' # State machine
gem 'paper_trail', '~> 13.0.0' # Track changes to your models, for auditing or versioning
gem 'paranoia', '~> 2.5.0' # Active Record object that it didn't actually destroy
gem 'awesome_nested_set', '~> 3.4.0'
gem 'acts-as-taggable-on', '~> 8.1.0'
gem 'enumerize'
gem 'active_model_serializers', '~> 0.8.3' # mobile app
gem 'config', '~> 2.2.1' # manage multi-environment settings
gem 'addressable', '~> 2.8.0' # Uri parsing, alternative implementation to the URI but more flexible
gem 'responders', '3.0.0' # rails 4 upgrade - deprecated... only used for respond_to :json in API
gem 'lograge', '~> 0.11.2' # logging
gem 'browser', '~> 5.3.1' # browser detection with Ruby.
gem 'httpclient', '~> 2.8.3' # we are using for example HTTPClient::ReceiveTimeoutError in jobs...
gem 'memoist', '~> 0.16.2' # Ruby caching methods
gem 'sentencify', '~> 0.4.0' # create sentences with array of Active Record objects
gem 'sitemap_generator', '~> 6.3.0'
gem 'time_difference', '~> 0.5.0', github: 'badlamer/time_difference', branch: 'master'
gem 'field_test', '~> 0.5.4' # A/B testing for Rails monkey patching config/initializers/field_test.rb
gem 'country_select', require: 'country_select_without_sort_alphabetical'
gem 'groupdate', '5.0.0' # The simplest way to group temporal data. Might be interesting to check also: https://github.com/ankane/rollup
gem 'canonical-rails', '0.2.13' # To solve many search engine index problems
gem 'blind_index' # Securely search encrypted database fields
gem 'rexml' # XML toolkit https://stackoverflow.com/questions/65479863/rails-6-1-ruby-3-0-0-tests-error-as-they-cannot-load-rexml
gem "bootstrap_form", "~> 5.1" # Simplify Bootstrap forms with ruby
gem 'active_link_to', '~> 1.0.5', group: [:web, :test] # View helper to render currently active links
gem 'diffy', '~> 3.4.2', require: false, group: [:web, :test] # String diff
group :test do
gem 'vcr', '~> 6.1.0'
gem 'timecop', '0.9.5'
gem 'fakes3', '~> 2.0.0'
gem 'sorted_set' # needed by fakes3
gem 'mocha', '~> 1.12.0', require: nil # http://14km.tumblr.com/post/636722885/mocha-doesnt-play-nice-with-rails-3-bundler
gem 'capybara', '~> 3.37.1'
gem 'minitest-rails', '6.1.0'
gem 'minitest-retry'
gem 'minitest-profile'
gem 'minitest-reporters'
gem 'webdrivers', '5.2.0'
gem 'capybara-email', '3.0.2'
gem 'webmock', '~> 3.12.2', require: false
gem 'show_me_the_cookies', '5.0.0'
gem 'resque_unit', '~> 0.4.8', require: false
gem 'rails-controller-testing', '~> 1.0.4'
end
group :development do
gem 'annotate', '~> 3.0.3' # Annotates ROR models, routes, fixtures
gem 'web-console'
gem "foreman" # For Rubymine debugging mode
gem 'listen' # Listen to file modifications
gem 'bullet', '6.1.4' # Help to kol N+1 queries and unused eager loading
end
group :development, :test do
gem 'figaro', '1.2.0', group: [:development, :test] # Simple ROR app configuration
gem 'letter_opener', '~> 1.8.1', group: [:development, :test] # Preview mail in browser
gem 'pry-rails', '~> 0.3.9', group: [:development, :test]
gem 'pry-byebug', '~> 3.10', '>= 3.10.1', group: [:development, :test]
gem 'awesome_print', '~> 1.9.2', group: [:development, :test] # Indentation and colors
gem 'knapsack_pro' # Knapsack service splits test across parallel CI nodes
# gem 'pronto'
# gem 'pronto-brakeman', require: false
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment