Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

shared_children not working in Capistrano 3

I have the following in my deploy.rb:

set :upload_dirs, %w(public/pictures)
set :shared_children, (fetch(:shared_children) || []) + fetch(:upload_dirs)

This seems to be the suggested method to allow me to have the public directory shared.

The public/pictures directory exists and is checked in empty in the repository. I tried to also not have it in the repository but it didn't work anyway.

When I deploy with capistrano, I don't see the public/pictures directory appearing anywhere in my deploy location.

Has this feature been removed from Capistrano 3? Is there a definitive source of documentation for Capistrano 3? All I can find is Capistrano 2 documentation and very scarce sources of information for v3.

like image 904
Gabriele Cirulli Avatar asked Jan 13 '14 18:01

Gabriele Cirulli


1 Answers

This seems to be an undocumented change from Capistrano 2 to 3. In the new version, the name seems to be :linked_dirs.

I updated my code as such:

set :linked_files, %w(config/database.yml config/application.yml)
set :linked_dirs, %w(public/pictures)

I also took the chance to use the new :linked_files feature, which allows you to link files found in the shared directory directly into your current application without having to write custom tasks for it.

Both variables seem to be nil at first, so you don't have to fetch the current value to append your own directories to them.

like image 84
Gabriele Cirulli Avatar answered Oct 13 '22 11:10

Gabriele Cirulli