11
votes

Erreur de Capistrano 'Bundle non trouvé' lors du déploiement

Lorsque j'exécute capuchon déployé: Mise à jour i Obtenir l'erreur ci-dessous, indiquant que Bundle est introuvable. Lorsque j'exécute echo $ chemin à partir de Cap shell Le trajet /var/lib/gems/1.9.1/bin chemin contenant le paquet est manquant, Cependant, ce chemin est dans les deux / etc / profil et ~ / .bstrucc . Quelqu'un sache comment résoudre ce problème? XXX


0 commentaires

4 Réponses :


1
votes

Avez-vous installé manuellement le Bundler GEM sur la boîte distante? Vous ne pouvez pas utiliser la commande Bundle ou installer des paquets jusqu'à ce que vous fassiez.


0 commentaires

1
votes

Utilisez-vous de RVM?

Danois Quelques solutions possibles: P>

Place P>

before "deploy:cold", 
    "deploy:install_bundler"

task :install_bundler, :roles => :app do
    run "type -P bundle &>/dev/null || { gem install bundler --no-rdoc --no-ri; }"
end


0 commentaires

12
votes

OK, j'ai récemment eu une certaine expérience avec cela. On dirait qu'il y a quelques façons que ce problème puisse être résolu. Premièrement, vous pouvez déterminer si l'exécution à distance (via Capistrano) est ce qui est gâché contre l'hôte lui-même. On dirait que vous avez fait cela avec le Capistrano Remote Shell:

set :default_environment, {
    'PATH' => "/usr/local/bin:/bin:/usr/bin:/bin:/<ruby-dir>/bin",
    'GEM_HOME' => '<ruby-dir>/lib/ruby/gems/1.8',
    'GEM_PATH' => '<ruby-dir>lib/ruby/gems/1.8',
    'BUNDLE_PATH' => '<ruby-dir>/lib/ruby/gems/1.8/gems'  
}


AMMENDED: It isn't so 'hackish' if you consider the following:  
  - The environment-specific deploy scripts (deploy/foo.rb) can 
    override the default in deploy.rb  
  - PermitUserEnvironment hides the configuration deep in the 
    .ssh directory of the deploy user; :default_environment at
    least exposes it in the checked-in sources.


3 commentaires

C'était utile. Dans mon cas, j'avais un problème similaire où le Bundler a été trouvé, mais le râteau n'était pas, même lors de l'exécution de `Bundle Exec Rake '. J'ai fait une brève modification à l'environnement qui ressemblait à ceci: SET: Default_Environment, {'Path' => "/ Opt / RUBY-EE / BIN: $ PATH"}


J'ai essayé ces techniques et j'ai encore les mêmes erreurs. toute autre option?


Il peut être intéressant de noter que Ubuntu met maintenant une sortie anticipée dans le script .bstrucc de manière à ne pas charger votre environnement si vous êtes en train d'ajouter des variables de chemin à la fin. Vous voudrez peut-être essayer d'ajouter des variables d'environnement au début du fichier.



30
votes

AVOIDE Un tel problème, vous devez disposer des versions les plus récentes de RVM (actuellement 1.13.5) installées dans les deux endroits: localement et sur le serveur distant.

Suivant, vérifiez si votre déploiement est P> xxx pré>

Cette ligne n'est plus nécessaire: p>

$:.unshift(File.expand_path('./lib', ENV['rvm_path']))


2 commentaires

N'oubliez pas d'ajouter 'GEM "RVM-Capistrano"' à votre gemfile


Je viens de recevoir "la tâche déployé: le froid" n'existe pas "lorsque j'utilise nécessite" RVM / Capistrano ". Cependant, nécessite "Capistrano" `semble fonctionner pour moi.