Class: FileSystem
- Inherits:
-
Object
- Object
- FileSystem
- Defined in:
- lib/jirametrics/file_system.rb
Instance Attribute Summary collapse
-
#logfile ⇒ Object
Returns the value of attribute logfile.
-
#logfile_name ⇒ Object
Returns the value of attribute logfile_name.
Instance Method Summary collapse
-
#compress(node) ⇒ Object
In some Jira instances, a sizeable portion of the JSON is made up of empty fields.
- #deprecated(message:, date:, depth: 2) ⇒ Object
- #file_exist?(filename) ⇒ Boolean
- #foreach(root, &block) ⇒ Object
-
#load(filename, supress_deprecation: false) ⇒ Object
Effectively the same as File.read except it forces the encoding to UTF-8.
- #load_json(filename, fail_on_error: true) ⇒ Object
- #log(message, more: nil, also_write_to_stderr: false) ⇒ Object
- #save_file(content:, filename:) ⇒ Object
- #save_json(json:, filename:) ⇒ Object
- #warning(message, more: nil) ⇒ Object
Instance Attribute Details
#logfile ⇒ Object
Returns the value of attribute logfile.
6 7 8 |
# File 'lib/jirametrics/file_system.rb', line 6 def logfile @logfile end |
#logfile_name ⇒ Object
Returns the value of attribute logfile_name.
6 7 8 |
# File 'lib/jirametrics/file_system.rb', line 6 def logfile_name @logfile_name end |
Instance Method Details
#compress(node) ⇒ Object
In some Jira instances, a sizeable portion of the JSON is made up of empty fields. I’ve seen cases where this simple compression will drop the filesize by half.
50 51 52 53 54 55 56 57 58 |
# File 'lib/jirametrics/file_system.rb', line 50 def compress node if node.is_a? Hash node.reject! { |_key, value| value.nil? || (value.is_a?(Array) && value.empty?) } node.each_value { |value| compress value } elsif node.is_a? Array node.each { |a| compress a } end node end |
#deprecated(message:, date:, depth: 2) ⇒ Object
68 69 70 71 72 73 74 75 76 |
# File 'lib/jirametrics/file_system.rb', line 68 def deprecated message:, date:, depth: 2 text = +'' text << "Deprecated(#{date}): " text << caller(1..depth).each do |line| text << "\n-> Called from #{line}" end log text, also_write_to_stderr: true end |
#file_exist?(filename) ⇒ Boolean
64 65 66 |
# File 'lib/jirametrics/file_system.rb', line 64 def file_exist? filename File.exist? filename end |
#foreach(root, &block) ⇒ Object
60 61 62 |
# File 'lib/jirametrics/file_system.rb', line 60 def foreach root, &block Dir.foreach root, &block end |
#load(filename, supress_deprecation: false) ⇒ Object
Effectively the same as File.read except it forces the encoding to UTF-8
9 10 11 12 13 14 15 |
# File 'lib/jirametrics/file_system.rb', line 9 def load filename, supress_deprecation: false if filename.end_with?('.json') && !supress_deprecation deprecated(message: 'call load_json instead', date: '2024-11-13') end File.read filename, encoding: 'UTF-8' end |
#load_json(filename, fail_on_error: true) ⇒ Object
17 18 19 20 21 |
# File 'lib/jirametrics/file_system.rb', line 17 def load_json filename, fail_on_error: true return nil if fail_on_error == false && File.exist?(filename) == false JSON.parse load(filename, supress_deprecation: true) end |
#log(message, more: nil, also_write_to_stderr: false) ⇒ Object
38 39 40 41 42 43 44 45 46 |
# File 'lib/jirametrics/file_system.rb', line 38 def log , more: nil, also_write_to_stderr: false += " See #{logfile_name} for more details about this message." if more logfile.puts logfile.puts more if more return unless also_write_to_stderr $stderr.puts # rubocop:disable Style/StderrPuts end |
#save_file(content:, filename:) ⇒ Object
27 28 29 30 31 32 |
# File 'lib/jirametrics/file_system.rb', line 27 def save_file content:, filename: file_path = File.dirname(filename) FileUtils.mkdir_p file_path unless File.exist?(file_path) File.write(filename, content) end |
#save_json(json:, filename:) ⇒ Object
23 24 25 |
# File 'lib/jirametrics/file_system.rb', line 23 def save_json json:, filename: save_file content: JSON.pretty_generate(compress json), filename: filename end |
#warning(message, more: nil) ⇒ Object
34 35 36 |
# File 'lib/jirametrics/file_system.rb', line 34 def warning , more: nil log "Warning: #{}", more: more, also_write_to_stderr: true end |