The following instructions were tested to work with the following software versions:
- Vagrant 1.9.3
- VirtualBox 5.0.32
- Check out the git repository -
git clone firstname.lastname@example.org:MuckRock/muckrock.git
- Enter the directory -
- Set up your virtual machine
- You may edit the file
~/muckrock/.settings.shif you would like to set up accounts and passwords for any external providers - you should be able to develop without these unless you specifically need to use and test them
You should have a fully populated MuckRock site set up locally now. The code checked out from GitHub is synced between the virtual machine and your host machine, so you may edit the code using your favorite text editor locally while running the code from within the virtual machine.
- The following commands should be run from the MuckRock directory inside the virtual machine:
fab mailto start a background email server (in order to log email sent during development)
fab celeryto start a background task queue (in order to use celery during development)
fab runserverto start a server instance
- Navigate your web browser (from the host machine) to
- You may log in as a super user with the username
Update search index
The index should stay updated. If a new model is registered with watson, then build the index (
fab manage:buildwatson). This command should be run on any staging or production servers when pushing code that updates the registration.
To add a dependency, list it in one of the two
.in files inside the
dev-requirements.in file is used for local libraries, like testing suites.
requirements.in file is used for production libraries—stuff that should run on Heroku.
When entering a dependency, make sure to append a comment explaining its purpose. This is hugely helpful when it comes to navigating dependency hell.
After entering your dependency in the
.in file, run
fab pip-compile to canonize your change.
Test and lint
- Test your code in one of two ways:
fab testto run all the tests.
fab test:muckrock.<app>to test a particular application.
fab test:muckrock,1to reuse the database between tests, which saves a ton of time.
- Lint your Python by running
npm run lint.
- All code should be formatted by
isort. You can format your code by running
fab format. It may be helpful to set up your editor to autoformat your code upon saving.
master branch represents our product code.
master should only ever be updated by merges from the
dev branch, which tracks it. New features should be branched from
dev, then merged back into
dev once they are tested and linted. Any feature branch pushed to GitHub will be evaluated by Codeship. If the
staging branch is pushed, the staging server will be updated. If the
master branch is pushed, the production server will be updated.