11
votes

Capistrano - Impossible de déployer ma base de données.yml

Quand j'essaie de déployer mon application avec Capistrano, je vais obtenir cette erreur:

a échoué: "SH -C 'CP /var/www/my_app/Relases/20120313115055/config/database.staging.yml /var/www/my_app/relases/20120313115055/config/database.yml '"sur IP_ADDR P> blockQquote>

My base de données.yml strong> c.-à-d. Ie vide, base de données.sing.yml strong>: p>

cp: cannot stat `/var/www/my_app/releases/20120313144907/config/database.staging.yml': No such file or directory


3 commentaires

Que se passe-t-il lorsque vous exécutez la commande CP manuellement sur cette machine?


.yml ou .ymp? Si vous avez .YMP votre fichier est nommé mal


Lorsque j'essaie de courir dans le terminal sur le serveur, je reçois donc l'erreur Aucun fichier ou répertoire de ce type , et lorsque je jetez un coup d'œil dans le répertoire Livraison . c'est vide.


3 Réponses :


22
votes

Je ne sais pas comment résoudre votre problème. Il ressemble à la base de données.Stager.yml n'est pas déployé, il n'y a donc rien pour elle de copier sur.

Je pense qu'il y a un meilleur flux de travail, cependant. Des choses comme les paramètres et les configurations de base de données ne changent généralement pas entre les déploiements, de sorte que ces éléments peuvent aller dans le dossier partagé de toutes les communiquées de capistrano. En règle générale, vous ne voulez pas que votre base de données soit dans votre repo, que ce soit, car il s'agit d'informations sensibles. Vous pouvez satisfaire ces deux choses en excluant config / base de données.yml dans votre .gitignore .

Cela nécessite que vous fassiez une seule fois. sur vos serveurs. Vous avez besoin de créer un base de données.yml sur your_app_path / partagé / config . Partagé est un frère de sœurs à la courante et à la sortie.

Votre déployez.rb devrait avoir une tâche qui lime la nouvelle base de données de la version de la version nouvellement déployée. / Code> à l'activation dans le répertoire partagé. Comme ceci: xxx

Cela signifie que votre repo ne contiendra aucun fichier base de données.yml . Depuis qu'ils sont probablement déjà dans votre repo. Vous devrez git rm eux, commettre. Ajoutez-les au .gitignore et commettez cela.


3 commentaires

Nous avons fait cela, mais inclus une base de données.yml.example in config, que les développeurs peuvent utiliser pour se rendre localement sans deviner sur les paramètres de base de données.yml


Je pense que Current / Config / Database.yml est lié à partagé / config / base de données.yml Si partagé / config / base de données.yml est manquant, il vous donnera "aucun fichier ou répertoire de ce type. Nous pouvons la créer manuellement pour partager / config / databone.yml et le déploier. Ce truc fonctionne ici.


Désolé, pourquoi votre Déployer.rb Script mentionné paramètres.yml ?




13
votes

dans Capistrano 3, la liaison de fichiers est intégrée. La réponse de John est simplement:

  • dans le dossier partagé / Créez config / base de données.yml
  • dans config / déployé.rb Utilisez cette ligne XXX

    Cela fait ce que John disait.


1 commentaires

Ça y est. Merci