Question

Backstory

Je suis sur Rails 2.1 et je dois geler la gemme Capistrano dans mon dossier de fournisseur (mon hôte ayant brisé leurs dépendances, je souhaite être le plus indépendant possible.)

Sur ma machine Windows locale, j'ai mis ce qui suit dans mon environnement.rb

config.gem "capistrano", :version => "2.5.2"
config.gem "net-ssh", :lib => "net/ssh", :version => "2.0.4"
config.gem "net-scp", :lib => "net/scp", :version => "1.0.1"
config.gem "net-sftp", :lib => "net/sftp", :version => "2.0.1"
config.gem "net-ssh-gateway", :lib => "net/ssh/gateway", :version => "1.0.0"

Les gemmes étaient déjà installées et je les ai gelées. Vérification ...

>rake gems
...
[F] capistrano = 2.5.2
[F] net-ssh = 2.0.4
[F] net-scp = 1.0.1
[F] net-sftp = 2.0.1
[F]net-ssh-gateway = 1.0.0

Je commets ensuite sur SVN localement et mets à jour sur la machine Linux prod.

Problème

Lorsque j'essaie d'exécuter ma version gelée de Capistrano, l'erreur suivante apparaît.

$ ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations 
./vendor/gems/capistrano-2.5.2/bin/cap:3:in `require': no such file to load --capistrano/cli (LoadError)
    from ./vendor/gems/capistrano-2.5.2/bin/cap:3

Avez-vous des idées sur ce que j'ai mal fait?

Mettre à jour

Voir la nouvelle question connexe

Était-ce utile?

La solution

Vous n'avez rien fait de mal. Vous rencontrez ce problème car le fichier cap sous capistrano / bin / cap n'est pas conçu pour être exécuté de manière autonome. Vous obtiendrez le même résultat si vous essayez de l'exécuter à partir de votre dossier de gem primaire. L'exécutable cap (stocké dans / usr / bin / cap sur une installation standard de Linux) nécessite rubygems , enregistre capistrano et puis charge le fichier capistrano / bin / cap .

Une solution à ce problème consisterait à ajouter require 'rubygems' à votre fichier capistrano / bin / cap:

#!/usr/bin/env ruby
require 'rubygems'
require 'capistrano/cli'
Capistrano::CLI.execute

Si vous ne souhaitez pas modifier capistrano / bin / cap , vous pouvez spécifiquement inclure la bibliothèque rubygems lorsque vous l'exécutez à l'aide de l'indicateur -r. Votre commande donnée ressemblerait à ceci:

$ ruby -r rubygems ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations

Autres conseils

Vous pouvez également utiliser une version spécifique de Capistrano en ajoutant un alias à votre fichier .bash_login, comme suit:

alias cap1='cap _1.4.2_ '

où cap1 est la commande que vous allez exécuter et 1.4.2 est la version que vous voulez que cette commande soit exécutée, vous pouvez alors:

cap1 deploy

utiliserait alors cette version de capistrano pour déployer votre application.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top