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 git@github.com:MuckRock/muckrock.git
- Set up your virtual machine
- Install Vagrant and VirtualBox
- Run
vagrant up
(this will take a while) - Run
vagrant ssh
to ssh into the virtual machine
- You may edit the file
~/muckrock/.settings.sh
if 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:
cd muckrock
- Run
npm run build
to rebuild the javascript and css - Run
fab mail &
to start a background email server - Run
fab celery &
to start a background task queue - Run
fab runserver
to start a server instance - Navigate your web browser (from the host machine) to
localhost:8000
- You may log in as a super user with the username
super
and passwordabc
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 pip
folder.
The dev-requirements.in
file is used for local libraries, like testing suites.
The 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 your code in one of two ways:
- Run
fab test
to run all the tests. - Run
fab test:muckrock.<app>
to test a particular application. - Run
fab test:muckrock,1
to reuse the database between tests, which saves a ton of time.
- Run
- Lint your Python by running
fab pylint
. - Lint your Javascript by running
npm run lint
.
The 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.