- Homebrew
- Docker (incl. Docker Compose, which already part of Docker for Mac and Docker Toolbox) > v4.0 (with support for
docker compose
) - asdf
Build the docker image, set up environment variables, and add a nicer local hostname (curriculum.teachcomputing.rpfdev.com):
sh scripts/setup.sh
Optionally set a password for postgres by updating the value for DEV_PASS
in your .env
file.
Start the stack:
yarn run start
NOTE: The first run can take some time as bundle install
will be run for the first time, tailing the logs with docker compose logs -f
is recommended.
The app is then available at: http://curriculum.teachcomputing.rpfdev.com ( and http://localhost:3020 )
Stop the stack:
yarn run stop
View logs (add -f to tail, and/or append a container name such as 'curriculum' to tail only that container):
docker compose logs
For example
docker compose -f logs curriculum
The database is automatically setup the first time the container is run, and a migration is performed on each subsequent run.
yarn run reset-db
To perform migrations manually (without restarting the container) run:
yarn run exec rails db:migrate
To seed manually run:
docker compose run --rm --no-deps curriculum rails db:seed
The bundle has now been moved to a separate volume and once the initial build has taken place the bundle directory is mapped to a volume and persisted.
To install/update a new gem, first update the Gemfile then run:
yarn run bundle-install
To reinstall all packages:
docker compose build (--no-cache to force it build from scratch)
Uses rspec
yarn test
To use guard to watch the tests:
yarn run guard
Used for linting ERB / HTML files
Run with bundle exec erblint --lint-all
https://github.com/Shopify/erb-lint
Used for detecting 'code smell' in your app.
Run with bundle exec reek
Used for static code analysis to check for potential security flaws.
https://brakemanscanner.org/docs/quickstart/
We are ignoring some of the warnings using the method described in the Brakeman docs We are using the default location for the ignore file, etc.
Run brakeman -i config/brakeman.ignore .
in the project root and follow the onscreen prompts, outlined in the above doc, to use the tool and check the output for warnings, etc.
erd.pdf
will be generated automatically whenever new migrations are run.
To generate erd.pdf
manually:
docker-compose run curriculum bundle exec erd
ruby-debug-ide
is enabled and waiting for connections by default on port 1236
. There is a launch.json
in the repo and if you're using vscode it should be as easy as going to the 'Run' view, selecting 'Debug Attach' and clicking the green Run button. It's important to note that if you attempt to restart or stop the debug process, this will effectively kill the container, and a docker compose up -d
will be necessary to continue - however this is rarely necessary in general use since you'll be debugging individual requests.
If you prefer to use byebug
you'll first need to attach to the container which can be done with the command: docker attach curriculumteachcomputingorg_curriculum_1
(the container name can be checked with docker compose ps
, but mostly it'll be the one here), then add your breakpoint and trigger your request. Again ending the session by quitting byebug or hitting ctrl+c
will kill the container, so you'll need to run docker compose up -d
again.
I can access the site at
localhost:3020
but not atcurriculum.teachcomputing.rpfdev.com
In some circumstances the nginx instance used by dev-nginx may go down, just run dev-nginx restart-nginx
to bring it up again.
- You must have access to the Heroku apps for staging and production.
To copy the production database into the staging database run:
./bin/sync-db/production-to-staging.sh