ruby on rails - logs - Desarrollo de capataz vs producción(rieles)
heroku ruby (3)
¿Cuál es la "forma de capataz" para comportarse de manera diferente en la producción frente al desarrollo? Es decir, queremos que Foreman comience con un montón de cosas en desarrollo, sin embargo, en la producción de heroku no necesitamos que empiece (por ejemplo) solr.
Foreman toma argumentos para usar un archivo diferente (-d) y argumentos para especificar qué ejecutar. También admite un archivo .foreman
que permite que esos argumentos se conviertan en predeterminados. Consulte http://ddollar.github.com/foreman/ para obtener más información
He usado Procfile
s específicos del Procfile
antes, lo cual es bastante simple y funciona bien.
Básicamente tienes Procfile.development
, Procfile.production
, etc. En cada uno puedes personalizar los procesos que deseas iniciar, luego ejecutarlos a través de foreman
así:
foreman start -f Procfile.development
Otro enfoque es hacer referencia a los scripts en su Procfile
y, dentro de cada script, iniciar el proceso apropiado en función del entorno. El creador de Foreman hace esto y tiene un ejemplo de su proyecto Anvil, su referencia .
Sigo la convención;
-
Procfile
define todos los procesos -
.foreman
establece variables de capataz especificas
Desarrollo:
-
.env
establece variables de entorno para cada desarrollador -
.env.example
establece valores predeterminados para el desarrollo -
foreman start
inicia todos los procesos
Producción:
-
heroku config
establece las variables de entorno -
heroku ps:scale
activa o desactiva los procesos necesarios para la producción
Aquí hay un ejemplo de un proyecto.
Procfile:
web: bundle exec unicorn_rails -p $PORT -c ./config/unicorn.rb
worker: bundle exec rake jobs:work
search: bundle exec rake sunspot:solr:run
.env.ejemplo:
# default S3 bucket
S3_KEY=keykeykeykeykeykey
S3_SECRET=secretsecretsecret
S3_BUCKET=myapp-development
.env
# developer''s private S3 bucket
S3_KEY=mememememememememe
S3_SECRET=mysecretmysecret
S3_BUCKET=myapp-development
.capataz:
# development port is 3000
port: 3000