Uploaded June 2025 | Updated September 2026, 3 weeks ago
We in the previous videos, we technically upgraded our app to Rails 8, but we are not yet getting many of the benefits a newly generated Rails 8 app will have. In this video, we unlock the following new features in Rails 8 that didn't automatically get added when we upgraded the app:
- Propshaft: Modern asset pipeline libary and replacement for Sprockets.
- Thruster: An HTTP/2 proxy for simple production-ready Rails deployments.
- Solid Queue: Database backend for ActiveJob, as an alternative to Resque or Sidekiq.
- Solid Cache: Database backend for caching. Allows caches to live far longer and reduce your cache miss rate.
- Solid Cable: Database backend for ActionCable, as an alternative to Redis.
- Kamal: A deployment tool for bare metal or cloud that uses Docker.
- Dockerfile: Used to specify the build for the Docker images used by Kamal.
We end up using and configuring SQLite3 for the Solid Trifecta database instead of creating more PostgreSQL databases to support the back-end of those features. Our application database remains PostgreSQL (at least for now).
Most of the new additions were fairly straightforward to get set up, with the exception of the Dockerfile. As of May 2025, there doesn't appear to be a `rails` command to invoke the Dockerfile generator. We ended up just copying the Dockerfile from a newly generated Rails 8 app after trying to manually create one from the generator template.
After we set everyting up, our app is now truly upgraded to Rails 8.0! We open a pull request back into the main branch, merge it in and close our issue on GitHub.
This video covers:
0:00:00 Introduction and overview of approach
0:04:45 Compare the current Gemfile with the one generated by a Rails 8 app with `rails new` and modify the NerdDice.com Gemfile
0:08:37 Run `bundle update` and `bin/rails app:update` commands (accepting all new changes)
0:09:25 Review the git diff, restore SimpleCov config
0:10:08 Run RuboCop. Add bin/setup and config/environments/production.rb to ignore STDOUT violations
0:11:40 Update the head tag in the application.html.erb layout to the new format and do a regression test
0:13:58 Copy the placeholder Progressive Web App configuration from the Rails 8 app and update the app name
0:15:18 Take an inventory of what still needs to be done. Delete generated framework defaults file
0:16:43 Run the install commands for SolidQueue, SolidCache, and SolidCable and review the Git diff
0:19:46 Set up the database and environment, and Puma configuration for SolidQueue, SolidCache, and SolidCable. Retest.
0:27:16 Initialize Kamal
0:27:43 Get Dockerfile, docker-entrypoint, and .dockerignore files into the project, evaluate the template logic to manually edit.
0:33:51 Pivot and copy the generated Dockerfile from the generated Rails 8 app into the Dockerfile
0:34:40 Run Rubocop. Auto-correct violations. Add db/queue_schema.rb to ignore in .rubocop.yml. Re-run tests.
0:35:28 Commit and push code, pull request into main, update backlog, close issue.
#ruby #rails8 #solidqueue #solidcache #solidcable #kamal #propshaft #thruster #dockerfile #rails #rubyonrails #rubygems #codecast #screencast #github #opensource #minitest #TDD #agile #NerdDice #DnD #roleplaying #softwaredevelopment #learntocode #tailwind #postgresql #rubocop #devise #turbo #controllers #views #selenium #capybara #systemtest
Featured Playlist:
- youtube.com/playlist?list=PL9kkbu1kLUeMJFb0GT8ZMzrsSKJaxjOKH
See other related StatelessCode videos:
- youtu.be/QbeSvdAxknk
- youtu.be/RGmj7QcCVmM
- youtu.be/RR31ztGtrhA
- youtu.be/JimjiXQoGJ8
- youtu.be/FoCoBd2fZk4
- youtu.be/H0PvsE4GuSE
- youtu.be/jJFdsJfBk58
Resources that we relied upon for this solution:
- Propshaft: github.com/rails/propshaft
- Thruster: github.com/basecamp/thruster
- Solid Queue: github.com/rails/solid_queue
- Solid Cache: github.com/rails/solid_cache
- Solid Cable: github.com/rails/solid_cable
- Kamal: kamal-deploy.org
GitHub Commit for this Video:
- github.com/statelesscode/nerd_dice_dot_com/commit/b8444c9
This video is CC0 - No rights reserved. (YouTube doesn't allow this option when publishing.) All code is released under the UNLICENSE. Stateless Code denies the concept of "intellectual property". Copying is not stealing.
We in the previous videos, we technically upgraded our app to Rails 8, but we are not yet getting many of the benefits a newly generated Rails 8 app will have. In this video, we unlock the following new features in Rails 8 that didn't automatically get added when we upgraded the app:
- Propshaft: Modern asset pipeline libary and replacement for Sprockets.
- Thruster: An HTTP/2 proxy for simple production-ready Rails deployments.
- Solid Queue: Database backend for ActiveJob, as an alternative to Resque or Sidekiq.
- Solid Cache: Database backend for caching. Allows caches to live far longer and reduce your cache miss rate.
- Solid Cable: Database backend for ActionCable, as an alternative to Redis.
- Kamal: A deployment tool for bare metal or cloud that uses Docker.
- Dockerfile: Used to specify the build for the Docker images used by Kamal.
We end up using and configuring SQLite3 for the Solid Trifecta database instead of creating more PostgreSQL databases to support the back-end of those features. Our application database remains PostgreSQL (at least for now).
Most of the new additions were fairly straightforward to get set up, with the exception of the Dockerfile. As of May 2025, there doesn't appear to be a `rails` command to invoke the Dockerfile generator. We ended up just copying the Dockerfile from a newly generated Rails 8 app after trying to manually create one from the generator template.
After we set everyting up, our app is now truly upgraded to Rails 8.0! We open a pull request back into the main branch, merge it in and close our issue on GitHub.
This video covers:
0:00:00 Introduction and overview of approach
0:04:45 Compare the current Gemfile with the one generated by a Rails 8 app with `rails new` and modify the NerdDice.com Gemfile
0:08:37 Run `bundle update` and `bin/rails app:update` commands (accepting all new changes)
0:09:25 Review the git diff, restore SimpleCov config
0:10:08 Run RuboCop. Add bin/setup and config/environments/production.rb to ignore STDOUT violations
0:11:40 Update the head tag in the application.html.erb layout to the new format and do a regression test
0:13:58 Copy the placeholder Progressive Web App configuration from the Rails 8 app and update the app name
0:15:18 Take an inventory of what still needs to be done. Delete generated framework defaults file
0:16:43 Run the install commands for SolidQueue, SolidCache, and SolidCable and review the Git diff
0:19:46 Set up the database and environment, and Puma configuration for SolidQueue, SolidCache, and SolidCable. Retest.
0:27:16 Initialize Kamal
0:27:43 Get Dockerfile, docker-entrypoint, and .dockerignore files into the project, evaluate the template logic to manually edit.
0:33:51 Pivot and copy the generated Dockerfile from the generated Rails 8 app into the Dockerfile
0:34:40 Run Rubocop. Auto-correct violations. Add db/queue_schema.rb to ignore in .rubocop.yml. Re-run tests.
0:35:28 Commit and push code, pull request into main, update backlog, close issue.
#ruby #rails8 #solidqueue #solidcache #solidcable #kamal #propshaft #thruster #dockerfile #rails #rubyonrails #rubygems #codecast #screencast #github #opensource #minitest #TDD #agile #NerdDice #DnD #roleplaying #softwaredevelopment #learntocode #tailwind #postgresql #rubocop #devise #turbo #controllers #views #selenium #capybara #systemtest
Featured Playlist:
- youtube.com/playlist?list=PL9kkbu1kLUeMJFb0GT8ZMzrsSKJaxjOKH
See other related StatelessCode videos:
- youtu.be/QbeSvdAxknk
- youtu.be/RGmj7QcCVmM
- youtu.be/RR31ztGtrhA
- youtu.be/JimjiXQoGJ8
- youtu.be/FoCoBd2fZk4
- youtu.be/H0PvsE4GuSE
- youtu.be/jJFdsJfBk58
Resources that we relied upon for this solution:
- Propshaft: github.com/rails/propshaft
- Thruster: github.com/basecamp/thruster
- Solid Queue: github.com/rails/solid_queue
- Solid Cache: github.com/rails/solid_cache
- Solid Cable: github.com/rails/solid_cable
- Kamal: kamal-deploy.org
GitHub Commit for this Video:
- github.com/statelesscode/nerd_dice_dot_com/commit/b8444c9
This video is CC0 - No rights reserved. (YouTube doesn't allow this option when publishing.) All code is released under the UNLICENSE. Stateless Code denies the concept of "intellectual property". Copying is not stealing.










