lib/capistrano/bundle_rsync/scm.rb in capistrano-bundle_rsync-0.2.4 vs lib/capistrano/bundle_rsync/scm.rb in capistrano-bundle_rsync-0.2.5

- old
+ new

@@ -80,9 +80,41 @@ ) end # @abstract # + # Rsync arbitrary contents to shared directory + # + # This is an additional task endpoint provided by capistrano-bundle_rsync + # + # @return void + def rsync_shared + hosts = release_roles(:all) + rsync_options = config.shared_rsync_options + + if config_files = config.config_files + Parallel.each(hosts, in_threads: config.max_parallels(hosts)) do |host| + ssh = config.build_ssh_command(host) + config_files.each do |config_file| + basename = File.basename(config_file) + execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{config_file} #{host}:#{release_path}/config/#{basename}" + end + end + end + + if shared_dirs = config.shared_dirs + Parallel.each(hosts, in_threads: config.max_parallels(hosts)) do |host| + ssh = config.build_ssh_command(host) + shared_dirs.each do |shared_dir| + basename = File.basename(shared_dir) + execute :rsync, "#{rsync_options} --rsh='#{ssh}' #{shared_dir}/ #{host}:#{shared_path}/#{basename}/" + end + end + end + end + + # @abstract + # # Identify the SHA of the commit that will be deployed. This will most likely involve SshKit's capture method. # # @return void # def set_current_revision