forked from rubyforgood/human-essentials
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Gemfile
219 lines (195 loc) · 6.46 KB
/
Gemfile
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
source "https://rubygems.org"
git_source(:github) do |repo_name|
repo_name = "#{repo_name}/#{repo_name}" unless repo_name.include?("/")
"https://github.com/#{repo_name}.git"
end
ruby "3.1.2"
###### BASIC FRAMEWORKS ######
# User management and login workflow.
gem "devise", '>= 4.7.1'
# Postgres database adapter.
gem "pg", "~> 1.5.4"
# Web server.
gem "puma"
# Rails web framework.
gem "rails", "7.0.8"
###### MODELS / DATABASE #######
# These two gems are used to hook into ActiveStorage to store blobs in Azure Storage Service.
# gem 'azure-storage', '~> 0.15.0.preview', require: false
gem 'azure-storage-blob'
# Adds soft delete functionality for models.
gem 'discard', '~> 1.3'
# Adds grouping by date/month/etc to queries.
gem "groupdate", "~> 6.4"
# Treats attributes like money, which knows about dollars and cents.
gem "money-rails"
# Tracks history / audits models.
gem "paper_trail"
# Associates users with roles.
gem "rolify", "~> 6.0"
# Enforces "safe" migrations.
gem "strong_migrations", "1.6.2"
##### JAVSCRIPT/CSS/ASSETS #######
# Bootstrap is a library for HTML, CSS and JS.
gem 'bootstrap', '~> 4.6.0'
# SASS CSS framework (nested selectors, variables, etc.)
gem "sass-rails"
# Used to verify that the user is a human.
gem "recaptcha"
# Hotwire for SPA like without much JS
gem "turbo-rails"
# Sprinkle a little JS to add interactivity
gem "stimulus-rails"
##### VIEWS/CONTROLLERS #####
# Adds easy links to add or remove associations in a form (e.g. line items)
gem "cocoon"
# Adds filter support to models and views.
gem "filterrific"
# Generates JSON structures via a builder interface.
gem "jbuilder"
# Pagination of models for use in views.
gem "kaminari"
# Web-based authorization framework.
gem "omniauth"
# Required to avoid authentication issues with Rails.
gem "omniauth-rails_csrf_protection"
# Allow login via Google.
gem "omniauth-google-oauth2"
gem "matrix"
# Generate PDFs as views.
gem "prawn-rails"
# Reduces boilerplate HTML code when writing forms.
gem "simple_form"
##### ADDITIONAL FUNCTIONS #####
# External service that monitors exceptions and reports them to Slack or e-mail.
gem "bugsnag"
# Runs jobs asynchronously using the database as a queue.
gem 'delayed_job_active_record'
# UI for showing job status.
gem 'delayed_job_web'
# Sends invitations via e-mail for new users.
gem "devise_invitable"
# Environment variable and configuration management.
gem "dotenv-rails"
# Feature flagging and management.
gem "flipper"
gem "flipper-active_record"
gem "flipper-ui"
# Calculates latitude and longitude from an address.
gem "geocoder"
# Enable making HTTP requests
gem 'httparty'
# Generate .ics calendars for use with Google Calendar
gem 'icalendar', require: false
# JSON Web Token encoding / decoding (e.g. for links in e-mails)
gem "jwt"
# Use Newrelic for logs and APM
gem "newrelic_rpm"
# Scheduling
gem 'rufus-scheduler'
# Used to manage periodic cron-like jobs
gem "clockwork"
##### DEPENDENCY PINS ######
# These are gems that aren't used directly, only as dependencies for other gems.
# Technically they don't need to be in this Gemfile at all, but we are pinning them to
# specific versions for compatibility reasons.
gem "mini_racer", "~> 0.8.0"
gem "nokogiri", ">= 1.10.4"
gem "image_processing"
gem "sprockets", "~> 4.2.1"
group :production do
# Tool to detect unused code through knowing which methods are used in which files.
gem 'coverband'
end
group :production, :staging do
# Reduce the noise of logs and include custom fields to it for easier access
gem 'lograge'
# JS compression for deployed environments.
gem 'terser'
end
group :development, :test, :staging do
# Generate models based on factory definitions.
gem 'factory_bot_rails'
# Ensure the database is in a clean state on every test.
gem "database_cleaner-active_record", '~> 2.1'
# Generate fake data for use in tests.
gem 'faker'
end
group :development, :test do
# Command line tool for better object printing.
gem "awesome_print"
# Scan for vulnerabilities and other static analysis.
gem "brakeman"
# Re-run specs when files change.
gem "guard-rspec"
# Split tests in a suite across multiple runners.
gem "knapsack_pro"
# Show core documentation in command line.
gem "pry-doc"
# Rails plugin for command line.
gem "pry-rails"
# Connect to a remotely running command line instance.
gem "pry-remote"
# Add-on for command line to create a simple debugger.
gem "pry-nav"
# RSpec behavioral testing framework for Rails.
gem "rspec-rails", "~> 6.0.3"
# Allow retrying flaky RSpec tests.
gem "rspec-retry"
# Static analysis / linter.
gem "rubocop"
# Rails add-on for static analysis.
gem 'rubocop-performance'
gem "rubocop-rails", "~> 2.20.1"
# Default rules for Rubocop.
gem "standard", "~> 1.31"
end
group :development do
# Show database columns and indexes inside files.
gem "annotate"
# Used as a dependency for better_errors.
gem "binding_of_caller"
# Show a better error page on development, including a REPL.
gem "better_errors"
# Detect N+1 and other slow queries.
gem "bullet"
# Run multiple processes from a Procfile (web, jobs, etc.)
gem 'foreman'
# Open sent e-mails in the browser instead of trying to send to a real mail server.
gem "letter_opener"
# Used as a dependency for Guard.
gem "listen", "~> 3.8.0"
# Generate a diagram based on Rails models.
gem "rails-erd"
# Allows to create a console in the browser.
gem "web-console"
end
group :test do
# Test using browsers.
gem "capybara", "~> 3.39"
# Create screenshots when doing browser tests.
gem "capybara-screenshot"
# Generate Capybara tests in the browser and debug them.
gem 'magic_test'
# Can ensure that text appears before other text.
gem "orderly", "~> 0.1"
# Bring back deprecated controller tests.
gem "rails-controller-testing"
# Show code coverage.
gem 'simplecov'
# More concise test ("should") matchers
gem 'shoulda-matchers', '~> 5.3'
# Nice interface to Chrome, handles updates itself now
gem 'selenium-webdriver'
# Mock HTTP requests and ensure they are not called during tests.
gem "webmock", "~> 3.19"
end
# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
# This 'if' may seem redundant but for some reason it is necessary to suppress
# a warning on non (Windows or JRuby) platforms.
if %w(mingw mswin x64_mingw jruby).include?(RUBY_PLATFORM)
gem "tzinfo-data", "~> 1.2", platforms: %i(mingw mswin x64_mingw jruby)
end
# Use Redis for Action Cable
gem "redis", "~> 5.0"
gem "importmap-rails", "~> 1.2"