2
나는 before_symlink가 언제 어떻게 실행되는지, 특히 실패가있는 경우를 이해하려고 노력하고있다. 이 블록을 선택하십시오 :요리사의 deploy_revision/before_symlink는 언제 실행됩니까?
deploy_revision "foo" do
action :deploy
deploy_to "/opt/foo"
...
symlink_before_migrate(app_symlinks.merge({
... }))
purge_before_symlink([])
create_dirs_before_symlink([])
symlinks({})
before_symlink do
current_release = release_path
bash "foo_buildout_install" do
user "foo"
cwd current_release
code <<-EOH
...
EOH
end
end
restart_command do
current_release = release_path
bash "foo_foreman_install_and_restart" do
restart foo || start foo
EOH
end
end
end
before_symlink 블록이 실행되는 조건은 무엇입니까? 예 : 빌드가 실패하면 요리사가 다시 제공됩니다. 다시 실행됩니까? 심볼릭 링크가 만들어지면 다시 호출됩니까?
(나는 아직도 요리사를 배우고, 나는 루비 개발을하지 않는다, 그래서 deploy_revision 작동, 또는 레일 배포 모델 방법에 대해 아무것도 이해 가정하지 마십시오.)
글쎄, 그건 간단합니다 읽으려면 :) 리포지토리 코드가 이미 배포 된 것과 동일한 경우 재배포를 피하기 위해 어딘가에 수표가 없습니까? –
이 보이지 않는다면, copy_cached_repo 메소드는'cached-copy' 디렉토리에있는 디렉토리를 릴리스 디렉토리로 복사 한 다음 위의 심볼릭 링크 작업에 복사합니다. 아마도 캐시 된 복사본의 존재는 처음부터 repo를 다시 체크 아웃하지 않는다는 것을 암시합니다. – Anentropic