portable logs devcenter cli ruby-on-rails heroku foreman

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