Deploy:symlink на capistrano насочва текущата директория към предишната версия

Използвам capistrano за разгръщане на моя проект Ruby on Rails. Аз съм на Dreamhost VPS и от преди няколко седмици, без промяна в capistrano или пасажер, започнах да изпитвам странен проблем с внедряването:

Всеки път, когато capistrano внедрява моето приложение, всичко върви както трябва, с изключение на deploy:symlink (което се извиква по подразбиране), което трябва да насочва „текущата“ директория към най-новата версия. Въпреки че новата версия е внедрена правилно в директорията "releases", проблемът е, че "текущата" символна връзка винаги е настроена към предишната версия вместо към новата. Така че мога да внедрявам приложения, но винаги трябва да стартирам внедряването два пъти подред.

Можете да видите регистъра на capistrano тук: http://img715.imageshack.us/img715/7803/capistranoproblemb.png

Някой друг изпитвал ли е това преди или може ли да ми помогне да го реша?

Благодаря!


person foresth    schedule 29.06.2010    source източник


Отговори (2)


Реших това с допълнителна задача за разгръщане, която пресъздава символната връзка, използвайки различно име на вътрешна променлива с правилния път до най-новата версия (release_path вместо latest_path или нещо подобно).


namespace :deploy do
  desc "Recreate symlink"
  task :resymlink, :roles => :app do
    run "rm -f #{current_path} && ln -s #{release_path} #{current_path}"
  end
end

after "deploy:create_symlink", "deploy:resymlink", "deploy:update_crontab"
person foresth    schedule 22.07.2010
comment
В последния Capistrano е deploy:create_symlink вместо deploy:symlink. - person manafire; 11.10.2012
comment
Моля, променете приетия отговор с този, даден от @knocte. Клъджът по-горе може да работи, но това е кодова миризма. - person JellicleCat; 12.03.2014
comment
@JellicleCat: каква версия на capistrano използвате? - person knocte; 21.09.2016
comment
@knocte : Вече нямам достъп до въпросната работна станция, но предполагам, че беше v2.X. - person JellicleCat; 21.09.2016

Мисля, че отговорът на @foresth не е добро решение.

Мисля, че това, което се случва, е, че изпитвате този ужасен бъг на capistrano.

Начинът за заобикаляне на грешката е следният: НЕ ЧЕТЕТЕ latest_release ПРОМЕНЛИВАТА, ПРЕДИ ЗАДАЧАТА deploy ДА СЕ СЛУЧИ.

person knocte    schedule 16.04.2013
comment
Това трябва да е приетият отговор. Коригирането на персонализираните ми задачи според тази грешка разреши проблема. - person brendan; 01.11.2013
comment
@brendan: с каква версия на capistrano възпроизведе грешката? те ме питат това в проблема с github, който свързах... - person knocte; 05.11.2013
comment
Изглежда, че беше 2.15.4 @knocte - person brendan; 16.11.2013
comment
@brendan: благодаря, а можеш ли да го възпроизведеш с 3.x? - person knocte; 16.11.2013
comment
Срещам този проблем произволно с 3.x, но изобщо не използвам променливата latest_release. Отговорът на foresth може да е миризма на код, но това е единственият начин, по който в момента мога да гарантирам, че моите символни връзки са правилни при всяко внедряване. - person Jose Rafael Santiago Jr.; 11.03.2016
comment
@JoseRafaelSantiagoJr: да, предполагам, че отговорът ми се отнася повече за версия 2.x на capistrano, навремето - person knocte; 11.03.2016