shared_children not working in Capistrano 3

capistrano, deployment, ruby-on-rails

Solution

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.

Problem

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.

Original source