Go to file
Luke Faraone 0d7f749ad8 Run provision.py as a provisioner.
This way, vagrant up for the first time will set up the developer's VM
correctly

(imported from commit cee17b15e2f53a1b6de1f1ee16dbad00071ba55c)
2015-08-19 21:07:22 -07:00
analytics Fix comment in meets_goal() function in activity reports. 2014-02-03 13:30:49 -05:00
api Add GET /export endpoint, which dumps important tables in json. 2015-08-19 15:31:08 -07:00
assets Allow enterprise deployments to disable the use of Gravatar. 2013-11-18 11:48:53 -05:00
bin logging: Log management commands that are run. 2013-11-20 14:31:08 -05:00
bots Update Trac bot config 2015-02-05 22:46:30 -08:00
confirmation Fix invitation e-mail to use http:// in non-deployed case. 2015-08-18 20:17:48 -07:00
corporate Modify /hello to go to register instead of signup on Enterprise 2013-11-22 13:50:24 -05:00
docs Update directory-structure.rst content to fix internal references 2015-08-19 11:52:49 -07:00
humbug Rename Django project to zproject. 2013-08-07 11:04:03 -04:00
node_modules Upgrade handlebars to 1.3.0. 2014-01-15 16:07:20 -05:00
puppet Give root higher nofile limits in limits.conf. 2015-08-16 13:39:48 -07:00
scripts Rename USING_SSO to something more clear. 2015-08-18 20:48:15 -07:00
static Add a new dev login page for logging in without a password on the dev VM. 2015-08-18 20:17:47 -07:00
templates Add GET /export endpoint, which dumps important tables in json. 2015-08-19 15:31:08 -07:00
tools run-dev.py: Reword --interface help text. 2015-08-19 21:07:22 -07:00
zerver Add GET /export endpoint, which dumps important tables in json. 2015-08-19 15:31:08 -07:00
zilencer Don't create Zulip employee accounts automatically in Dev VM. 2015-08-18 20:46:35 -07:00
zproject Add GET /export endpoint, which dumps important tables in json. 2015-08-19 15:31:08 -07:00
.gitattributes enterprise: Don't include templates/zilencer in our tarballs 2013-11-15 11:53:49 -05:00
.gitignore Ignore generated event_queues.json and .vagrant directory. 2015-08-19 13:36:44 -07:00
LICENSE Add license not referring to Zulip Enterprise license agreement. 2013-11-14 11:16:15 -05:00
README.dev Run provision.py as a provisioner. 2015-08-19 21:07:22 -07:00
Vagrantfile Run provision.py as a provisioner. 2015-08-19 21:07:22 -07:00
manage.py logging: Log management commands that are run. 2013-11-20 14:31:08 -05:00
provision.py quick fixes to provision.py 2015-08-17 11:15:21 -07:00
requirements.txt Initial attempt at README.dev and requirements.txt 2015-08-16 16:46:17 -07:00
zulip_tools.py Move su_to_zulip into zulip_tools.py 2013-11-13 16:56:59 -05:00

README.dev

Getting started
===============

Using Vagrant
-------------

This is the recommended approach, and is tested on OS X 10.10 as well as Ubuntu 14.04.

If your host is OS X, download VirtualBox from <http://download.virtualbox.org/virtualbox/4.3.30/VirtualBox-4.3.30-101610-OSX.dmg>.

If your host is Ubuntu 14.04:
  sudo apt-get install vagrant lxc lxc-templates cgroup-lite redir

Once that's done, simply run `vagrant up`. Congrats, you can now visit <http://localhost:9991/> in your browser.

By hand
-------

Install the following non-Python dependencies:
 * libffi-dev — needed for some Python extensions
 * postgresql 9.1 or later — our database (also install development headers)
 * memcached (and headers)
 * rabbitmq-server
 * libldap2-dev
 * python-dev
 * redis-server — rate limiting
 * tsearch-extras — better text search

On Debian or Ubuntu systems:
  sudo apt-get install libffi-dev memcached rabbitmq-server libldap2-dev redis-server postgresql-server-dev-all libmemcached-dev

  # If on 12.04 or wheezy:
  sudo apt-get install postgresql-9.1
  wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.1-tsearch-extras_0.1.2_amd64.deb
  sudo dpkg -i postgresql-9.1-tsearch-extras_0.1.2_amd64.deb

  # If on 14.04:
  sudo apt-get install postgresql-9.3
  wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.3-tsearch-extras_0.1.2_amd64.deb
  sudo dpkg -i postgresql-9.3-tsearch-extras_0.1.2_amd64.deb

  # If on 15.04 or jessie:
  sudo apt-get install postgresql-9.4
  wget https://dl.dropboxusercontent.com/u/283158365/zuliposs/postgresql-9.4-tsearch-extras_0.1_amd64.deb
  sudo dpkg -i postgresql-9.4-tsearch-extras_0.1_amd64.deb

  # Then, all versions:
  pip install -r requirements.txt
  ./scripts/setup/configure-rabbitmq
  ./tools/postgres-init-db
  ./tools/do-destroy-rebuild-database

To start the development server:
  ./tools/run-dev.py

… and hit http://localhost:9991/.


Running the test suite
======================

One-time setup:
  ./tools/postgres-init-test-db
  ./tools/do-destroy-rebuild-test-database

Backend tests:
  ./tools/test-backend

Frontend tests: TBD

Possible issues
===============

When running the test suite, if you get an error like this:
    sqlalchemy.exc.ProgrammingError: (ProgrammingError) function ts_match_locs_array(unknown, text, tsquery) does not exist
    LINE 2: ...ECT message_id, flags, subject, rendered_content, ts_match_l...
                                                                 ^
… then you need to install tsearch-extras, described above. Afterwards, re-run the init*-db and the do-destroy-rebuild*-database scripts.