Adapter to turn EveryPolitician Popolo data into a format that WriteInPublic understands
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


An adapter to turn EveryPolitician Popolo data into a format that WriteInPublic understands.


First you'll need make sure you've got a couple of system packages installed:

  • ruby >= 2.0.0 (brew install ruby on a mac)
  • redis (brew install redis on 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 sudo.

Next clone the repository from GitHub and change into the cloned directory.

git clone
cd everypolitician-writeinpublic

Now you need to install the project dependencies with bundler

bundle install

Finally you'll need to create a Personal Access Token on GitHub. The default scopes are fine. Then copy .env.example to .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:

foreman start

Then to trigger a rebuild you can manually hit the /event_handler endpoint:

curl -i -X POST http://localhost:5000/event_handler


The /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.

The 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.