2010-12-20 3 views
0

J'ai une application rails 3 que je souhaite déployer. Mon environnement de déploiement n'a pas d'outils de construction installés et ne peut pas installer les dépendances avec des extensions natives.Comment construire et installer des rails dépendances de l'application sur différents hôtes

J'ai un hôte de construction configuré avec des outils de construction qui peuvent générer les extensions natives.

Comment puis-je déployer les extensions natives à partir de mon hôte de génération?

J'ai essayé de faire bundle package sur l'hôte de construction et bundle install --local sur l'hôte distant. Il installe correctement les gems sans les extensions natives mais il essaie toujours de créer des extensions natives sur l'hôte de production.

Répondre

0

J'ai fini à un deploy.rb personnalisé. En espérant que je serai capable de le relater comme une gemme qui prolonge Capistrano (encore pas totalement heureux avec cela)

0

La construction de vos serveurs de production est une mauvaise pratique. Lorsque je déploie Django ou Rails, je construis toujours une chaîne d'outils pour tout ce que le système de gestion de paquets OS ne couvre pas. Je développe et déploie ensuite avec cette chaîne d'outils. Cela garantit que tout le monde utilise les mêmes versions des outils. Pour créer la chaîne d'outils, vous devez installer les packages et les exécutables de support dans ce répertoire. Vous devez également vous assurer qu'ils sont relocalisables.

Par exemple j'utilise actuellement Django sur RedHat. RedHat n'utilise pas la dernière version de python, et la plupart des librairies python que j'utilise rev plus souvent que les mainteneurs de dépôts les récupèrent. En conséquence, il n'y a souvent pas de RPM pour le dernier logiciel. Je crée un répertoire toolchain, compilé python sur toutes les libs dont j'avais besoin dans ce répertoire. Je l'empaquette ensuite dans un RPM pour le déploiement.

  • toolchain/
    • bin/
      • python
      • ...
    • lib/
      • python2.7/
      • ...
      • site-packages/
        • ...
    • comprennent/
    • ...
+0

Construire sur l'hôte de production est ce que j'essaie d'éviter ici. C'est pourquoi j'ai essayé de faire un paquet bundle sur un hôte de construction puis d'installer le paquet sur l'hôte de production. – ybart

+0

puis d'installer le package sur l'hôte de production. J'espérais que cela m'empêcherait de construire sur l'hôte de production mais il faut encore construire. – ybart

+0

J'ai eu des problèmes avec les installations de gemme dans le passé. Personnellement, je n'utilise jamais gem pour installer sur le serveur de production.Je vais installer gem sur l'hôte de construction ou de développement et le reconditionner en utilisant le système d'empaquetage du système d'exploitation natif. Cela me permet un meilleur contrôle et une comptabilité de dépendance plus flexible. – dietbuddha

Questions connexes