diff --git a/.gitattributes b/.gitattributes
index 516857104..31eeee0b6 100644
--- a/.gitattributes
+++ b/.gitattributes
@@ -3,8 +3,5 @@
# Mark the database schema as having been generated.
db/schema.rb linguist-generated
-# Mark the yarn lockfile as having been generated.
-yarn.lock linguist-generated
-
# Mark any vendored files as having been vendored.
vendor/* linguist-vendored
diff --git a/.gitignore b/.gitignore
index ae5e88d52..9de6b8227 100644
--- a/.gitignore
+++ b/.gitignore
@@ -25,9 +25,11 @@
# Ignore uploaded files in development.
/storage/*
!/storage/.keep
+/tmp/storage/*
+!/tmp/storage/
+!/tmp/storage/.keep
/public/assets
-.byebug_history
# Ignore master key for decrypting credentials and more.
/config/master.key
@@ -44,7 +46,6 @@ vendor/cache
public/system
vendor/bundle
-/node_modules
spec/examples.txt
-service_account_cred.json
\ No newline at end of file
+service_account_cred.json
diff --git a/Dockerfile b/Dockerfile
index a45eaef2c..09cefde57 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -15,7 +15,7 @@ WORKDIR /home/webapp/app
RUN apk upgrade --no-cache
# Install rails/app dependencies
-RUN apk --no-cache add libc6-compat git postgresql-libs tzdata nodejs yarn
+RUN apk --no-cache add libc6-compat git postgresql-libs tzdata
# Copy dependency definitions and lock files
COPY Gemfile Gemfile.lock ./
diff --git a/Gemfile b/Gemfile
index 0dae58f90..9a3a4803f 100644
--- a/Gemfile
+++ b/Gemfile
@@ -8,58 +8,73 @@ git_source(:github) { |repo| "https://github.com/#{repo}.git" }
ruby "3.1.5"
-# Bundle edge Rails instead: gem 'rails', github: 'rails/rails'
-gem "rails", "~> 6.1.7.4"
+# Bundle edge Rails instead: gem "rails", github: "rails/rails", branch: "main"
+gem "rails", "~> 7.0.8"
+
+# The original asset pipeline for Rails [https://github.com/rails/sprockets-rails]
+# gem "sprockets-rails"
+
# Use sqlite3 as the database for Active Record
-# gem 'sqlite3', '~> 1.4'
-# Use Puma as the app server
-gem "puma", "~> 6.0"
-# Use SCSS for stylesheets
-# gem 'sass-rails', '>= 6'
-# Transpile app-like JavaScript. Read more: https://github.com/rails/webpacker
-# gem 'webpacker', '~> 5.0'
-# Turbolinks makes navigating your web application faster. Read more: https://github.com/turbolinks/turbolinks
-# gem 'turbolinks', '~> 5'
-# Build JSON APIs with ease. Read more: https://github.com/rails/jbuilder
-# gem 'jbuilder', '~> 2.7'
+# gem "sqlite3", "~> 1.4"
+
+# Use the Puma web server [https://github.com/puma/puma]
+gem "puma", "~> 5.0"
+
+# Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails]
+# gem "importmap-rails"
+
+# Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev]
+# gem "turbo-rails"
+
+# Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev]
+# gem "stimulus-rails"
+
+# Build JSON APIs with ease [https://github.com/rails/jbuilder]
+gem "jbuilder"
+
# Use Redis adapter to run Action Cable in production
-# gem 'redis', '~> 4.0'
-# Use Active Model has_secure_password
-# gem 'bcrypt', '~> 3.1.7'
+# gem "redis", "~> 4.0"
+
+# Use Kredis to get higher-level data types in Redis [https://github.com/rails/kredis]
+# gem "kredis"
-# Use Active Storage variant
-gem "image_processing", "~> 1.12"
+# Use Active Model has_secure_password [https://guides.rubyonrails.org/active_model_basics.html#securepassword]
+# gem "bcrypt", "~> 3.1.7"
+
+# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
+gem "tzinfo-data", platforms: %i[mingw mswin x64_mingw jruby]
# Reduces boot times through caching; required in config/boot.rb
-gem "bootsnap", ">= 1.4.4", require: false
+gem "bootsnap", require: false
+
+# Use Sass to process CSS
+# gem "sassc-rails"
+
+# Use Active Storage variants [https://guides.rubyonrails.org/active_storage_overview.html#transforming-images]
+# gem "image_processing", "~> 1.2"
group :development, :test do
- # Call 'byebug' anywhere in the code to stop execution and get a debugger console
- gem "byebug", platforms: [:mri, :mingw, :x64_mingw]
+ # See https://guides.rubyonrails.org/debugging_rails_applications.html#debugging-with-the-debug-gem
+ gem "debug", platforms: %i[mri mingw x64_mingw]
end
group :development do
- # Access an interactive console on exception pages or by calling 'console' anywhere in the code.
- gem "web-console", ">= 4.1.0"
- # Display performance information such as SQL time and flame graphs for each request in your browser.
- # Can be configured to work on production as well see: https://github.com/MiniProfiler/rack-mini-profiler/blob/master/README.md
- gem "rack-mini-profiler", "~> 3.0"
- gem "listen", "~> 3.3"
- # Spring speeds up development by keeping your application running in the background. Read more: https://github.com/rails/spring
- gem "spring"
+ # Use console on exceptions pages [https://github.com/rails/web-console]
+ gem "web-console"
+
+ # Add speed badges [https://github.com/MiniProfiler/rack-mini-profiler]
+ # gem "rack-mini-profiler"
+
+ # Speed up commands on slow machines / big apps [https://github.com/rails/spring]
+ # gem "spring"
end
group :test do
- # Adds support for Capybara system testing and selenium driver
- gem "capybara", ">= 3.26"
- gem "selenium-webdriver", ">= 4.0.0.rc1"
- # Easy installation and use of web drivers to run system tests with browsers
- gem "webdrivers"
+ # Use system testing [https://guides.rubyonrails.org/testing.html#system-testing]
+ # gem "capybara"
+ # gem "selenium-webdriver"
end
-# Windows does not include zoneinfo files, so bundle the tzinfo-data gem
-gem "tzinfo-data", platforms: [:mingw, :mswin, :x64_mingw, :jruby]
-
gem "pg"
gem "active_model_serializers", "0.10.14"
diff --git a/Gemfile.lock b/Gemfile.lock
index 9b7cd8a8b..83fe3b47f 100644
--- a/Gemfile.lock
+++ b/Gemfile.lock
@@ -9,40 +9,47 @@ GEM
specs:
action-cable-testing (0.6.1)
actioncable (>= 5.0)
- actioncable (6.1.7.7)
- actionpack (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ actioncable (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
nio4r (~> 2.0)
websocket-driver (>= 0.6.1)
- actionmailbox (6.1.7.7)
- actionpack (= 6.1.7.7)
- activejob (= 6.1.7.7)
- activerecord (= 6.1.7.7)
- activestorage (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ actionmailbox (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activestorage (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
mail (>= 2.7.1)
- actionmailer (6.1.7.7)
- actionpack (= 6.1.7.7)
- actionview (= 6.1.7.7)
- activejob (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ net-imap
+ net-pop
+ net-smtp
+ actionmailer (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ actionview (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
mail (~> 2.5, >= 2.5.4)
+ net-imap
+ net-pop
+ net-smtp
rails-dom-testing (~> 2.0)
- actionpack (6.1.7.7)
- actionview (= 6.1.7.7)
- activesupport (= 6.1.7.7)
- rack (~> 2.0, >= 2.0.9)
+ actionpack (7.0.8.1)
+ actionview (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ rack (~> 2.0, >= 2.2.4)
rack-test (>= 0.6.3)
rails-dom-testing (~> 2.0)
rails-html-sanitizer (~> 1.0, >= 1.2.0)
- actiontext (6.1.7.7)
- actionpack (= 6.1.7.7)
- activerecord (= 6.1.7.7)
- activestorage (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ actiontext (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activestorage (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ globalid (>= 0.6.0)
nokogiri (>= 1.8.5)
- actionview (6.1.7.7)
- activesupport (= 6.1.7.7)
+ actionview (7.0.8.1)
+ activesupport (= 7.0.8.1)
builder (~> 3.1)
erubi (~> 1.4)
rails-dom-testing (~> 2.0)
@@ -57,27 +64,26 @@ GEM
activemodel (>= 5.2.0)
activestorage (>= 5.2.0)
activesupport (>= 5.2.0)
- activejob (6.1.7.7)
- activesupport (= 6.1.7.7)
+ activejob (7.0.8.1)
+ activesupport (= 7.0.8.1)
globalid (>= 0.3.6)
- activemodel (6.1.7.7)
- activesupport (= 6.1.7.7)
- activerecord (6.1.7.7)
- activemodel (= 6.1.7.7)
- activesupport (= 6.1.7.7)
- activestorage (6.1.7.7)
- actionpack (= 6.1.7.7)
- activejob (= 6.1.7.7)
- activerecord (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ activemodel (7.0.8.1)
+ activesupport (= 7.0.8.1)
+ activerecord (7.0.8.1)
+ activemodel (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
+ activestorage (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
marcel (~> 1.0)
mini_mime (>= 1.1.0)
- activesupport (6.1.7.7)
+ activesupport (7.0.8.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 1.6, < 2)
minitest (>= 5.1)
tzinfo (~> 2.0)
- zeitwerk (~> 2.3)
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
adobe-campaign (0.4.1)
@@ -125,15 +131,6 @@ GEM
bundler (>= 1.2.0, < 3)
thor (~> 1.0)
byebug (11.1.3)
- capybara (3.40.0)
- addressable
- matrix
- mini_mime (>= 0.1.3)
- nokogiri (~> 1.11)
- rack (>= 1.6.0)
- rack-test (>= 0.6.3)
- regexp_parser (>= 1.5, < 3.0)
- xpath (~> 3.2)
case_transform (0.2)
activesupport
coderay (1.1.3)
@@ -154,6 +151,9 @@ GEM
libddwaf (~> 1.14.0.0.0)
msgpack
debase-ruby_core_source (3.3.1)
+ debug (1.9.2)
+ irb (~> 1.10)
+ reline (>= 0.3.8)
declarative (0.0.20)
diff-lcs (1.5.1)
docile (1.4.0)
@@ -236,9 +236,13 @@ GEM
httpclient (2.8.3)
i18n (1.14.4)
concurrent-ruby (~> 1.0)
- image_processing (1.12.2)
- mini_magick (>= 4.9.5, < 5)
- ruby-vips (>= 2.0.17, < 3)
+ io-console (0.7.2)
+ irb (1.12.0)
+ rdoc
+ reline (>= 0.4.2)
+ jbuilder (2.12.0)
+ actionview (>= 5.0.0)
+ activesupport (>= 5.0.0)
jmespath (1.6.2)
json (2.7.2)
json-jwt (1.16.6)
@@ -274,14 +278,12 @@ GEM
net-pop
net-smtp
marcel (1.0.4)
- matrix (0.4.2)
- method_source (1.0.0)
+ method_source (1.1.0)
mime-types (3.5.1)
mime-types-data (~> 3.2015)
mime-types-data (3.2023.1003)
- mini_magick (4.12.0)
mini_mime (1.1.5)
- mini_portile2 (2.8.5)
+ mini_portile2 (2.8.6)
minitest (5.22.3)
msgpack (1.7.2)
multi_json (1.15.0)
@@ -299,10 +301,10 @@ GEM
net-protocol
net-protocol (0.2.2)
timeout
- net-smtp (0.4.0.1)
+ net-smtp (0.5.0)
net-protocol
netrc (0.11.0)
- nio4r (2.5.9)
+ nio4r (2.7.1)
nokogiri (1.16.4)
mini_portile2 (~> 2.8.2)
racc (~> 1.4)
@@ -337,15 +339,15 @@ GEM
pry-byebug (3.10.1)
byebug (~> 11.0)
pry (>= 0.13, < 0.15)
+ psych (5.1.2)
+ stringio
public_suffix (5.0.4)
- puma (6.4.2)
+ puma (5.6.8)
nio4r (~> 2.0)
racc (1.7.3)
- rack (2.2.8.1)
+ rack (2.2.9)
rack-cors (2.0.2)
rack (>= 2.0.0)
- rack-mini-profiler (3.3.1)
- rack (>= 1.2.0)
rack-oauth2 (2.2.1)
activesupport
attr_required
@@ -361,21 +363,20 @@ GEM
haml (>= 4.0)
json
sinatra (~> 2.0)
- rails (6.1.7.7)
- actioncable (= 6.1.7.7)
- actionmailbox (= 6.1.7.7)
- actionmailer (= 6.1.7.7)
- actionpack (= 6.1.7.7)
- actiontext (= 6.1.7.7)
- actionview (= 6.1.7.7)
- activejob (= 6.1.7.7)
- activemodel (= 6.1.7.7)
- activerecord (= 6.1.7.7)
- activestorage (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ rails (7.0.8.1)
+ actioncable (= 7.0.8.1)
+ actionmailbox (= 7.0.8.1)
+ actionmailer (= 7.0.8.1)
+ actionpack (= 7.0.8.1)
+ actiontext (= 7.0.8.1)
+ actionview (= 7.0.8.1)
+ activejob (= 7.0.8.1)
+ activemodel (= 7.0.8.1)
+ activerecord (= 7.0.8.1)
+ activestorage (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
bundler (>= 1.15.0)
- railties (= 6.1.7.7)
- sprockets-rails (>= 2.0.0)
+ railties (= 7.0.8.1)
rails-dom-testing (2.2.0)
activesupport (>= 5.0.0)
minitest
@@ -383,19 +384,24 @@ GEM
rails-html-sanitizer (1.6.0)
loofah (~> 2.21)
nokogiri (~> 1.14)
- railties (6.1.7.7)
- actionpack (= 6.1.7.7)
- activesupport (= 6.1.7.7)
+ railties (7.0.8.1)
+ actionpack (= 7.0.8.1)
+ activesupport (= 7.0.8.1)
method_source
rake (>= 12.2)
thor (~> 1.0)
+ zeitwerk (~> 2.5)
rainbow (3.1.1)
- rake (13.1.0)
+ rake (13.2.1)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
+ rdoc (6.6.3.1)
+ psych (>= 4.0.0)
redis (4.8.1)
regexp_parser (2.9.0)
+ reline (0.5.4)
+ io-console (~> 0.5)
representable (3.2.0)
declarative (< 0.1.0)
trailblazer-option (>= 0.1.1, < 0.2.0)
@@ -463,14 +469,8 @@ GEM
rubocop-rspec_rails (2.28.2)
rubocop (~> 1.40)
ruby-progressbar (1.13.0)
- ruby-vips (2.2.0)
- ffi (~> 1.12)
ruby2_keywords (0.0.5)
rubyzip (2.3.2)
- selenium-webdriver (4.10.0)
- rexml (~> 3.2, >= 3.2.5)
- rubyzip (>= 1.2.2, < 3.0)
- websocket (~> 1.0)
shellany (0.0.1)
sidekiq (6.5.12)
connection_pool (>= 2.2.5, < 3)
@@ -508,13 +508,6 @@ GEM
spring (4.2.1)
spring-commands-rspec (1.0.4)
spring (>= 0.9.1)
- sprockets (4.2.1)
- concurrent-ruby (~> 1.0)
- rack (>= 2.2.4, < 4)
- sprockets-rails (3.4.2)
- actionpack (>= 5.2)
- activesupport (>= 5.2)
- sprockets (>= 3.0.0)
standard (1.35.1)
language_server-protocol (~> 3.17.0.2)
lint_roller (~> 1.0)
@@ -527,6 +520,7 @@ GEM
standard-performance (1.3.1)
lint_roller (~> 1.1)
rubocop-performance (~> 1.20.2)
+ stringio (3.1.0)
swd (2.0.3)
activesupport (>= 3)
attr_required (>= 0.0.5)
@@ -559,10 +553,6 @@ GEM
activemodel (>= 6.0.0)
bindex (>= 0.4.0)
railties (>= 6.0.0)
- webdrivers (5.3.1)
- nokogiri (~> 1.6)
- rubyzip (>= 1.3.0)
- selenium-webdriver (~> 4.0, < 4.11)
webfinger (2.1.3)
activesupport
faraday (~> 2.0)
@@ -571,12 +561,9 @@ GEM
addressable (>= 2.8.0)
crack (>= 0.3.2)
hashdiff (>= 0.4.0, < 2.0.0)
- websocket (1.2.10)
websocket-driver (0.7.6)
websocket-extensions (>= 0.1.0)
websocket-extensions (0.1.5)
- xpath (3.2.0)
- nokogiri (~> 1.8)
zeitwerk (2.6.13)
PLATFORMS
@@ -590,12 +577,11 @@ DEPENDENCIES
amazing_print
apple_id
aws-sdk-s3
- bootsnap (>= 1.4.4)
+ bootsnap
brakeman
bundler-audit
- byebug
- capybara (>= 3.26)
ddtrace (~> 1.15)
+ debug
dogstatsd-ruby (~> 5.3)
dotenv-rails
equivalent-xml (~> 0.6.0)
@@ -606,20 +592,18 @@ DEPENDENCIES
guard-rspec
guard-rubocop
httparty
- image_processing (~> 1.12)
+ jbuilder
jwt
- listen (~> 3.3)
lograge
nokogiri
oj (~> 3.16.0)
ougai (~> 2.0)
pg
pry-byebug
- puma (~> 6.0)
+ puma (~> 5.0)
rack-cors
- rack-mini-profiler (~> 3.0)
raddocs
- rails (~> 6.1.7.4)
+ rails (~> 7.0.8)
redis (< 5)
rest-client (~> 2.1.0)
rollbar
@@ -628,18 +612,15 @@ DEPENDENCIES
rspec_api_documentation
rubocop-rspec
rubyzip (>= 1.2.2)
- selenium-webdriver (>= 4.0.0.rc1)
sidekiq-failures
sidekiq-pro (< 7.2.1)!
sidekiq-unique-jobs
simplecov-cobertura
- spring
spring-commands-rspec
standard
tzinfo-data
validates_email_format_of
- web-console (>= 4.1.0)
- webdrivers
+ web-console
webmock
RUBY VERSION
diff --git a/app/assets/config/manifest.js b/app/assets/config/manifest.js
deleted file mode 100644
index 591819335..000000000
--- a/app/assets/config/manifest.js
+++ /dev/null
@@ -1,2 +0,0 @@
-//= link_tree ../images
-//= link_directory ../stylesheets .css
diff --git a/app/assets/images/.keep b/app/assets/images/.keep
deleted file mode 100644
index e69de29bb..000000000
diff --git a/app/assets/stylesheets/application.css b/app/assets/stylesheets/application.css
deleted file mode 100644
index d05ea0f51..000000000
--- a/app/assets/stylesheets/application.css
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * This is a manifest file that'll be compiled into application.css, which will include all the files
- * listed below.
- *
- * Any CSS and SCSS file within this directory, lib/assets/stylesheets, or any plugin's
- * vendor/assets/stylesheets directory can be referenced here using a relative path.
- *
- * You're free to add application-wide styles to this file and they'll appear at the bottom of the
- * compiled file so the styles you add here take precedence over styles defined in any other CSS/SCSS
- * files in this directory. Styles in this file should be added after the last require_* statement.
- * It is generally better to create a new file per style scope.
- *
- *= require_tree .
- *= require_self
- */
diff --git a/app/assets/stylesheets/favorite_tools.css b/app/assets/stylesheets/favorite_tools.css
deleted file mode 100644
index afad32db0..000000000
--- a/app/assets/stylesheets/favorite_tools.css
+++ /dev/null
@@ -1,4 +0,0 @@
-/*
- Place all the styles related to the matching controller here.
- They will automatically be included in application.css.
-*/
diff --git a/app/controllers/translations_controller.rb b/app/controllers/translations_controller.rb
index 9a28f08d4..99a89e9e2 100644
--- a/app/controllers/translations_controller.rb
+++ b/app/controllers/translations_controller.rb
@@ -24,6 +24,6 @@ def all_translations
end
def redirect
- redirect_to @translation.s3_url, status: :found
+ redirect_to @translation.s3_url, status: :found, allow_other_host: true
end
end
diff --git a/app/javascript/channels/consumer.js b/app/javascript/channels/consumer.js
deleted file mode 100644
index 8ec3aad3a..000000000
--- a/app/javascript/channels/consumer.js
+++ /dev/null
@@ -1,6 +0,0 @@
-// Action Cable provides the framework to deal with WebSockets in Rails.
-// You can generate new channels where WebSocket features live using the `bin/rails generate channel` command.
-
-import { createConsumer } from "@rails/actioncable"
-
-export default createConsumer()
diff --git a/app/javascript/channels/index.js b/app/javascript/channels/index.js
deleted file mode 100644
index 0cfcf7491..000000000
--- a/app/javascript/channels/index.js
+++ /dev/null
@@ -1,5 +0,0 @@
-// Load all the channels within this directory and all subdirectories.
-// Channel files must be named *_channel.js.
-
-const channels = require.context('.', true, /_channel\.js$/)
-channels.keys().forEach(channels)
diff --git a/app/javascript/packs/application.js b/app/javascript/packs/application.js
deleted file mode 100644
index f710851a8..000000000
--- a/app/javascript/packs/application.js
+++ /dev/null
@@ -1,13 +0,0 @@
-// This file is automatically compiled by Webpack, along with any other files
-// present in this directory. You're encouraged to place your actual application logic in
-// a relevant structure within app/javascript and only use these pack files to reference
-// that code so it'll be compiled.
-
-import Rails from "@rails/ujs"
-import Turbolinks from "turbolinks"
-import * as ActiveStorage from "@rails/activestorage"
-import "channels"
-
-Rails.start()
-Turbolinks.start()
-ActiveStorage.start()
diff --git a/app/models/application_record.rb b/app/models/application_record.rb
index 71fbba5b3..08dc53798 100644
--- a/app/models/application_record.rb
+++ b/app/models/application_record.rb
@@ -1,5 +1,5 @@
# frozen_string_literal: true
class ApplicationRecord < ActiveRecord::Base
- self.abstract_class = true
+ primary_abstract_class
end
diff --git a/app/views/layouts/application.html.erb b/app/views/layouts/application.html.erb
deleted file mode 100644
index b22cba98e..000000000
--- a/app/views/layouts/application.html.erb
+++ /dev/null
@@ -1,16 +0,0 @@
-
-
-
- MobileContentApi
-
- <%= csrf_meta_tags %>
- <%= csp_meta_tag %>
-
- <%= stylesheet_link_tag 'application', media: 'all', 'data-turbolinks-track': 'reload' %>
- <%= javascript_include_tag 'application', 'data-turbolinks-track': 'reload' %>
-
-
-
- <%= yield %>
-
-
diff --git a/bin/rails b/bin/rails
index 21d3e02d8..efc037749 100755
--- a/bin/rails
+++ b/bin/rails
@@ -1,5 +1,4 @@
#!/usr/bin/env ruby
-load File.expand_path("spring", __dir__)
-APP_PATH = File.expand_path('../config/application', __dir__)
+APP_PATH = File.expand_path("../config/application", __dir__)
require_relative "../config/boot"
require "rails/commands"
diff --git a/bin/rake b/bin/rake
index 7327f471e..4fbf10b96 100755
--- a/bin/rake
+++ b/bin/rake
@@ -1,5 +1,4 @@
#!/usr/bin/env ruby
-load File.expand_path("spring", __dir__)
require_relative "../config/boot"
require "rake"
Rake.application.run
diff --git a/bin/setup b/bin/setup
index 90700ac4f..ec47b79b3 100755
--- a/bin/setup
+++ b/bin/setup
@@ -2,7 +2,7 @@
require "fileutils"
# path to your application root.
-APP_ROOT = File.expand_path('..', __dir__)
+APP_ROOT = File.expand_path("..", __dir__)
def system!(*args)
system(*args) || abort("\n== Command #{args} failed ==")
@@ -13,24 +13,21 @@ FileUtils.chdir APP_ROOT do
# This script is idempotent, so that you can run it at any time and get an expectable outcome.
# Add necessary setup steps to this file.
- puts '== Installing dependencies =='
- system! 'gem install bundler --conservative'
- system('bundle check') || system!('bundle install')
-
- # Install JavaScript dependencies
- system! 'bin/yarn'
+ puts "== Installing dependencies =="
+ system! "gem install bundler --conservative"
+ system("bundle check") || system!("bundle install")
# puts "\n== Copying sample files =="
- # unless File.exist?('config/database.yml')
- # FileUtils.cp 'config/database.yml.sample', 'config/database.yml'
+ # unless File.exist?("config/database.yml")
+ # FileUtils.cp "config/database.yml.sample", "config/database.yml"
# end
puts "\n== Preparing database =="
- system! 'bin/rails db:prepare'
+ system! "bin/rails db:prepare"
puts "\n== Removing old logs and tempfiles =="
- system! 'bin/rails log:clear tmp:clear'
+ system! "bin/rails log:clear tmp:clear"
puts "\n== Restarting application server =="
- system! 'bin/rails restart'
+ system! "bin/rails restart"
end
diff --git a/config/application.rb b/config/application.rb
index 8a09c281d..caeb0cf38 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -13,7 +13,7 @@
module MobileContentApi
class Application < Rails::Application
# Initialize configuration defaults for originally generated Rails version.
- config.load_defaults 6.1
+ config.load_defaults 7.0
# Configuration for the application, engines, and railties goes here.
#
diff --git a/config/database.yml b/config/database.yml
index 15d2b34e8..a32ece8f0 100644
--- a/config/database.yml
+++ b/config/database.yml
@@ -2,7 +2,7 @@
# gem install sqlite3
#
# Ensure the SQLite 3 gem is defined in your Gemfile
-# gem 'sqlite3'
+# gem "sqlite3"
#
development: &development
adapter: postgresql
diff --git a/config/environments/development.rb b/config/environments/development.rb
index d67e78144..1ea92bab0 100644
--- a/config/environments/development.rb
+++ b/config/environments/development.rb
@@ -14,9 +14,12 @@
# Show full error reports.
config.consider_all_requests_local = true
+ # Enable server timing
+ config.server_timing = true
+
# Enable/disable caching. By default caching is disabled.
# Run rails dev:cache to toggle caching.
- if Rails.root.join("tmp", "caching-dev.txt").exist?
+ if Rails.root.join("tmp/caching-dev.txt").exist?
config.action_controller.perform_caching = true
config.action_controller.enable_fragment_cache_logging = true
@@ -53,24 +56,12 @@
# Highlight code that triggered database queries in logs.
config.active_record.verbose_query_logs = true
- # Debug mode disables concatenation and preprocessing of assets.
- # This option may cause significant delays in view rendering with a large
- # number of complex assets.
- config.assets.debug = true
-
- # Suppress logger output for asset requests.
- config.assets.quiet = true
-
# Raises error for missing translations.
# config.i18n.raise_on_missing_translations = true
# Annotate rendered view with file names.
# config.action_view.annotate_rendered_view_with_filenames = true
- # Use an evented file watcher to asynchronously detect changes in source code,
- # routes, locales, etc. This feature depends on the listen gem.
- config.file_watcher = ActiveSupport::EventedFileUpdateChecker
-
# Uncomment if you wish to allow Action Cable access from any origin.
# config.action_cable.disable_request_forgery_protection = true
diff --git a/config/environments/production.rb b/config/environments/production.rb
index 6a2ba01bb..cb172ffe8 100644
--- a/config/environments/production.rb
+++ b/config/environments/production.rb
@@ -31,19 +31,19 @@
config.assets.compile = false
# Enable serving of images, stylesheets, and JavaScripts from an asset server.
- # config.asset_host = 'http://assets.example.com'
+ # config.asset_host = "http://assets.example.com"
# Specifies the header that your server uses for sending files.
- # config.action_dispatch.x_sendfile_header = 'X-Sendfile' # for Apache
- # config.action_dispatch.x_sendfile_header = 'X-Accel-Redirect' # for NGINX
+ # config.action_dispatch.x_sendfile_header = "X-Sendfile" # for Apache
+ # config.action_dispatch.x_sendfile_header = "X-Accel-Redirect" # for NGINX
# Store uploaded files on the local file system (see config/storage.yml for options).
config.active_storage.service = :amazon
# Mount Action Cable outside main process or domain.
# config.action_cable.mount_path = nil
- # config.action_cable.url = 'wss://example.com/cable'
- # config.action_cable.allowed_request_origins = [ 'http://example.com', /http:\/\/example.*/ ]
+ # config.action_cable.url = "wss://example.com/cable"
+ # config.action_cable.allowed_request_origins = [ "http://example.com", /http:\/\/example.*/ ]
# Force all access to the app over SSL, use Strict-Transport-Security, and use secure cookies.
if ENV["AWS_EXECUTION_ENV"].present?
@@ -79,14 +79,8 @@
# the I18n.default_locale when a translation cannot be found).
config.i18n.fallbacks = true
- # Send deprecation notices to registered listeners.
- config.active_support.deprecation = :notify
-
- # Log disallowed deprecations.
- config.active_support.disallowed_deprecation = :log
-
- # Tell Active Support which deprecation messages to disallow.
- config.active_support.disallowed_deprecation_warnings = []
+ # Don't log any deprecations.
+ config.active_support.report_deprecations = false
# Use default logging formatter so that PID and timestamp are not suppressed.
# config.log_formatter = ::Logger::Formatter.new
@@ -108,27 +102,6 @@
# Do not dump schema after migrations.
config.active_record.dump_schema_after_migration = false
- # Inserts middleware to perform automatic connection switching.
- # The `database_selector` hash is used to pass options to the DatabaseSelector
- # middleware. The `delay` is used to determine how long to wait after a write
- # to send a subsequent read to the primary.
- #
- # The `database_resolver` class is used by the middleware to determine which
- # database is appropriate to use based on the time delay.
- #
- # The `database_resolver_context` class is used by the middleware to set
- # timestamps for the last write to the primary. The resolver uses the context
- # class timestamps to determine how long to wait before reading from the
- # replica.
- #
- # By default Rails will store a last write timestamp in the session. The
- # DatabaseSelector middleware is designed as such you can define your own
- # strategy for connection switching and pass that into the middleware through
- # these configuration options.
- # config.active_record.database_selector = { delay: 2.seconds }
- # config.active_record.database_resolver = ActiveRecord::Middleware::DatabaseSelector::Resolver
- # config.active_record.database_resolver_context = ActiveRecord::Middleware::DatabaseSelector::Resolver::Session
-
# Action cable
config.secret_key_base = ENV["SECRET_KEY_BASE"]
config.action_cable.disable_request_forgery_protection = true
diff --git a/config/environments/test.rb b/config/environments/test.rb
index 99e27a60a..20bbe67ec 100644
--- a/config/environments/test.rb
+++ b/config/environments/test.rb
@@ -8,13 +8,13 @@
Rails.application.configure do
# Settings specified here will take precedence over those in config/application.rb.
- config.cache_classes = false
- config.action_view.cache_template_loading = true
+ # Turn false under Spring and add config.action_view.cache_template_loading = true.
+ config.cache_classes = true
- # Do not eager load code on boot. This avoids loading your whole application
- # just for the purpose of running a single test. If you are using a tool that
- # preloads Rails for running tests, you may have to set it to true.
- config.eager_load = false
+ # Eager loading loads your whole application. When running a single test locally,
+ # this probably isn't necessary. It's a good idea to do in a continuous integration
+ # system, or in some way before deploying your code.
+ config.eager_load = ENV["CI"].present?
# Configure public file server for tests with Cache-Control for performance.
config.public_file_server.enabled = true
diff --git a/config/initializers/application_controller_renderer.rb b/config/initializers/application_controller_renderer.rb
deleted file mode 100644
index 89d2efab2..000000000
--- a/config/initializers/application_controller_renderer.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# ActiveSupport::Reloader.to_prepare do
-# ApplicationController.renderer.defaults.merge!(
-# http_host: 'example.org',
-# https: false
-# )
-# end
diff --git a/config/initializers/assets.rb b/config/initializers/assets.rb
deleted file mode 100644
index c1f948d01..000000000
--- a/config/initializers/assets.rb
+++ /dev/null
@@ -1,14 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Version of your assets, change this if you want to expire all your assets.
-Rails.application.config.assets.version = "1.0"
-
-# Add additional assets to the asset load path.
-# Rails.application.config.assets.paths << Emoji.images_path
-# Add Yarn node_modules folder to the asset load path.
-Rails.application.config.assets.paths << Rails.root.join("node_modules")
-
-# Precompile additional assets.
-# application.js, application.css, and all non-JS/CSS in the app/assets
-# folder are already added.
-# Rails.application.config.assets.precompile += %w( admin.js admin.css )
diff --git a/config/initializers/backtrace_silencers.rb b/config/initializers/backtrace_silencers.rb
deleted file mode 100644
index 33699c309..000000000
--- a/config/initializers/backtrace_silencers.rb
+++ /dev/null
@@ -1,8 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# You can add backtrace silencers for libraries that you're using but don't wish to see in your backtraces.
-# Rails.backtrace_cleaner.add_silencer { |line| /my_noisy_library/.match?(line) }
-
-# You can also remove all the silencers if you're trying to debug a problem that might stem from framework code
-# by setting BACKTRACE=1 before calling your invocation, like "BACKTRACE=1 ./bin/rails runner 'MyClass.perform'".
-Rails.backtrace_cleaner.remove_silencers! if ENV["BACKTRACE"]
diff --git a/config/initializers/content_security_policy.rb b/config/initializers/content_security_policy.rb
index 35d0f26fc..54f47cf15 100644
--- a/config/initializers/content_security_policy.rb
+++ b/config/initializers/content_security_policy.rb
@@ -1,30 +1,25 @@
# Be sure to restart your server when you modify this file.
-# Define an application-wide content security policy
-# For further information see the following documentation
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy
+# Define an application-wide content security policy.
+# See the Securing Rails Applications Guide for more information:
+# https://guides.rubyonrails.org/security.html#content-security-policy-header
-# Rails.application.config.content_security_policy do |policy|
-# policy.default_src :self, :https
-# policy.font_src :self, :https, :data
-# policy.img_src :self, :https, :data
-# policy.object_src :none
-# policy.script_src :self, :https
-# policy.style_src :self, :https
-# # If you are using webpack-dev-server then specify webpack-dev-server host
-# policy.connect_src :self, :https, "http://localhost:3035", "ws://localhost:3035" if Rails.env.development?
-
-# # Specify URI for violation reports
-# # policy.report_uri "/csp-violation-report-endpoint"
+# Rails.application.configure do
+# config.content_security_policy do |policy|
+# policy.default_src :self, :https
+# policy.font_src :self, :https, :data
+# policy.img_src :self, :https, :data
+# policy.object_src :none
+# policy.script_src :self, :https
+# policy.style_src :self, :https
+# # Specify URI for violation reports
+# # policy.report_uri "/csp-violation-report-endpoint"
+# end
+#
+# # Generate session nonces for permitted importmap and inline scripts
+# config.content_security_policy_nonce_generator = ->(request) { request.session.id.to_s }
+# config.content_security_policy_nonce_directives = %w(script-src)
+#
+# # Report violations without enforcing the policy.
+# # config.content_security_policy_report_only = true
# end
-
-# If you are using UJS then enable automatic nonce generation
-# Rails.application.config.content_security_policy_nonce_generator = -> request { SecureRandom.base64(16) }
-
-# Set the nonce only to specific directives
-# Rails.application.config.content_security_policy_nonce_directives = %w(script-src)
-
-# Report CSP violations to a specified URI
-# For further information see the following documentation:
-# https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only
-# Rails.application.config.content_security_policy_report_only = true
diff --git a/config/initializers/cookies_serializer.rb b/config/initializers/cookies_serializer.rb
deleted file mode 100644
index 5a6a32d37..000000000
--- a/config/initializers/cookies_serializer.rb
+++ /dev/null
@@ -1,5 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Specify a serializer for the signed and encrypted cookie jars.
-# Valid options are :json, :marshal, and :hybrid.
-Rails.application.config.action_dispatch.cookies_serializer = :json
diff --git a/config/initializers/filter_parameter_logging.rb b/config/initializers/filter_parameter_logging.rb
index 2899da4ec..adc6568ce 100644
--- a/config/initializers/filter_parameter_logging.rb
+++ b/config/initializers/filter_parameter_logging.rb
@@ -1,6 +1,8 @@
# Be sure to restart your server when you modify this file.
-# Configure sensitive parameters which will be filtered from the log file.
+# Configure parameters to be filtered from the log file. Use this to limit dissemination of
+# sensitive information. See the ActiveSupport::ParameterFilter documentation for supported
+# notations and behaviors.
Rails.application.config.filter_parameters += [
- :password, :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
+ :passw, :secret, :token, :_key, :crypt, :salt, :certificate, :otp, :ssn
]
diff --git a/config/initializers/inflections.rb b/config/initializers/inflections.rb
index ac033bf9d..3860f659e 100644
--- a/config/initializers/inflections.rb
+++ b/config/initializers/inflections.rb
@@ -4,13 +4,13 @@
# are locale specific, and you may define rules for as many different
# locales as you wish. All of these examples are active by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.plural /^(ox)$/i, '\1en'
-# inflect.singular /^(ox)en/i, '\1'
-# inflect.irregular 'person', 'people'
+# inflect.plural /^(ox)$/i, "\\1en"
+# inflect.singular /^(ox)en/i, "\\1"
+# inflect.irregular "person", "people"
# inflect.uncountable %w( fish sheep )
# end
# These inflection rules are supported but not enabled by default:
# ActiveSupport::Inflector.inflections(:en) do |inflect|
-# inflect.acronym 'RESTful'
+# inflect.acronym "RESTful"
# end
diff --git a/config/initializers/mime_types.rb b/config/initializers/mime_types.rb
deleted file mode 100644
index dc1899682..000000000
--- a/config/initializers/mime_types.rb
+++ /dev/null
@@ -1,4 +0,0 @@
-# Be sure to restart your server when you modify this file.
-
-# Add new mime types for use in respond_to blocks:
-# Mime::Type.register "text/richtext", :rtf
diff --git a/config/initializers/new_framework_defaults_6_1.rb b/config/initializers/new_framework_defaults_6_1.rb
deleted file mode 100644
index 9526b835a..000000000
--- a/config/initializers/new_framework_defaults_6_1.rb
+++ /dev/null
@@ -1,67 +0,0 @@
-# Be sure to restart your server when you modify this file.
-#
-# This file contains migration options to ease your Rails 6.1 upgrade.
-#
-# Once upgraded flip defaults one by one to migrate to the new default.
-#
-# Read the Guide for Upgrading Ruby on Rails for more info on each option.
-
-# Support for inversing belongs_to -> has_many Active Record associations.
-# Rails.application.config.active_record.has_many_inversing = true
-
-# Track Active Storage variants in the database.
-# Rails.application.config.active_storage.track_variants = true
-
-# Apply random variation to the delay when retrying failed jobs.
-# Rails.application.config.active_job.retry_jitter = 0.15
-
-# Stop executing `after_enqueue`/`after_perform` callbacks if
-# `before_enqueue`/`before_perform` respectively halts with `throw :abort`.
-# Rails.application.config.active_job.skip_after_callbacks_if_terminated = true
-
-# Specify cookies SameSite protection level: either :none, :lax, or :strict.
-#
-# This change is not backwards compatible with earlier Rails versions.
-# It's best enabled when your entire app is migrated and stable on 6.1.
-# Rails.application.config.action_dispatch.cookies_same_site_protection = :lax
-
-# Generate CSRF tokens that are encoded in URL-safe Base64.
-#
-# This change is not backwards compatible with earlier Rails versions.
-# It's best enabled when your entire app is migrated and stable on 6.1.
-# Rails.application.config.action_controller.urlsafe_csrf_tokens = true
-
-# Specify whether `ActiveSupport::TimeZone.utc_to_local` returns a time with an
-# UTC offset or a UTC time.
-# ActiveSupport.utc_to_local_returns_utc_offset_times = true
-
-# Change the default HTTP status code to `308` when redirecting non-GET/HEAD
-# requests to HTTPS in `ActionDispatch::SSL` middleware.
-# Rails.application.config.action_dispatch.ssl_default_redirect_status = 308
-
-# Use new connection handling API. For most applications this won't have any
-# effect. For applications using multiple databases, this new API provides
-# support for granular connection swapping.
-# Rails.application.config.active_record.legacy_connection_handling = false
-
-# Make `form_with` generate non-remote forms by default.
-# Rails.application.config.action_view.form_with_generates_remote_forms = false
-
-# Set the default queue name for the analysis job to the queue adapter default.
-# Rails.application.config.active_storage.queues.analysis = nil
-
-# Set the default queue name for the purge job to the queue adapter default.
-# Rails.application.config.active_storage.queues.purge = nil
-
-# Set the default queue name for the incineration job to the queue adapter default.
-# Rails.application.config.action_mailbox.queues.incineration = nil
-
-# Set the default queue name for the routing job to the queue adapter default.
-# Rails.application.config.action_mailbox.queues.routing = nil
-
-# Set the default queue name for the mail deliver job to the queue adapter default.
-# Rails.application.config.action_mailer.deliver_later_queue_name = nil
-
-# Generate a `Link` header that gives a hint to modern browsers about
-# preloading assets when using `javascript_include_tag` and `stylesheet_link_tag`.
-# Rails.application.config.action_view.preload_links_header = true
diff --git a/config/initializers/new_framework_defaults_7_0.rb b/config/initializers/new_framework_defaults_7_0.rb
new file mode 100644
index 000000000..b2fc1683c
--- /dev/null
+++ b/config/initializers/new_framework_defaults_7_0.rb
@@ -0,0 +1,141 @@
+# Be sure to restart your server when you modify this file.
+#
+# This file eases your Rails 7.0 framework defaults upgrade.
+#
+# Uncomment each configuration one by one to switch to the new default.
+# Once your application is ready to run with all new defaults, you can remove
+# this file and set the `config.load_defaults` to `7.0`.
+#
+# Read the Guide for Upgrading Ruby on Rails for more info on each option.
+# https://guides.rubyonrails.org/upgrading_ruby_on_rails.html
+
+# `button_to` view helper will render `