2013-10-15 16 views
5

Mam aplikację, która pozwala użytkownikom przesyłać obrazy i są przechowywane, za pośrednictwem CarrierWave, do folderu publicznego, w folderze o nazwie uploads/images /.Zapobieganie usuwaniu pewnych folderów w folderze publicznym z szyn capistrano

Zauważyłem, że od czasu mojego ostatniego wdrożenia nie ma już folderu (plików) do przesyłania (i obrazów).

Czy możliwe jest usunięcie folderu i plików na serwerze produkcyjnym podczas wdrażania z Capistrano?

Jak mogę nakazać przechowywanie tego samego folderu publicznego/wysyłania we wszystkich wdrożeniach?

Dzięki stos!

Odpowiedz

6

Polecam wykonanie zadania capistrano, które tworzy dowiązanie symboliczne do udostępnionego folderu. Dowiązanie symboliczne będzie działało jako łącze do katalogu, więc cały Twój kod do przechowywania/pobierania będzie działał normalnie.

Capistrano przykład zadanie:

before "deploy:restart", :symlink_directories 
task :symlink_directories do 
    run "ln -nfs #{shared_path}/uploads #{release_path}/public/uploads" 
end 
+0

mógłbyś polecić dobry spacer/przykład w ten sposób? Jestem nowy w Rails i Capistrano, więc wciąż się uczę. – Devan

+2

Po prostu umieść powyższe zadanie w pliku deploy.rb i zmień ścieżki, które będą odpowiednie dla twojej aplikacji. – jvperrin

+0

Tak więc umieszczam to zadanie w moim deploy.rb, jednak kiedy przechodzę do folderu publicznego/uploadów dla bieżącego wydania, mówi nie może rozwiązać "przesyłania" dowiązania symbolicznego. Nie mam "publicznego/uploadów" w moim udostępnionym folderze. Czy powinienem to zrobić ręcznie? – Devan

1

Chciałbym zaktualizować to odpowiedź dla tych, którzy chcą zrobić to samo z Capistrano v3.9.1

w pliku deploy.rb, można dodać następujące

set :linked_dirs, %w{public/uploads/} 

Tak jak w powyższej odpowiedzi, dowiązanie symboliczne powoduje umieszczenie katalogów w wydaniu podczas wdrażania.

Idealny do katalogów takich jak przesyłanie, w których nie chcemy nadpisywać zawartości.

Aby uzyskać pełną listę zmiennych, które można „set” zobaczyć capistrano docs here.

+0

Twoja odpowiedź powinna zawierać pewne wyjaśnienia oraz wymagany kod. – svgrafov

+0

@svgrafov Podałem lepsze wyjaśnienie i powiązałem ze źródłem. Zwróć też uwagę, że wymagany kod jest już ustawiony. Żadna gra słów nie jest przeznaczona. – DavidA26

+0

"Zauważ, że wymagany kod jest już ustawiony" Musi być jakieś nieporozumienie, ponieważ miałem na myśli, że "Masz kod źródłowy, to dlaczego nie dodać wyjaśnienia?" – svgrafov

Powiązane problemy