2013-04-29 10 views
8

Właśnie uruchamiamy Capistrano wdrożyć do naszej aplikacji i ciągle działa w ten błąd:Capistrano wdrożyć nie z powodu braku pliku manifestu gdy wykorzystuje aktywa prefiks

* executing ["ls /path/to/app/shared/assets/manifest*"] 
    servers: ["web03"] 
    [web03] executing command 
[err :: web03] ls: /path/to/app/shared/assets/manifest* 
[err :: web03] : No such file or directory 

Gdybym ręcznie utworzyć plik manifestu z touch /path/to/app/shared/assets/manifest.yml, skrypt wdrażania działa dobrze. Czuje się to jednak dość szkicowo.

Wylogowałem się z tego i najbardziej mogę się dowiedzieć, że plik manifestu, którego szuka, jest produktem potoku aktywów. Sprawdziłem i faktycznie mam włączoną potokę (config.assets.enabled = true), więc nie jestem w stanie tego zrobić.

Czy ktoś mógłby mi pomóc zrozumieć 1) czym jest ten plik manifestu i jak został utworzony; i 2) dlaczego nie jest tworzony dla mojej aplikacji?

Aktualizacja: Myślę, że zbliża się do odpowiedzi i myślę, że to ma coś wspólnego z tej linii:

config.assets.prefix = "/some_other_path" 

musieliśmy zmienić nazwę „aktywa” ścieżki, ponieważ mamy Aktywów obiekty w naszym systemie i domyślam się, że Cap może się z tego powodu zdezorientować. Jakieś sugestie?

Odpowiedz

15

Moje podejrzenie było słuszne: był to problem z przemianowanym katalogiem zasobów. Cap nie wiedział, aby zaglądnąć w public/some_other_path zamiast public/assets.

Innymi słowy, ponieważ ta linia jest w moim application.rb:

config.assets.prefix = "some_other_path" 

musiałem dodać tę linię do mojego deploy.rb:

set :assets_prefix, "some_other_path" 

Następnie Cap wie gdzie szukać manifestu , kopiuje go do shared/assets i kończy poprawnie.

Przydałoby się, aby zmienna deploy.rb odwoływała się do zmiennej config, zamiast konieczności ponownego kodowania ścieżki po raz drugi, ale wykracza to poza zakres tego pytania.

0

jeśli skonfigurować z AWS, tu powinno być ...

appname/config/environments/production.rb

config.action_controller.asset_host = "//#{ENV['FOG_DIRECTORY']}.s3.amazonaws.com" 
config.assets.prefix = "/#{ENV['APP_NAME']}/assets" 

appname/config/deploy.rb

... 
set :keep_releases, 5 
set :assets_prefix, ->{ "#{fetch(:application)}/assets" } 

set :whenever_identifier, -> { "#{fetch(:application)}_#{fetch(:stage)}" } 
... 
Powiązane problemy