This application is being created to run a wrestling tournament.
License: MIT License
Public Production Url: https://wrestlingdev.com
App Info
- Ruby 3.0.0
- Rails 6.1.2
- DB mysql or mariadb
- Memcached
- Delayed Jobs
All dependencies are wrapped in docker. Tests can be run with bash bin/run-tests-with-docker.sh
. That is the same command used in CI.
If you want to run a full rails environment shell in docker run: bash bin/rails-dev-run.sh wrestlingapp-dev
From here, you can run the normal rails commands.
rake db:seed
Development login email from seed data:[email protected]
password:password
rake test
rails generate blah blah blah
rails s -b 0.0.0.0
port 3000 is exposed. You can open http://localhost:3000 after running that command- etc.
rake finish_seed_tournaments
will complete all matches from the seed data. This command takes about 5 minutes to execute
To deploy a a full local version of the app bash deploy/deploy-test.sh
(this requires docker-compose to be installed). This deploys a full version of the app. App, delayed job, memcached, and mariadb. Now, you can open http://localhost. Delayed jobs are turned off in dev and everything that is a delayed job in prod just runs in browser.
To run a single test file:
- Get a shell with ruby and rails:
bash bin/rails-dev-run.sh wrestlingdev-development
rake test TEST=test/models/match_test.rb
To run a single test inside a file:
- Get a shell with ruby and rails:
bash bin/rails-dev-run.sh wrestlingdev-development
rake test TEST=test/models/match_test.rb TESTOPTS="--name='/test_Match_should_not_be_valid_if_an_incorrect_win_type_is_given/'"
bash bin/rails-dev-run.sh wrestlingdev-dev
to open a contianer with a rails shell availablebundle config --delete without
to remove the bundle config that ignores production gemsbundle update
Note: If updating rails, do not change the version in Gemfile
until after you run bash bin/run-rails-dev.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.
The production version of this is currently deployed in Kubernetes. See Deploying with Kubernetes
Required environment variables for deployment
WRESTLINGDEV_DB_NAME=databasename
WRESTLINGDEV_DB_USER=databaseusername
WRESTLINGDEV_DB_PWD=databasepassword
WRESTLINGDEV_DB_HOST=database.homename
WRESTLINGDEV_DB_PORT=databaseport
WRESTLINGDEV_DEVISE_SECRET_KEY=devise_key
can be generated withrake secret
WRESTLINGDEV_SECRET_KEY_BASE=secret_key
can be generated withrake secret
WRESTLINGDEV_EMAIL_PWD=emailpwd
Email has to be a gmail account for now.WRESTLINGDEV_EMAIL=email address
Optional environment variables
MEMCACHIER_PASSWORD=memcachier_password
needed for caching passwordMEMCACHIER_SERVERS=memcachier_hostname:memcachier_port
needed for cachingMEMCACHIER_USERNAME=memcachier_username
needed for cachingWRESTLINGDEV_NEW_RELIC_LICENSE_KEY=new_relic_license_key
this is only needed to use new relicWRESTLINGDEV_INFLUXDB_DATABASE=influx_db_name
to send metrics to influxdb this is requiredWRESTLINGDEV_INFLUXDB_HOST=influx_db_ip_or_hostname
to send metrics to influxdb this is requiredWRESTLINGDEV_INFLUXDB_PORT=influx_db_port
to send metrics to influxdb this is requiredWRESTLINGDEV_INFLUXDB_USERNAME=influx_db_username
to send metrics to influxdb this is optionalWRESTLINGDEV_INFLUXDB_PASSWORD=influx_db_password
to send metrics to influxdb this is optional