def start
      throw([:task_has_failed], "Guard::RemoteSync options invalid") unless options_valid?
      Guard::Compat::UI.info "Guard::RemoteSync started in source directory '#{File.expand_path @source.directory}'"
      Guard::Compat::UI.notify("Guard::RemoteSync is running in directory #{File.expand_path @source.directory}", notifier_options)
      if @command.test
        @command.sync if options[:sync_on_start]
      else
        throw([:task_has_failed], "Guard::RemoteSync rsync failed, please check your configurations, directories, permissions, and maybe even your ssh details ( set up a public key possibly )")
      end

    end
def start
      throw([:task_has_failed], "Guard::RemoteSync options invalid") unless options_valid?
      Guard::Compat::UI.info "Guard::RemoteSync started in source directory '#{File.expand_path @source.directory}'"
      Guard::Compat::UI.notify("Guard::RemoteSync is running in directory #{File.expand_path @source.directory}", notifier_options)
      if @command.test
        @command.sync if options[:sync_on_start]
      else
        throw([:task_has_failed], "Guard::RemoteSync rsync failed, please check your configurations, directories, permissions, and maybe even your ssh details ( set up a public key possibly )")
      end

    end
Initialize a Guard.
 @param [Hash] options the custom Guard options
 Call once when Guard starts. Please override initialize method to init stuff.
 @raise [:task_has_failed] when start has failed