lib/runit-man/service_info/base.rb in runit-man-2.3.21 vs lib/runit-man/service_info/base.rb in runit-man-2.4.0a1
- old
+ new
@@ -99,11 +99,12 @@
@log_status.pid
end
def log_file_location
rel_path = ServiceInfo.klass.log_location_cache[log_pid]
- return nil if rel_path.nil?
+ return nil if rel_path.nil?
+
File.expand_path(rel_path, log_run_folder)
end
def log_file_path(file_name)
nil
@@ -112,18 +113,20 @@
def log_files
[]
end
def send_signal(signal)
- return unless supervise?
+ return unless supervise?
+
File.open(File.join(supervise_folder, 'control'), 'w') do |f|
f.print signal.to_s
end
end
def files_to_view
- return [] unless File.directory?(files_to_view_folder)
+ return [] unless File.directory?(files_to_view_folder)
+
Dir.entries(files_to_view_folder).select do |name|
File.symlink?(File.join(files_to_view_folder, name))
end.map do |name|
File.expand_path(
File.readlink(File.join(files_to_view_folder, name)),
@@ -133,22 +136,24 @@
File.file?(file_path)
end
end
def urls_to_view
- return [] unless File.directory?(urls_to_view_folder)
+ return [] unless File.directory?(urls_to_view_folder)
+
Dir.entries(urls_to_view_folder).select do |name|
name =~ /\.url$/ && File.file?(File.join(urls_to_view_folder, name))
end.map do |name|
data_from_file(File.join(urls_to_view_folder, name))
end.select do |url|
!url.nil?
end
end
def allowed_signals
- return [] unless File.directory?(allowed_signals_folder)
+ return [] unless File.directory?(allowed_signals_folder)
+
Dir.entries(allowed_signals_folder).reject do |name|
ServiceInfo::Base.itself_or_parent?(name)
end
end
@@ -188,16 +193,18 @@
def supervise?
File.directory?(supervise_folder)
end
def data_from_file(file_name)
- return @files[file_name] if @files.include?(file_name)
+ return @files[file_name] if @files.include?(file_name)
+
@files[file_name] = ServiceInfo::Base.real_data_from_file(file_name)
end
def sorted_log_files(log_files)
return log_files if log_files.length < 2
+
log_files.sort { |a, b| a[:created] <=> b[:created] }
end
class << self
def all
@@ -209,35 +216,40 @@
def [](name)
all_service_names.include?(name) ? ServiceInfo.klass.new(name) : nil
end
def real_data_from_file(file_name)
- return nil unless File.readable?(file_name)
+ return nil unless File.readable?(file_name)
+
if RUBY_VERSION >= '1.9'
data = IO.read(file_name, :external_encoding => 'ASCII-8BIT')
else
data = IO.read(file_name)
end
- data.chomp! unless data.nil?
+
+ data.chomp! unless data.nil?
data.empty? ? nil : data
end
def itself_or_parent?(name)
name == '.' || name == '..'
end
private
def active_service_names
- return [] unless File.directory?(RunitMan::App.active_services_directory)
+ return [] unless File.directory?(RunitMan::App.active_services_directory)
+
Dir.entries(RunitMan::App.active_services_directory).reject do |name|
full_name = File.join(RunitMan::App.active_services_directory, name)
itself_or_parent?(name) || (!File.symlink?(full_name) && !File.directory?(full_name))
end
end
def inactive_service_names
- return [] unless File.directory?(RunitMan::App.all_services_directory)
+ return [] unless File.directory?(RunitMan::App.all_services_directory)
+
actives = active_service_names
+
Dir.entries(RunitMan::App.all_services_directory).reject do |name|
full_name = File.join(RunitMan::App.all_services_directory, name)
itself_or_parent?(name) || !File.directory?(full_name) || actives.include?(name)
end
end