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
35 36 37 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 35 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
16 17 18 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 16 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.
22 23 24 25 26 27 28 29 30 31 32 33 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 22 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
5 6 7 8 9 10 11 12 13 14 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 5 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.
40 41 42 43 44 45 46 47 48 |
# File 'lib/react_on_rails_pro/v8_log_processor.rb', line 40 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 |