We were following it about half of the time and we even added it to our former `.mdlrc` file. However, for some reason, MDL doesn't detect this rule when specified in the `.mdlrc` file, so we didn't notice we weren't following it in many cases. Now that we're using a style file to configure MDL, we can enable this rule again and apply it, since now MDL correctly includes it in its report.
187 lines
6.0 KiB
Markdown
187 lines
6.0 KiB
Markdown
# Instalación en Heroku
|
|
|
|
## Instalación manual
|
|
|
|
Este tutorial asume que ya has conseguido clonar Consul Democracy en tu máquina y conseguir que funcione.
|
|
|
|
1. En primer lugar, necesitas crear una cuenta en [Heroku](https://www.heroku.com) si no lo has hecho ya.
|
|
2. Instala [Heroku CLI](https://devcenter.heroku.com/articles/heroku-cli) e inicia sesión con:
|
|
|
|
```bash
|
|
heroku login
|
|
```
|
|
|
|
3. Accede a tu repositorio de Consul Democracy y crea una instancia
|
|
|
|
```bash
|
|
cd consuldemocracy
|
|
heroku create your-app-name
|
|
```
|
|
|
|
Puedes añadir `--region eu` si quieres utilizar servidores europeos en lugar de los estadounidenses.
|
|
|
|
Si _your-app-name_ no existe aún, Heroku creará tu aplicación.
|
|
|
|
4. Crea la base de datos con
|
|
|
|
```bash
|
|
heroku addons:create heroku-postgresql
|
|
```
|
|
|
|
Ahora deberías tener acceso a una base de datos Postgres vacía cuya dirección se guardó automáticamente como una variable de entorno llamada _DATABASE\_URL_. Consul Democracy se conectará automáticamente a ella durante la instalación.
|
|
|
|
5. **(No es necesario)** Crea un archivo con el nombre _heroku.yml_ en la raíz del proyecto y añade el siguiente código
|
|
|
|
```yml
|
|
build:
|
|
languages:
|
|
- ruby
|
|
packages:
|
|
- imagemagick
|
|
run:
|
|
web: bundle exec rails server -e ${RAILS_ENV:-production}
|
|
```
|
|
|
|
6. Ahora, genera una clave secreta y guárdala en la variable de entorno SECRET\_KEY\_BASE de la siguinte manera
|
|
|
|
```bash
|
|
heroku config:set SECRET_KEY_BASE=$(rails secret)
|
|
```
|
|
|
|
Añade también la dirección de tu servidor:
|
|
|
|
```bash
|
|
heroku config:set SERVER_NAME=myserver.address.com
|
|
```
|
|
|
|
Es necesario que la aplicación sepa dónde se almacenan las variables de configuración añadiendo un enlace a las variables de entorno en _config/secrets.yml_
|
|
|
|
```yml
|
|
production:
|
|
secret_key_base: <%= ENV["SECRET_KEY_BASE"] %>
|
|
server_name: <%= ENV["SERVER_NAME"] %>
|
|
```
|
|
|
|
y añade este archivo en el repositorio comentando la línea correspondiente en el _.gitignore_.
|
|
|
|
```gitignore
|
|
#/config/secrets.yml
|
|
```
|
|
|
|
**¡Recuerda no añadir el archivo si tienes información sensible en él!**
|
|
|
|
7. Ahora ya puedes subir tu aplicación utilizando:
|
|
|
|
```bash
|
|
git push heroku your-branch:master
|
|
```
|
|
|
|
8. No funcionará de inmediato porque la base de datos no contiene las tablas necesarias. Para crearlas, ejecuta
|
|
|
|
```bash
|
|
heroku run rake db:migrate
|
|
heroku run rake db:seed
|
|
```
|
|
|
|
Si quieres añadir los datos de prueba en la base de datos, mueve `gem 'faker', '~> 1.8.7'` fuera del `group :development` y ejecuta:
|
|
|
|
```bash
|
|
heroku config:set DATABASE_CLEANER_ALLOW_REMOTE_DATABASE_URL=true
|
|
heroku config:set DATABASE_CLEANER_ALLOW_PRODUCTION=true
|
|
heroku run rake db:dev_seed
|
|
```
|
|
|
|
9. Ahora tu aplicación debería estar ya opertaiva. Puedes abrirla con
|
|
|
|
```bash
|
|
heroku open
|
|
```
|
|
|
|
También puedes arrancar la consola en heroku utilizando
|
|
|
|
```bash
|
|
heroku console --app your-app-name
|
|
```
|
|
|
|
10. Heroku no permite guardar imágenes o documentos en sus servidores, por lo que es necesario configurar un nuevo espacio de almacenamiento.
|
|
|
|
Consulta [nuestra guía de S3](./using-aws-s3-as-storage.md) para más detalles sobre la configuración de Paperclip con S3.
|
|
|
|
### Configurar Sendgrid
|
|
|
|
Añade el complemento (add-on) de SendGrid en Heroku. Esto creará una cuenta de SendGrid para la aplicación con `ENV["SENDGRID_USERNAME"]` y `ENV["SENDGRID_PASSWORD"]`.
|
|
|
|
Añade el siguiente código a `config/secrets.yml`, en la sección `production:`:
|
|
|
|
```yaml
|
|
mailer_delivery_method: :smtp
|
|
smtp_settings:
|
|
:address: "smtp.sendgrid.net"
|
|
:port: 587
|
|
:domain: "heroku.com"
|
|
:user_name: ENV["SENDGRID_USERNAME"]
|
|
:password: ENV["SENDGRID_PASSWORD"]
|
|
:authentication: "plain"
|
|
:enable_starttls_auto: true
|
|
```
|
|
|
|
Importante: Activa un "worker dyno" para que se envíen los correos electrónicos.
|
|
|
|
### Opcional (pero recomendado)
|
|
|
|
### Instalar rails\_12factor y especificar la versión de Ruby
|
|
|
|
**Instalar rails\_12factor sólo es útil si utilizas una versión de Consul Democracy anterior a la 1.0.0. La última versión utiliza Rails 5 que ya incluye los cambios.**
|
|
|
|
Como nos recomienda Heroku, puedes añadir la gema rails\_12factor y especificar la versión de Ruby a utilizar. Puedes hacerlo añadiendo:
|
|
|
|
```ruby
|
|
gem 'rails_12factor'
|
|
|
|
ruby 'x.y.z'
|
|
```
|
|
|
|
en el archivo _Gemfile\_custom_, donde `x.y.z` es la versión definida en el fichero `.ruby-version` del repositorio de Consul Democracy. No olvides ejecutar
|
|
|
|
```bash
|
|
bundle install
|
|
```
|
|
|
|
para generar el _Gemfile.lock_ antes de añadir los cambios y subirlos al servidor.
|
|
|
|
### Utilizar Puma como servidor web
|
|
|
|
Heroku recomienda utilizar Puma para mejorar el [rendimiento](http://blog.scoutapp.com/articles/2017/02/10/which-ruby-app-server-is-right-for-you) de la aplicación.
|
|
|
|
Si quieres permitir más concurrencia, descomenta la siguiente linea:
|
|
|
|
```ruby
|
|
workers ENV.fetch("WEB_CONCURRENCY") { 2 }
|
|
```
|
|
|
|
Puedes encontrar una explicación para diferentes configuraciones en el siguiente [tutorial de Heroku](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server).
|
|
|
|
Por último hay que cambiar la tarea _web_ para usar Puma cambiándola en el archivo _heroku.yml_ con el siguiente código:
|
|
|
|
```yml
|
|
web: bundle exec puma -C config/puma.rb
|
|
```
|
|
|
|
### Añadir variables de configuración desde el panel de control
|
|
|
|
Las versiones gratuita y hobby de Heroku no son suficientes para ejecutar una aplicación como Consul Democracy. Para optimizar el tiempo de respuesta y asegurarte de que la aplicación no se quede sin memoria, puedes [cambiar el número de "workers" e hilos](https://devcenter.heroku.com/articles/deploying-rails-applications-with-the-puma-web-server#workers) que utiliza Puma.
|
|
|
|
La configuración recomendada es un "worker" y tres hilos. Puedes configurarlo ejecutando estos dos comandos:
|
|
|
|
```bash
|
|
heroku config:set WEB_CONCURRENCY=1
|
|
heroku config:set RAILS_MAX_THREADS=3
|
|
```
|
|
|
|
También es recomendable configurar las siguientes variables:
|
|
|
|
```bash
|
|
heroku config:set RAILS_SERVE_STATIC_FILES=enabled
|
|
heroku config:set RAILS_ENV=production
|
|
```
|