after 'deploy:symshared', 'symlinked_nfs_files' after 'deploy:symshared', 'symlinked_nfs_dirs'
after 'deploy:check', 'check:linked_nfs_dirs' after 'deploy:check', 'check:make_linked_nfs_dirs' after 'deploy:check', 'check:linked_nfs_files'
namespace :symlink do
desc "Symlink nfs directories" task :linked_nfs_dirs do next unless any? :linked_nfs_dirs on release_roles :root do execute :sudo, "/bin/mkdir", "-p", linked_nfs_dir_parents(release_path) end on release_roles :app do execute :mkdir, "-p", linked_nfs_dir_parents(release_path) end on release_roles :all do fetch(:linked_nfs_dirs).each do |dir| target = release_path.join(dir) source = nfs_path.join(dir) next if test "[ -L #{target} ]" execute :rm, "-rf", target if test "[ -d #{target} ]" execute :ln, "-s", source, target end end end desc "Symlink linked files" task :linked_nfs_files do next unless any? :linked_nfs_files on release_roles :root do execute :sudo, "/bin/mkdir", "-p", linked_nfs_file_dirs(release_path) end on release_roles :app do execute :mkdir, "-p", linked_nfs_file_dirs(release_path) end on release_roles :all do fetch(:linked_nfs_files).each do |file| target = release_path.join(file) source = nfs_path.join(file) next if test "[ -L #{target} ]" execute :rm, target if test "[ -f #{target} ]" execute :ln, "-s", source, target end end end end namespace :check do desc "Check directories to be linked exist in shared" task :linked_nfs_dirs do next unless any? :linked_nfs_dirs on release_roles :root do execute :sudo, "/bin/mkdir", "-p", linked_nfs_dirs(nfs_path) end on release_roles :app do execute :mkdir, "-p", linked_nfs_dirs(nfs_path) end end desc "Check directories of files to be linked exist in shared" task :make_linked_nfs_dirs do next unless any? :linked_nfs_files on release_roles :root do execute :sudo, "/bin/mkdir", "-p", linked_nfs_file_dirs(nfs_path) end on release_roles :app do execute :mkdir, "-p", linked_nfs_file_dirs(nfs_path) end end desc "Check files to be linked exist in shared" task :linked_nfs_files do next unless any? :linked_nfs_files on release_roles :all do |host| linked_nfs_files(nfs_path).each do |file| unless test "[ -f #{file} ]" error t(:linked_nfs_file_does_not_exist, file: file, host: host) exit 1 end end end end end