Module: RemoteMethods

Defined in:
lib/lsync/shell_client.rb

Class Method Summary collapse

Class Method Details

.mkdir_p(path) ⇒ Object

Recursively make a directory (typically the server.root + directory)



65
66
67
# File 'lib/lsync/shell_client.rb', line 65

def self.mkdir_p(path)
	FileUtils.mkdir_p(path)
end

.run_command(cmd) ⇒ Object

Run a command in the local environment.



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# File 'lib/lsync/shell_client.rb', line 20

def self.run_command(cmd)
	$logger.info("Running #{cmd.inspect}...")
	$connection.send_object([:info, "Running #{cmd.inspect}..."])

	cin, cout, cerr = Open3.popen3(*cmd)
	cin.close

	pipes = [cout, cerr]

	while pipes.size > 0
		ready = IO.select(pipes)

		ready[0].each do |pipe|
			# Delete the pipe when it has become closed
			if pipe.closed? || pipe.eof?
				pipes.delete(pipe)
				next
			end

			line = pipe.readline.chomp
			mode = (pipe == cout ? :info : :error)

			$logger.send(mode, line)
			$connection.send_object([mode, line])
		end
	end

	$logger.info "Done running command."
	$connection.send_object(:done)
end

.run_script(name, code, arguments) ⇒ Object

Run a script (given the code) in the local environment.



52
53
54
55
56
57
58
59
60
61
62
# File 'lib/lsync/shell_client.rb', line 52

def self.run_script(name, code, arguments)
	path = script_path(name)

	File.open(path, "w") do |f|
		f.write(code)
	end

	FileUtils.chmod 0755, path

	run_command([path] + arguments)
end

.set_working_dir(path) ⇒ Object

Set the working directory (typically the server.root)



70
71
72
# File 'lib/lsync/shell_client.rb', line 70

def self.set_working_dir(path)
	Dir.chdir(path)
end