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