Pendiente de agregar:
- Info del proyecto
Aquí tenemos 2 opciones: instalar todo lo necesario en nuestra computadora, o bien, provisionar una máquina virtual pre-configurada.
De no estar presente, instalar
- ElasticSearch - version 5+
- NodeJS
- PostgreSQL
Luego de haber clonado el repositorio, dispondremos de una tarea rake
que nos crea un Vagrantfile
basado en OpenCallCookbook. Los requerimientos del sistema para tal está listados ahí mismo:
-
Correr
$ rake open_call:vm:setup
-
Si todo fue bien, andá por un café
$ vagrant up
-
$ cd [path-al-repo]
o$ vagrant shh && cd /vagrant
-
Generar .env
$ cp .env_sample .env
-
Instalar dependencias (gemas ruby) via
bundle install
-
Instalar dependencias (módulos node) via
rake protractor:install
. Se puede verificar que todo instaló correctamente viarake protractor:example
-
Crear base de datos, con datos de referencia
$ rake db:setup
-
Correr ambas suites de tests
$ foreman run bin/rspec
$ foreman run rake open_call:e2e
Los tests de integración levantarán un nodo de ElasticSearch en el puerto especificado en la variable de entorno
ES_TEST_PORT
(ver abajo)
El proyecto usa foreman, para administrar los procesos necesarios (web server y elasticsearch).
Foreman puede instalarse via:
$ gem install foreman
Notarán que existen dos Procfiles: ./Procfile
y ./Procfile.local
. El primero es usado por la plataforma de producción, mientras que el segundo de manera local. Para iniciar la app localmente, se puede hacer a través de:
$ bin/start
Por única vez, será necesario dar permisos necesarios a dicho script: chmod 777 bin/start
Dentro de la rails console
, podremos lograr esto a través de:
SessionProposal.import
# o bien, forzando la regenaración del índice
SessionProposal.import force: true
Mas info sobre esto en la doc oficial de la gema.
Una de las opciones con foreman es que nos permite tener un archivo .env
en la raiz, de manera tal poder definir las variables de entorno necesarias para los modos desarrollo y test. A continuación se listan las variables de entorno que el sistema necesitará para una u otra necesidad:
Nombre de variable | Razón de ser |
---|---|
GITHUB_KEY, GITHUB_SECRET | Id de aplicación para github oauth |
GOOGLE_KEY, GOOGLE_SECRET | Id de aplicación para google oauth |
LINKEDIN_KEY, LINKEDIN_SECRET | Id de aplicación para linkedin oauth |
SEARCHBOX_URL | Host de la api de elasticsearch, generalmente localhost:9200 |
ES_TEST_HOST, ES_TEST_PORT | Host de la api de elasticsearch para tests |
ES_TEST_BIN | Path to the elasticsearch binary |
PORT | Puerto del web server |
SUBMISSION_DUE_DATE | Fecha de corte para la postulación de propuestas |
ACCEPTANCE_DUE_DATE | Fecha de corte para la confirmación de propuestas aceptadas |
IS_TWEET_UPON_SUBMISSION_ENABLED | Habilitar/deshabilitar tuitear desde la cuenta del evento cuando se crea una sesión |
TWITTER_KEY, TWITTER_SECRET | Id de la aplicación para tuitear desde cuenta del evento |
TWITTER_ACCESS_TOKEN, TWITTER_ACCESS_TOKEN_SECRET | Id de la aplicación para tuitear desde cuenta del evento |
A modo de ejemplo, se puede referenciar el archivo .env_sample |
A modo de prueba, se pueden crear datos dummy a través de:
$ rake open_call:sessions_with_tags:generate[./db/mocks/mock_sessions_with_tags.json]
La creación de los datos automáticamente indexará los índices de ElasticSearch, cuyo cluster debe estar corriendo.
Este proceso está automatizado tal cual se detalla en su apartado
- Crea tu propio fork
- Crea un branch con tu nueva feature o bugfix (
git checkout -b my-new-branch
) - Agrega tus cambios con sus respectivos tests (
git commit -am 'Add some feature'
) - Pushea el branch (
git push origin my-new-branch
) - Crea un pull request