문제

배경

나는 Rails 2.1에 있고 Capistrano 보석을 내 공급 업체 폴더로 얼려야합니다 (내 호스트가 캡 보석 의존성을 깨뜨리고 가능한 한 독립적으로 만들고 싶습니다).

내 로컬 Windows 시스템에서 다음과 같은 환경을 넣었습니다.

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 상자를 업데이트합니다.

문제

냉동 버전의 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

내가 잘못한 아이디어가 있습니까?

업데이트

새로운 관련 질문을 참조하십시오

도움이 되었습니까?

해결책

당신은 잘못한 일을하지 않았습니다. 당신은이 문제를보고 있기 때문입니다 cap 아래에 파일 capistrano/bin/cap 독립형으로 실행되는 것은 아닙니다. 기본 보석 폴더에서 실행하려고하면 동일한 결과가 표시됩니다. 그만큼 cap 실행 파일 (저장 /usr/bin/cap 표준 Linux 설치에서) 필요합니다 rubygems, Capistrano 등록 및 그 다음에 로드합니다 capistrano/bin/cap 파일.

이에 대한 한 가지 해결책은 추가하는 것입니다 require 'rubygems' Capistrano/bin/캡 파일에 :

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

수정하고 싶지 않은 경우 capistrano/bin/cap -r 플래그를 사용하여 실행할 때 Rubygems 라이브러리를 구체적으로 포함시킬 수 있습니다. 주어진 명령은 다음과 같습니다.

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

다른 팁

Capistrano의 특정 버전을 사용하는 또 다른 방법은 다음과 같이 .bash_login에 별명을 추가하는 것과 같습니다.

alias cap1='cap _1.4.2_ '

여기서 CAP1은 실행할 명령입니다 1.4.2 해당 명령을 실행하려는 버전은 다음을 수행 할 수 있습니다.

cap1 deploy

그런 다음 해당 버전의 Capistrano를 사용하여 응용 프로그램을 배포합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top