Frozen Capistrano를 어떻게 사용합니까?
-
22-07-2019 - |
문제
배경
나는 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를 사용하여 응용 프로그램을 배포합니다.