Class: Win32ServiceManager
- Inherits:
-
Object
- Object
- Win32ServiceManager
- Defined in:
- lib/win32_service_manager.rb
Constant Summary collapse
- VERSION =
'0.1.0'
Class Method Summary collapse
Instance Method Summary collapse
-
#create(name, command, args = '', description = nil, options = {}) ⇒ Object
Create a new service.
-
#delete(name) ⇒ Object
Mark a service for deletion (note, does not terminate the service).
-
#initialize(name_key = '') ⇒ Win32ServiceManager
constructor
Construct a new service manager, just sets up a name_key, which is used as a leading string to the name of all services managed by the instance.
- #services ⇒ Object
- #start(name) ⇒ Object
-
#status(name = nil) ⇒ Object
(also: #list)
Returns an array of tuples of name and description.
- #stop(name) ⇒ Object
Constructor Details
#initialize(name_key = '') ⇒ Win32ServiceManager
Construct a new service manager, just sets up a name_key, which is used as a leading string to the name of all services managed by the instance. srv_any_path must be a full path to srvany.exe.
12 13 14 15 |
# File 'lib/win32_service_manager.rb', line 12 def initialize(name_key = '') self.class.load_dependencies @name_key = name_key end |
Class Method Details
.load_dependencies ⇒ Object
7 |
# File 'lib/win32_service_manager.rb', line 7 def self.load_dependencies; require 'win32/service'; end |
.version ⇒ Object
6 |
# File 'lib/win32_service_manager.rb', line 6 def self.version; VERSION; end |
Instance Method Details
#create(name, command, args = '', description = nil, options = {}) ⇒ Object
Create a new service. The service name will be appended to the name_key and inserted into the registry using Win32::Service. The arguments are then adjusted with win32-registry. One recommended pattern is to store persisence details about the service as yaml in the optional description field.
22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/win32_service_manager.rb', line 22 def create(name, command, args = '', description = nil, = {}) defaults = { :service_type => Win32::Service::WIN32_OWN_PROCESS, :start_type => Win32::Service::AUTO_START, :error_control => Win32::Service::ERROR_NORMAL } defaults.merge!() name = n(name) = defaults.merge( :display_name => name, :description => description || name, :binary_path_name => command ) Win32::Service.create(name, nil, ) end |
#delete(name) ⇒ Object
Mark a service for deletion (note, does not terminate the service)
39 40 41 |
# File 'lib/win32_service_manager.rb', line 39 def delete(name) Win32::Service.delete(n(name)) end |
#services ⇒ Object
58 59 60 61 62 63 |
# File 'lib/win32_service_manager.rb', line 58 def services Win32::Service.services.select do |svc| # TODO in future, 1.8.7, can use start_with? svc.display_name[0,@name_key.size] == @name_key end end |
#start(name) ⇒ Object
43 44 45 |
# File 'lib/win32_service_manager.rb', line 43 def start(name) Win32::Service.start(n(name)) end |
#status(name = nil) ⇒ Object Also known as: list
Returns an array of tuples of name and description
52 53 54 55 |
# File 'lib/win32_service_manager.rb', line 52 def status(name = nil) list = name ? services.select { |s| s.display_name == name } : services list.map { |svc_info| svc_info.to_hash } end |
#stop(name) ⇒ Object
47 48 49 |
# File 'lib/win32_service_manager.rb', line 47 def stop(name) Win32::Service.stop(n(name)) end |