Sha256: 8360f8568ed209fd4534b048bb92e9c6e7d153589d65a9de84b7a9ad4246dd2c

Contents?: true

Size: 1.01 KB

Versions: 5

Compression:

Stored size: 1.01 KB

Contents

require "tmpdir"

class RsyncDaemon
  #for now, creates a readonly rsync daemon for the current directory on the mountpath "src"

  def initialize
    @project_directory = Dir.pwd
    @started = false
  end

  def start
    return if @started
    @tmpdir = Dir.mktmpdir("gorgon")
    success = nil
    Dir.chdir(@tmpdir) do
      File.write("rsyncd.conf", rsyncd_config_string(@project_directory))

      success = Kernel.system("rsync --daemon --config rsyncd.conf")
    end

    if success
      @started = true
      return true
    else
      return false
    end
  end

  def stop
    return unless @started

    success = nil
    Dir.chdir(@tmpdir) do
      pid = File.read("rsync.pid")
      success = Kernel.system("kill #{pid}")
    end

    if success
      @started = false
      return true
    else
      return false
    end
  end

  private

  def rsyncd_config_string(shared_dir)
    return <<-EOF
port = 43434
pid file = rsync.pid

[src]
  path = #{@project_directory}
  read only = true
  use chroot = false
EOF
  end
end

Version data entries

5 entries across 5 versions & 1 rubygems

Version Path
gorgon-0.6.1 lib/gorgon/rsync_daemon.rb
gorgon-0.6.0 lib/gorgon/rsync_daemon.rb
gorgon-0.6.0.rc2 lib/gorgon/rsync_daemon.rb
gorgon-0.6.0.rc1 lib/gorgon/rsync_daemon.rb
gorgon-0.5.0.rc1 lib/gorgon/rsync_daemon.rb