Как я могу использовать замороженный Capistrano? - PullRequest
1 голос
/ 02 декабря 2008

Предыстория

Я на Rails 2.1 и мне нужно заморозить гем Capistrano в папке моего поставщика (поскольку мой хост нарушил их зависимости от cap gem, и я хочу сделать себя максимально независимым).

На моем локальном компьютере с Windows я установил следующую среду: .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"

Камни уже были установлены, и я их заморозил. Проверка ...

>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

Затем я фиксирую SVN локально и обновляюсь на prod Linux box.

Задача

Когда я пытаюсь запустить замороженную версию Capistrano, я получаю следующую ошибку.

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

Есть идеи, что я сделал не так?

Обновление

См. Новый связанный вопрос

Ответы [ 2 ]

2 голосов
/ 02 декабря 2008

Вы не сделали ничего плохого. Вы видите эту проблему, потому что файл cap в capistrano/bin/cap не предназначен для автономной работы. Вы увидите тот же результат, если попытаетесь запустить его из основной папки с гемами. Исполняемый файл cap (хранится в /usr/bin/cap при стандартной установке Linux) требует rubygems, регистрирует capistrano и , затем загружает файл capistrano/bin/cap.

Одним из решений этой проблемы будет добавление require 'rubygems' в ваш файл capistrano / bin / cap:

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

Если вы не хотите изменять capistrano/bin/cap, вы можете специально включить библиотеку rubygems, когда запускаете ее с использованием флага -r. Ваша команда будет выглядеть так:

$ ruby -r rubygems ./vendor/gems/capistrano-2.5.2/bin/cap deploy-with-migrations
1 голос
/ 13 марта 2009

Еще один способ использовать определенную версию Capistrano - это добавить псевдоним к вашему .bash_login, например:

alias cap1='cap _1.4.2_ '

где cap1 - команда, которую вы будете запускать, а 1.4.2 - версия, для которой вы хотите запустить эту команду, тогда вы можете:

cap1 deploy

будет затем использовать эту версию capistrano для развертывания вашего приложения.

...