Module: ReactOnRailsPro::V8LogProcessor
- Defined in:
- lib/react_on_rails_pro/v8_log_processor.rb
Class Method Summary collapse
- .delete_files(log_files, log_dir) ⇒ Object
- .move_files(log_files, log_dir) ⇒ Object
-
.process_each_file(log_files, log_dir) ⇒ Object
Processes each log file into a separate JSON profile and logs progress.
- .process_v8_logs(keep_files, output_dir) ⇒ Object
-
.user_confirms_processing(log_files) ⇒ Object
Warns if many files and asks for user confirmation to proceed.
Class Method Details
.delete_files(log_files, log_dir) ⇒ Object
48 49 50 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 48 def self.delete_files(log_files, log_dir) log_files.each { |file| FileUtils.rm(File.join(log_dir, File.basename(file))) } end |
.move_files(log_files, log_dir) ⇒ Object
29 30 31 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 29 def self.move_files(log_files, log_dir) log_files.each { |file| FileUtils.mv(file, log_dir) } end |
.process_each_file(log_files, log_dir) ⇒ Object
Processes each log file into a separate JSON profile and logs progress. Returns the number of files processed.
35 36 37 38 39 40 41 42 43 44 45 46 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 35 def self.process_each_file(log_files, log_dir) total_files = log_files.length log_files.each_with_index do |file, index| filename = File.basename(file, ".log") json_filename = "#{filename}.profile.v8log.json" Dir.chdir(log_dir) do system("node --prof-process --preprocess -j #{File.basename(file)} > #{json_filename}") end puts "Processed file #{index + 1} of #{total_files} (#{((index + 1).to_f / total_files * 100).round(2)}%)" end total_files # Return the number of processed files end |
.process_v8_logs(keep_files, output_dir) ⇒ Object
18 19 20 21 22 23 24 25 26 27 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 18 def self.process_v8_logs(keep_files, output_dir) FileUtils.mkdir_p(output_dir) log_files = Dir.glob("isolate-*.log") return unless user_confirms_processing(log_files) move_files(log_files, output_dir) processed_count = process_each_file(log_files, output_dir) delete_files(log_files, output_dir) unless keep_files puts "#{processed_count} files have been processed." end |
.user_confirms_processing(log_files) ⇒ Object
Warns if many files and asks for user confirmation to proceed.
53 54 55 56 57 58 59 60 61 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 53 def self.user_confirms_processing(log_files) if log_files.count > 100 puts "Warning: There are many log files (#{log_files.count}), this may take some time." puts "Do you want to continue? [y/N]: " response = $stdin.gets.chomp.downcase return response == "y" end true end |