First you'll need make sure you've got a couple of system packages installed:
- ruby >= 2.0.0 (
brew install rubyon a mac)
- redis (
brew install redison a mac)
Then you'll need to install some required gems:
gem install bundler foreman
If installing gems fails with a permissions error you may need to prefix the command with
Next clone the repository from GitHub and change into the cloned directory.
git clone https://github.com/everypolitician/everypolitician-writeinpublic.git cd everypolitician-writeinpublic
Now you need to install the project dependencies with bundler
Finally you'll need to create a Personal Access Token on GitHub. The default scopes are fine. Then copy
.env and add the generated access token.
cp .env.example .env $EDITOR .env # Replace 'replace_with_github_access_token' with an actual access token
To start the application's web and worker processes you can use foreman:
Then to trigger a rebuild you can manually hit the
curl -i -X POST http://localhost:5000/event_handler
/event_handler endpoint is registered to receive webhooks from EveryPolitician whenever there's a change to
countries.json. When a webhook is received a
RebuildLegislatureFiles background job is queued.
RebuildLegislatureFiles#perform method does the bulk of the work. First it clones the everypolitician/everypolitician-writeinpublic repository, then it switches to the
gh-pages branch and runs the code in the block that's passed to
with_git_repo. Once the
with_git_repo block finishes, any changes to the cloned repository are committed with the provided message and pushed back to GitHub.