2013-01-11 9 views
6

Mam aplikację Rails 3.2.3, której używam do wdrażania przy użyciu capistrano. Kiedy postanowiłem uaktualnić szyny do 3.2.11 zrobiłem następujące czynności:Wdrażanie Capistrano kończy się niepowodzeniem po aktualizacji do Rails 3.2.11

  1. zmienił wersję szyn Gemfile
  2. Run "szyny aktualizacji pęczek"
  3. pchnął nowe perełki od dostawcy/cache, Gemfile i Gemfile. zablokować
  4. prowadzony "deploy produkcji cap"

Capistrano teraz kończy się niepowodzeniem z błędem:

* 2013-01-11 15:58:25 executing `deploy:assets:precompile' 
    triggering before callbacks for `deploy:assets:precompile' 
    * 2013-01-11 15:58:25 executing `deploy:assets:update_asset_mtimes' 
    * executing "[ -e /home/deploy/projects/otv/shared/assets/manifest.yml ] && cat /home/deploy/projects/otv/shared/assets/manifest.yml || echo" 
    servers: ["xxx.xxx.99.51"] 
    [xxx.xxx.99.51] executing command 
    command finished in 28ms 
    * executing "cd -- /home/deploy/projects/otv/releases/20130111095812 && export LANG=en_US.UTF-8 && /usr/local/bin/bundle exec rake RAILS_ENV=production RAILS_GROUPS=assets assets:precompile && cp -- /home/deploy/projects/otv/shared/assets/manifest.yml /home/deploy/projects/otv/releases/20130111095812/assets_manifest.yml" 
    servers: ["xxx.xxx.99.51"] 
    [xxx.xxx.99.51] executing command 
** [out :: xxx.xxx.99.51] cp: cannot stat ‘/home/deploy/projects/otv/shared/assets/manifest.yml’: No such file or directory 
    command finished in 18773ms 

Próbowałem wykonać te kroki z innym projektem, który wcześniej z powodzeniem był używany z Capistrano z takim samym wynikiem.

My Gemfile and deploy.rb

Odpowiedz

4

FWIW, byłem coraz to po zaktualizowaniu Capistrano do> 2.14.0:

*** [err :: ourapp.net] cp: cannot stat `/home/deploy/www/ourapp/shared/assets/manifest.yml' 
*** [err :: ourapp.net] : No such file or directory 

myślę symlinking aktywa wspólne dir naprawiłby to, ale zamiast obrażać się (muszę to wdrożyć), po prostu obniżyłem limit z powrotem do 2.13.5.

+0

Wielkie dzięki, Steve! –

+2

Używam capistrano 2.14.2 i widzę ten sam problem po aktualizacji do Rails 4.0beta1. Czy istnieje jakieś rozwiązanie bez zmiany klasyfikacji? - Nie jestem pewien, od czego miałbym dowiązać symbolicznie? –

+3

@RomanGaufman Nazwa pliku manifestu została zmieniona na styl "manifest-a5247d227d9b50f54f7c66dc7e640bca.json". Możesz uniknąć tego błędu, tworząc 'manifest.yml' za pomocą komendy' touch' w katalogu '/ home/deploy/www/ourapp/shared/assets'. – Tsutomu

0

czy usunąć wszystkie swoje aktywa na odległym serwerze przed upgrade?

Czasami niektóre stare odniesienia może spowodować tego rodzaju kwestii

Wiwaty, Jeremy

+1

Pomyśl o usunięciu Gemfile.lock przy okazji .. – Jeremy

+0

Nie mogę zrozumieć, jak usunąć moje zasoby. ... folder projectpath/shared/assets jest pusty, wszystkie zasoby zlokalizowane w ... projectpath/releases/yyyymmddhhmmss/public/assets. Nie rozumiem też, jak mogę usunąć plik Gemfile.lock, czy powinienem go usunąć z repozytorium, ponieważ kod do wdrożenia jest pobierany z repozytorium? –

+0

Trzymanie pliku Gemfile.lock w repozytorium nie jest dobrą praktyką, ponieważ jest generowane automatycznie podczas wykonywania pakunku (instalacja, aktualizacja ..). Czy próbowałeś wykonać ostatnie polecenie bezpośrednio (wykonanie "cd -/home/deploy/projects/otv/releases/2 [....]) na przykład w bieżącej wersji ?! – Jeremy

1

Miałem ten sam problem.

Nowe wersje capistrano mają teraz some code do obsługi dowiązania do ścieżki zasobów współdzielonych. Mój config/deploy.rb miał kod, który mógł sobie z tym poradzić, a ścieżki były ze sobą sprzeczne. po prostu usunięte z tej linii to, aby rozwiązać problem:

run "ln -nfs #{shared_path}/public/assets #{release_path}/public/assets"