Pregunta

Historia de fondo

Estoy en Rails 2.1 y necesito congelar la gema de Capistrano en mi carpeta de proveedor (ya que mi host ha roto sus dependencias de gemas de cap y quiero ser lo más independiente posible).

En mi máquina de Windows local, puse lo siguiente my environment.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"

Las gemas ya estaban instaladas, así que las congelé. Comprobando ...

>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

Luego me comprometo a SVN localmente y actualizo en el cuadro de Linux prod.

Problema

Cuando intento ejecutar mi versión congelada de Capistrano me sale el siguiente error.

$ ./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

¿Alguna idea de lo que he hecho mal?

Actualizar

Ver nueva pregunta relacionada

¿Fue útil?

Solución

No has hecho nada malo. Estás viendo este problema porque el archivo cap en capistrano / bin / cap no debe ejecutarse de forma independiente. Verá el mismo resultado si intenta ejecutarlo desde su carpeta principal de gemas. El ejecutable cap (almacenado en / usr / bin / cap en una instalación estándar de Linux) requiere rubygems , registra capistrano y luego carga el archivo capistrano / bin / cap .

Una solución para esto sería agregar require 'rubygems' a su archivo capistrano / bin / cap:

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

Si no desea modificar capistrano / bin / cap , puede incluir específicamente la biblioteca rubygems cuando la ejecuta con el indicador -r. Su comando dado se vería así:

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

Otros consejos

Otra forma de usar una versión específica de Capistrano sería algo así como agregar un alias a su .bash_login como el siguiente:

alias cap1='cap _1.4.2_ '

donde cap1 es el comando que ejecutará y 1.4.2 es la versión que desea que ejecute ese comando, entonces puede:

cap1 deploy

luego usaría esa versión de capistrano para implementar su aplicación.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top