2017-04-26 1 views
0

서버에 배포하는 Capistrano Ruby 작업의 일부로 Git 메시지를 출력하고 방금 배포 한 코드를 커밋하고 싶습니다. 이와Capistrano/Ruby 실행은 변수 뒤에 세미콜론을 추가합니다.

: 커밋 해시의 맨 끝에 세미콜론

Deployed "Merge branch 'feature/some-feature' into develop": https://example.com/myorg/myrepo/commit/0fdfa09fbfe012649fb0a998aa2e99cb5fd7c8b3; 

참고 :

git_message = `git log -1 HEAD --pretty=format:%s` 
git_commit = `git rev-parse HEAD` 
git_commit = "https://example.com/myorg/myrepo/commit/" + git_commit 

execute "echo \"Deployed \\\"#{git_message}\\\": #{git_commit}\" | a_command_that_posts_to_slack" 

그것은 이런 식으로 뭔가를 출력합니다. puts을 사용하여 git_commit이 세미콜론으로 끝나지 않으며 git_message에는 하나도 없으며 그 뒤에 하나도없는 것으로 확인되었습니다.

무엇이 세미콜론을 추가하고 어떻게 제거 할 수 있습니까?

+0

출력을 말할 때 느슨하게 말하는 것을 의미합니까? 아마도 당신이'a_command_that_posts_to_slack'을 가지고있을 것입니다. 아마도이 명령은 세미콜론을 추가 할 것입니까? 해당 명령으로 파이핑하는 대신 파일로 리디렉션하십시오. – ddubs

+0

슬랙에서 세미콜론을 볼 수 있지만 터미널에서도 볼 수 있습니다. 동일한 세미콜론이 파이핑없이 나타납니다 : echo "Deployed \\\"# {git_message} \\\ ": # {git_commit} \" "' – Hugo

답변

1

당신은 당신의 명령에 줄 바꿈을 가지고 있기 때문이다 :를 내장.

Ruby의 Backticks는 줄 바꿈 줄을 포함하여 전체 프로세스의 표준 출력을 캡처합니다. 그들을 제거하려면 chomp을 사용하십시오.

git_message = `git log -1 HEAD --pretty=format:%s`.chomp 
git_commit = `git rev-parse HEAD`.chomp 
git_commit = "https://example.com/myorg/myrepo/commit/" + git_commit 

execute "echo \"Deployed \\\"#{git_message}\\\": #{git_commit}\" | a_command_that_posts_to_slack" 
0

아마 그 배쉬 쉘 내장으로 :을 실행하고 그래서 그 명령을 세미콜론으로 종료하려고합니까? :을 제거해보세요. 이중 따옴표를 포함하는 커밋 메시지가 큰 문제가 될 수도 있으므로 큰 따옴표를 삽입하는 것에 대해 걱정할 필요가 있습니다. 배쉬에

참조하면 여러 명령 (한 줄에 하나씩)을 실행하려는 생각 카피 스트라 노 세미콜론으로 번역되는, What is the purpose of the : (colon) GNU Bash builtin?

관련 문제