2010-04-09 7 views
0

Capistrano 배포 파일 (Capfile)이 다소 크고 몇 개의 네임 스페이스가 포함되어 있으며 일반적으로 많은 정보가 이미 있습니다. 궁극적 인 목표는 Tinder gem을 사용하여 전체 배치의 결과를 Campfire에 붙여 넣는 것입니다. 이미 Tinder 설정이 제대로되어 있습니다.Capistrano의 출력 리디렉션

Capistrano 캡처 방법을 사용했지만 첫 번째 호스트에서만 작동합니다. 또한 그 많은 일 통과와 같은 추가하는 것입니다 : 특히

output << capture 'foocommand' 

를, 그래서 STDOUT에 퍼팅에 추가 변수로 해당 파일에서 어떤 전개의 출력을 (캡처 찾고 있어요 나는 그것을 볼 수있다), 그 변수의 출력을 notify_campfire이라는 함수로 전달한다. notify_campfire 함수는 작업이 끝날 때마다 (네임 스페이스에 관계없이 모든 작업) 호출되기 때문에 사용할 수있는 작업 이름과 출력 (해당 출력 변수에 저장되어 있음)이 있어야합니다. 이것을 달성하는 방법에 대한 생각은 크게 감사 할 것입니다.

+0

이것은 Capistrano의 중요한 단점 인 것 같습니다. 서버의 원격 관리에 사용할 다른 도구를 찾기 시작한 이유는 ... – iconoclast

답변

1

내가 대신 유닉스 당신과 사용 파이프를주는 무슨 사용하여 카피 스트라 노 로거 덤비는하지 않는 것이 좋습니다 :

로거가 다시 STDIN과 STDOUT 모두 기록, 파이프를 읽는
cap deploy | my_logger.rb 

적절한 스트림.

Engineyard cap recipieshave a logger - 코드를 수정해야하는 경우 유용 할 수 있지만 권장하지는 않습니다.

1

일종의 해킹 방법으로 문제를 해결할 수 있지만, Rake 작업에서 배포 작업을 실행하고 %x을 사용하여 출력을 캡처 해 볼 수 있습니다.

# ...in your Rakefile... 
task :deploy_and_notify do 
    output = %x[ cap deploy ] # Run your deploy task here. 
    notify_campfire(output) 
    puts output    # Echo the output. 
end 
+0

이 코드의 대부분은 심지어 Ruby가 아닙니다. 배포되는 대부분은 Perl 또는 Python입니다. 나는 그것이 레이크를 사용하여 무효화되지 않는다는 것을 알고 있지만 실제로는 같은 정신이 아닙니다. –

+0

위 코드는 예제 일뿐입니다. 거의 모든 언어로 동일한 래퍼 스크립트를 작성할 수 있습니다. –

+0

아이디어는 Capfile 내에서만 가져 오는 것입니다. 나는 그 변수의 내용을 캠프 파이어 (chatroom)에 보낼 수 있도록 Capfile 내의 변수로부터 그 변수에 접근하고 싶다. –

관련 문제