Developing with OER Commons

This page is a work in progress. It will be updated as new advice becomes available.

At the IDRC, we develop with OER Commons running in a vagrant virtual machine.

When we update the OER Commons codebase, it is often necessary to rebuild the database and run various scripts to bring the environment up-to-date with the latest code. This page attempts to summarize the steps necessary for this, describing various shell commands that need to be run.

Setting up the code to work in your environment

Make sure 'development.py' has the following things properly pointing at your personal instance:

SESSION_COOKIE_DOMAIN = "<your machine>" # May be your IP, or 'localhost'
DEFAULT_SITE_DOMAIN = "<your machine>:8000"

MICROSITES = {"arabic": {"domain": "arabic.<your machine>:8000"}}

Make sure 'settings.py' has the following things paths set properly (our local environment is different than what's specified in github):

SCSS_EXECUTABLE = "/opt/ruby/bin/sass"
COFFESCRIPT_EXECUTABLE = "/usr/bin/coffee"
SCSS_USE_COMPASS = True

Installing PostGIS

In mid-April 2013, OER Commons added some map features. This requires the installation of PostGIS on your local system.

To install PostGIS on your VM follow the instructions at Installing PostGIS in your OER Commons VM.

Note: You will only have to install PostGIS once!

To completely rebuild the database

These instructions assume your database is called oercommons_db. If you are using a different name, you must adjust these instructions accordingly.

Log in to the vagrant VM:

vagrant ssh

Become superuser, drop the database and recreate it:

sudo -i
su - postgres
dropdb oercommons_db
createdb -O oercommons_user -E UTF-8 --locale=en_US.UTF-8 -T template_postgis oercommons_db
exit
exit

Activate the virtual environment:

cd /vagrant/oercommons
source ./virtualenv/bin/activate

Remove django and run the buildout config:

rm -rf src/django
./bin/buildout -c buildout-dev.cfg

Creates any database tables that have not already been created. (NO NOT create a django admin account when prompted):

./bin/django syncdb

Run the migration scripts:

./bin/django migrate

Note: Sometimes this fails. If so, check the output to see which table seems to be missing (try ./bin/django migrate --list). Run the migration specific to that table, then try re-running the entire thing again:

./bin/django migrate <whatever's missing>
./bin/django migrate

You may have to repeat this process a few times.

Load the microsite data, then create the superuser:

./bin/django loaddata apps/materials/fixtures/microsites.json
./bin/django createsuperuser

Remove the compiled python files:

find . -name '*.pyc' -delete

Restart Jetty:

sudo invoke-rc.d jetty stop
sudo invoke-rc.d jetty start

Exit the vagrant VM and restart it.