mirror of
https://github.com/jcwimer/wrestlingApp
synced 2026-04-16 04:56:58 +00:00
Added Stimulus and moved the matstats vanilla js to stimulus controllers. Same with the spectate page.
This commit is contained in:
47
README.md
47
README.md
@@ -8,10 +8,12 @@ This application is being created to run a wrestling tournament.
|
||||
|
||||
**App Info**
|
||||
* Ruby 3.2.0
|
||||
* Rails 8.0.0
|
||||
* Rails 8.0.2
|
||||
* DB MySQL/MariaDB
|
||||
* Memcached
|
||||
* Solid Queue for background job processing
|
||||
* Solid Cache -> MySQL/MariaDB for html partial caching
|
||||
* Solid Queue -> MySQL/MariaDB for background job processing
|
||||
* Solid Cable -> MySQL/MariaDB for websocket channels
|
||||
* Hotwired Stimulus for client-side JavaScript
|
||||
|
||||
# Development
|
||||
|
||||
@@ -106,9 +108,24 @@ See `SOLID_QUEUE.md` for more details about the job system.
|
||||
Note: If updating rails, do not change the version in `Gemfile` until after you run `bash bin/rails-dev-run.sh wrestlingdev-dev`. Creating the container will fail due to a mismatch in Gemfile and Gemfile.lock.
|
||||
Then run `rails app:update` to update rails.
|
||||
|
||||
## Stimulus Controllers
|
||||
|
||||
The application uses Hotwired Stimulus for client-side JavaScript interactivity. Controllers can be found in `app/asssets/javascripts/controllers`
|
||||
|
||||
### Testing Stimulus Controllers
|
||||
|
||||
The Stimulus controllers are tested using Cypress end-to-end tests:
|
||||
|
||||
```bash
|
||||
# Run Cypress tests in headless mode
|
||||
bash cypress-tests/run-cypress-tests.sh
|
||||
```
|
||||
|
||||
# Deployment
|
||||
|
||||
The production version of this is currently deployed in Kubernetes. See [Deploying with Kubernetes](deploy/kubernetes/README.md)
|
||||
The production version of this is currently deployed in Kubernetes (via K3s). See [Deploying with Kubernetes](deploy/kubernetes/README.md)
|
||||
|
||||
I'm using a Hetzner dedicated server with an i7-8700, 500GB NVME (RAID1), and 64GB ECC RAM. I have a hot standby (SQL read only replication) in my homelab.
|
||||
|
||||
## Server Configuration
|
||||
|
||||
@@ -122,11 +139,6 @@ The application uses an intelligent auto-scaling configuration for Puma (the web
|
||||
- **SolidQueue Integration**: When `SOLID_QUEUE_IN_PUMA=true`, background jobs run within the Puma process.
|
||||
- **Database Connection Pool**: Automatically sized based on the maximum number of threads across all workers.
|
||||
|
||||
The configuration is designed to adapt to different environments:
|
||||
- Small servers: Uses fewer workers to avoid memory exhaustion
|
||||
- Large servers: Scales up to utilize available CPU cores
|
||||
- Development: Uses a single worker for simplicity
|
||||
|
||||
All of these settings can be overridden with environment variables if needed.
|
||||
|
||||
To see the current configuration in the logs, look for these lines on startup:
|
||||
@@ -172,11 +184,11 @@ SolidQueue plugin enabled in Puma
|
||||
* `WRESTLINGDEV_INFLUXDB_USERNAME` - InfluxDB username (optional)
|
||||
* `WRESTLINGDEV_INFLUXDB_PASSWORD` - InfluxDB password (optional)
|
||||
|
||||
See `SOLID_QUEUE.md` for details about the job system configuration.
|
||||
|
||||
This project provides multiple ways to develop and deploy, with Docker being the primary method.
|
||||
|
||||
# Sprockets to Propshaft Migration
|
||||
# Frontend Assets
|
||||
|
||||
## Sprockets to Propshaft Migration
|
||||
|
||||
- Propshaft will automatically include in its search paths the folders vendor/assets, lib/assets and app/assets of your project and of all the gems in your Gemfile. You can see all included files by using the reveal rake task: `rake assets:reveal`. When importing you'll use the relative path from this command.
|
||||
- All css files are imported via `app/assets/stylesheets/application.css`. This is imported on `app/views/layouts/application.html.erb`.
|
||||
@@ -185,4 +197,13 @@ This project provides multiple ways to develop and deploy, with Docker being the
|
||||
- Jquery, bootstrap, datatables have been downloaded locally to `vendor/`
|
||||
- Turbo and action cable are gems and get pathed properly by propshaft.
|
||||
- development is "nobuild" with `config.assets.build_assets = false` in `config/environments/development.rb`
|
||||
- production needs to run rake assets:precompile. This is done in the `deploy/rails-prod-Dockerfile`.
|
||||
- production needs to run rake assets:precompile. This is done in the `deploy/rails-prod-Dockerfile`.
|
||||
|
||||
## Stimulus Implementation
|
||||
|
||||
The application has been migrated from using vanilla JavaScript to Hotwired Stimulus. The Stimulus controllers are organized in:
|
||||
|
||||
- `app/assets/javascripts/controllers/` - Contains all Stimulus controllers
|
||||
- `app/assets/javascripts/application.js` - Registers and loads all controllers
|
||||
|
||||
The importmap configuration in `config/importmap.rb` handles the loading of all JavaScript dependencies including Stimulus controllers.
|
||||
Reference in New Issue
Block a user