class Synco::ScriptScope

Attributes

current_server[R]
group[R]
logger[R]
master_server[R]
script[R]

Public Class Methods

new(script, logger, group) click to toggle source
# File lib/synco/scope.rb, line 70
def initialize(script, logger, group)
        @script = script
        @logger = logger
        @group = group
        
        @current_server = ServerScope.new(@script.current_server, self)
        @master_server = ServerScope.new(@script.master_server, self, @current_server)
end

Public Instance Methods

call() click to toggle source
# File lib/synco/scope.rb, line 89
def call
        if @script.running_on_master?
                logger.info "We are the master server..."
        else
                logger.info "We are not the master server..."
                logger.info "Master server is #{@master}..."
        end

        @script.try(self) do
                # This allows events to run on the master server if specified, before running any backups.
                
                @master_server.try(master_target_server) do
                        method.try(self) do
                                logger.info "Running backups for server #{@current_server}..."
                                
                                run_servers(group)
                        end
                end
        end
end
method() click to toggle source
# File lib/synco/scope.rb, line 85
def method
        @script.method
end

Private Instance Methods

master_target_server() click to toggle source
# File lib/synco/scope.rb, line 112
def master_target_server
        TargetScope.new(self, @master_server)
end
run_servers(group) click to toggle source

This function runs the method for each directory and server combination specified.

# File lib/synco/scope.rb, line 126
def run_servers(group)
        target_servers do |server|
                sync_scope = TargetScope.new(self, server)

                logger.info "===== Processing ====="
                logger.info "[Master]: #{master_server}"
                logger.info "[Target]: #{server}"
                
                server.try(sync_scope) do
                        @script.directories.each do |directory|
                                directory_scope = DirectoryScope.new(sync_scope, directory)

                                logger.info "[Directory]: #{directory}"
                                directory.try(directory_scope) do
                                        method.call(directory_scope)
                                end
                        end
                end
        end
end
target_servers() { |server_scope| ... } click to toggle source
# File lib/synco/scope.rb, line 116
def target_servers
        @script.servers.each do |name, server|
                # server is always a data destination, therefore server can't be @master_server:
                next if @master_server.eql?(server)
                
                yield ServerScope.new(server, self, @current_server)
        end
end