Module: XDo::Drive

Extended by:
Open3
Defined in:
lib/xdo/drive.rb

Overview

Some methods to interact with CD (and DVD, of course) drives. The value of the drive parameter of many methods can be either a mount point or a device file like scd0.

If you don’t pass in a drive name, the returnvalue of #default will be used.

Class Method Summary collapse

Class Method Details

.close(drive = nil) ⇒ Object

Closes a drive.

Raises:



27
28
29
30
31
32
# File 'lib/xdo/drive.rb', line 27

def close(drive = nil)
  drive = default unless drive
  err = ""
  popen3("eject -t #{drive}"){|stdin, stdout, stderr| err << stderr.read}
  raise(XDo::XError, err) unless err.empty?
end

.defaultObject

Returns the mount point of the default drive. You can use it as a value for a drive parameter.

Raises:



36
37
38
39
40
41
42
# File 'lib/xdo/drive.rb', line 36

def default
  err = ""
  out = ""
  popen3("#{XDo::EJECT} -d"){|stdin, stdout, stderr| out << stdout.read; err << stderr.read}
  raise(XDo::XError, err) unless err.empty?
  out.match(/`(.*)'/)[1]
end

.eject(drive = nil) ⇒ Object

Opens a drive.

Raises:



18
19
20
21
22
23
24
# File 'lib/xdo/drive.rb', line 18

def eject(drive = nil)
  err = ""
  drive = default unless drive
  popen3("#{XDo::EJECT} #{drive}"){|stdin, stdout, stderr| err << stderr.read}
  raise(XDo::XError, err) unless err.empty?
  true
end

.lock(drive = nil) ⇒ Object

Locks a drive, so that it can’t be opened by using the eject button.

Raises:



46
47
48
49
50
51
52
# File 'lib/xdo/drive.rb', line 46

def lock(drive = nil)
  drive = default unless drive
  err = ""
  popen3("#{XDo::EJECT} -i on #{drive}"){|stdin, stdout, stderr| err << stderr.read}
  raise(XDo::XError, err) unless err.empty?
  true
end

.release(drive = nil) ⇒ Object

Unlocks a drive, so that it can be opened by the eject button.

Raises:



56
57
58
59
60
61
62
# File 'lib/xdo/drive.rb', line 56

def release(drive = nil)
  drive = default unless drive
  err = ""
  popen3("#{XDo::EJECT} -i off #{drive}")
  raise(XDo::XError,err) unless err.empty?
  true
end