Development
===========

Local Development
-----------------

This section assumes Vagrant_ and Virtualbox_ are installed.

.. _Vagrant: https://www.vagrantup.com/
.. _Virtualbox: https://www.virtualbox.org/

Use Vagrant and Virtualbox to create a local environment in a virtual machine
(VM) that matches production.::

    git clone https://github.com/pydata/conf_site.git
    cd conf_site
    vagrant up --provision

The main vagrant commands to use are:

vagrant up
  This starts up the VM. When you run it for the first time, it provisions the VM.

vagrant provision
  This deploys your current code to the VM.

vagrant halt
  When you aren't working on the project, you can turn off the VM with this command.

vagrant destroy
  This completely wipes away the VM. You can destroy it and start over.

vagrant ssh
  This logs you in to the VM as the vagrant user.

Development
===========

Required Software
-----------------

Ansible_ is required to deploy conference site software to servers. For
local development, you will also need Vagrant_ and Virtualbox_ to manage the
virtual machine containing your development environment.

.. _Ansible: https://www.ansible.com/
.. _Vagrant: https://www.vagrantup.com/
.. _Virtualbox: https://www.virtualbox.org/

In order to successfully build virtualenvs, a number of development Python
libraries/packages should also be installed.

  - libffi-dev
  - libpq-dev
  - libpython-dev
  - pip
  - virtualenv

Local Development
-----------------

This section assumes all of the required software mentioned in the last
section has been installed successfully.

Use Vagrant and Virtualbox to create a local environment in a virtual machine
(VM) that matches production.::

    git clone https://github.com/pydata/conf_site.git
    cd conf_site
    vagrant up --provision

The main vagrant commands to use are:

vagrant up
  This starts up the VM. When you run it for the first time, it provisions the VM.

vagrant provision
  This uses Ansible to deploy your current code and other required settings to the VM.

vagrant halt
  When you aren't working on the project, you can turn off the VM with this command.

vagrant destroy
  This completely wipes away the VM. You can destroy it and start over.

vagrant ssh
  This logs you in to the VM as the vagrant user.

Make required software a bit more obvious.
Make required software a bit more obvious.
