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