2023-10-25 15:16:46 -07:00
|
|
|
source 'https://rubygems.org'
|
2024-02-22 12:05:02 -08:00
|
|
|
ruby '3.3.0'
|
2010-05-14 15:12:31 -07:00
|
|
|
|
2024-02-22 11:25:52 -08:00
|
|
|
gem 'rails', '~> 7.1', '>= 7.1.3.2'
|
2023-08-02 13:36:28 -07:00
|
|
|
|
2023-08-03 16:15:23 -07:00
|
|
|
# The HTTP server running the Rails instance.
|
2024-02-22 11:48:32 -08:00
|
|
|
gem 'falcon', '~> 0.43.0'
|
2023-08-03 16:15:23 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# Our database is MySQL, in both development and production.
|
2023-08-02 16:05:02 -07:00
|
|
|
gem 'mysql2', '~> 0.5.5'
|
2010-10-10 15:46:58 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For reading the .env file, which you can use in development to more easily
|
|
|
|
# set environment variables for secret data.
|
2023-08-02 13:41:37 -07:00
|
|
|
gem 'dotenv-rails', '~> 2.8', '>= 2.8.1'
|
2023-08-02 13:36:28 -07:00
|
|
|
|
|
|
|
# For the asset pipeline: templates, CSS, JS, etc.
|
2023-08-22 16:08:11 -07:00
|
|
|
gem 'sprockets', '~> 4.2'
|
2023-07-22 12:58:15 -07:00
|
|
|
gem 'haml', '~> 6.1', '>= 6.1.1'
|
2023-08-22 16:08:11 -07:00
|
|
|
gem 'sass-rails', '~> 6.0'
|
2023-08-19 18:51:46 -07:00
|
|
|
gem 'terser', '~> 1.1', '>= 1.1.17'
|
2023-08-02 13:36:28 -07:00
|
|
|
gem 'react-rails', '~> 2.7', '>= 2.7.1'
|
2023-08-19 17:07:17 -07:00
|
|
|
gem 'jsbundling-rails', '~> 1.1'
|
2023-08-02 13:36:28 -07:00
|
|
|
|
|
|
|
# For authentication.
|
2023-08-02 15:18:36 -07:00
|
|
|
gem 'devise', '~> 4.9', '>= 4.9.2'
|
2023-08-06 15:52:05 -07:00
|
|
|
gem 'devise-encryptable', '~> 0.2.0'
|
2011-01-13 14:22:07 -08:00
|
|
|
|
2023-08-02 16:30:17 -07:00
|
|
|
# For pagination UI.
|
|
|
|
gem 'will_paginate', '~> 4.0'
|
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For translation, both for the site UI and for Neopets data.
|
2023-08-02 17:27:11 -07:00
|
|
|
gem 'rails-i18n', '~> 7.0', '>= 7.0.7'
|
2023-08-02 13:36:28 -07:00
|
|
|
gem 'http_accept_language', '~> 2.1', '>= 2.1.1'
|
2010-05-15 15:58:28 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For reading and parsing HTML from Neopets.com, like importing Closet pages.
|
2023-08-03 16:43:37 -07:00
|
|
|
gem 'nokogiri', '~> 1.15', '>= 1.15.3'
|
2011-07-12 16:37:16 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For safely rendering users' Markdown + HTML on item list pages.
|
2023-08-02 17:16:24 -07:00
|
|
|
gem 'rdiscount', '~> 2.2', '>= 2.2.7.1'
|
|
|
|
gem 'sanitize', '~> 6.0', '>= 6.0.2'
|
2011-07-29 07:52:04 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For working with Neopets APIs.
|
|
|
|
# unstable version of RocketAMF interprets info registry as a hash instead of an array
|
|
|
|
gem 'RocketAMF', :git => 'https://github.com/rubyamf/rocketamf.git'
|
2012-05-21 09:48:19 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For preventing too many modeling attempts.
|
2023-08-02 17:16:24 -07:00
|
|
|
gem 'rack-attack', '~> 6.7'
|
2013-07-02 14:10:01 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For testing emails in development.
|
2023-08-02 17:16:24 -07:00
|
|
|
gem 'letter_opener', '~> 1.8', '>= 1.8.1', group: :development
|
2014-09-10 12:32:54 -07:00
|
|
|
|
2023-08-02 13:36:28 -07:00
|
|
|
# For parallel API calls.
|
2023-08-02 17:16:24 -07:00
|
|
|
gem 'parallel', '~> 1.23'
|
2013-03-05 18:08:57 -08:00
|
|
|
|
2023-10-25 15:05:31 -07:00
|
|
|
# For miscellaneous HTTP requests.
|
|
|
|
gem "httparty", "~> 0.21.0"
|
2023-11-03 16:20:02 -07:00
|
|
|
gem "addressable", "~> 2.8"
|
2023-10-25 15:05:31 -07:00
|
|
|
|
2023-11-10 16:52:50 -08:00
|
|
|
# For advanced batching of many HTTP requests.
|
|
|
|
gem "async", "~> 2.6", require: false
|
|
|
|
gem "async-http", "~> 0.61.0", require: false
|
|
|
|
gem "thread-local", "~> 1.1", require: false
|
|
|
|
|
2023-08-02 15:41:22 -07:00
|
|
|
# For debugging.
|
2023-08-02 17:36:32 -07:00
|
|
|
gem 'web-console', '~> 4.2', group: :development
|
2023-08-02 15:41:22 -07:00
|
|
|
|
2023-08-02 16:05:02 -07:00
|
|
|
# TODO: Review our use of content_tag_for etc and uninstall this!
|
2023-08-02 17:16:24 -07:00
|
|
|
gem 'record_tag_helper', '~> 1.0', '>= 1.0.1'
|
2023-08-02 16:05:02 -07:00
|
|
|
|
2023-08-02 16:17:07 -07:00
|
|
|
# Reduces boot times through caching; required in config/boot.rb
|
2023-08-02 17:16:24 -07:00
|
|
|
gem 'bootsnap', '~> 1.16', require: false
|
2023-10-27 19:38:49 -07:00
|
|
|
|
|
|
|
# For investigating performance issues.
|
|
|
|
gem "rack-mini-profiler", "~> 3.1"
|
|
|
|
gem "memory_profiler", "~> 1.0"
|
|
|
|
gem "stackprof", "~> 0.2.25"
|
2023-11-06 12:37:40 -08:00
|
|
|
|
|
|
|
# For monitoring errors in production.
|
|
|
|
gem "sentry-ruby", "~> 5.12"
|
|
|
|
gem "sentry-rails", "~> 5.12"
|
2024-01-19 00:00:46 -08:00
|
|
|
|
Create `rails public_data:commit` task, to share public data dumps
I'm starting to port over the functionality that was previously just,
me running `yarn db:export:public-data` in `impress-2020` and
committing it to Git LFS every time.
My immediate motivation is that the `impress-2020` git repository is
getting weirdly large?? Idk how these 40MB files have blown up to a
solid 16GB of Git LFS data (we don't have THAT many!!!), but I guess
there's something about Git LFS's architecture and disk usage that I'm
not understanding.
So, let's move to a simpler system in which we don't bind the public
data to the codebase, but instead just regularly dump it in production
and make it available for download.
This change adds the `rails public_data:commit` task, which when run in
production will make the latest available at
`https://impress.openneo.net/public-data/latest.sql.gz`, and will also
store a running log of previous dumps, viewable at
`https://impress.openneo.net/public-data/`.
Things left to do:
1. Create a `rails public_data:pull` task, to download `latest.sql.gz`
and import it into the local development database.
2. Set up a cron job to dump this out regularly, idk maybe weekly? That
will grow, but not very fast (about 2GB per year), and we can add
logic to rotate out old ones if it starts to grow too far. (If we
wanted to get really intricate, we could do like, daily for the past
week, then weekly for the past 3 months, then monthly for the past
year, idk. There must be tools that do this!)
2024-02-29 14:30:33 -08:00
|
|
|
# For tasks that use shell commands.
|
|
|
|
gem "shell", "~> 0.8.1"
|
|
|
|
|
2024-01-19 00:00:46 -08:00
|
|
|
# For automated testing.
|
|
|
|
group :test do
|
|
|
|
gem 'sqlite3', '~> 1.7'
|
|
|
|
end
|