2017-05-03 1 views
0

Je travaille avec Vapor dans Xcode, en déployant à Heroku. Mon application Web fonctionne parfaitement. Vraiment content de Vapor et combien il est facile de le déployer à Heroku.Cibles multiples dans le projet Vapor Xcode

J'essaie maintenant de créer un processus distinct Heroku Worker dans le même projet. J'ai ajouté le nouveau worker à mon fichier Procokile Heroku, mais je ne sais pas comment configurer la deuxième cible dans le projet Xcode afin qu'il ne soit pas écrasé chaque fois que j'exécute vapor xcode pour reconstruire le fichier projet.

Mon Procfile ressemble à ceci:

web: App --env=production --workdir=./ --config:servers.default.port=$PORT --config:postgresql.url=$DATABASE_URL 
worker: Worker --env=production --workdir=./ --config:servers.default.port=$PORT --config:postgresql.url=$DATABASE_URL 

Donc, comme vous pouvez le voir, je veux simplement un second exécutable application appelée Worker que je peux commencer au sein d'un travailleur Heroku Dyno.

Une idée de comment je peux avoir une cible d'application Web et une cible de travailleur séparé dans mon projet Xcode qui ne sera pas écrasée par vapor xcode?

Merci --TJ

Répondre

1

Ah hah! Résolu. Pour avoir plusieurs cibles dans le projet, vous devez les définir dans le fichier Package.swift du gestionnaire de package Swift chargé de générer le fichier de projet.

Alors, mon Package.swift ressemble maintenant à ceci:

import PackageDescription 

let package = Package(
    name: "myapp", 
    targets: [ 
     Target(name: "App", dependencies: ["Shared"]), 
     Target(name: "Worker", dependencies: ["Shared"]), 
    ], 
    dependencies: [ 
    ], 
    exclude: [ 
     "Config", 
     "Database", 
     "Localization", 
     "Public", 
     "Resources", 
     ] 
) 

Ma structure de répertoire Sources ressemble maintenant à ceci:

Sources | - App - Worker - Shared

L'objectif partagé contient tous mon code partagé est requis par l'application et les cibles exécutables Worker. Maintenant, définir le Procfile comme ci-dessus fonctionne parfaitement. J'ai maintenant une application web et un processus de travail.

Cheers --TJ