J'ai une application Sinatra maison pour laquelle j'ai l'intention d'utiliser Heroku pour l'héberger.
J'utilise contremaître et fusil de chasse dans le développement, avec le Procfile suivant:
web: shotgun config.ru -s thin -o 0.0.0.0 -p $PORT -E $RACK_ENV
Cela fonctionne très bien avec le développement et la production. Mais la chose est, je ne veux pas utiliser de fusil de chasse en production car il est trop lent.
Vous pouvez utiliser deux Procfiles
(par exemple Procfile
et Procfile.dev
) et utilisez foreman
s -f
option pour en sélectionner un autre à utiliser dans le développement:
En dev (Procfile.dev
contient votre shotgun
processus Web):
foreman start -f Procfile.dev
En production, foreman start
récupérera le Procfile
normal.
Vous pouvez également créer un répertoire bin
dans votre application avec un script pour démarrer le serveur Web approprié en fonction de $RACK_ENV
(une idée que j'ai trouvée dans un commentaire fait par le créateur de Foreman , donc à considérer).
À mon avis, le commentaire de @sharagoz sur la réponse sélectionnée est la meilleure option pour vous permettre de continuer à utiliser foreman start
sans ajouter d'arguments supplémentaires ET conservez votre Procfile séparé pour Heroku.
Pour éviter le paramètre -f Procfile.dev, vous pouvez créer un fichier .foreman avec
procfile: Procfile.dev
dedans - Sharagoz
Dans mon répertoire racine d'applications, j'ai créé un .foreman
fichier et comme le dit le commentaire
. contremaître
procfile: Procfile.dev
Procfile
web: bundle exec puma -C config/puma.rb
Procfile.dev
web: bundle exec puma -C config/puma.rb
webpacker: ./bin/webpack-dev-server
Voici un moyen de le gérer avec un Procfile et des variables d'environnement. J'utilise ceci sur Heroku.
Définissez votre environnement:
export WEB_START_COMMAND='node index.js'
export WORKER_START_COMMAND='node worker.js'
Le Procfile:
web: eval '$WEB_START_COMMAND'
worker: eval '$WORKER_START_COMMAND'
Exportez différentes commandes de démarrage dans vos environnements de serveur et de développement.
Pour ceux qui le recherchent encore, selon docsforeman
n'est plus nécessaire. Vous pouvez simplement utiliser:
heroku local -f Procfile.dev