Class: FileSystem
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.
- #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, also_write_to_stderr: false) ⇒ Object
- #save_file(content:, filename:) ⇒ Object
- #save_json(json:, filename:) ⇒ 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.
41 42 43 44 45 46 47 48 49 |
# File 'lib/jirametrics/file_system.rb', line 41 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 |
#foreach(root, &block) ⇒ Object
51 52 53 |
# File 'lib/jirametrics/file_system.rb', line 51 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, also_write_to_stderr: false) ⇒ Object
34 35 36 37 |
# File 'lib/jirametrics/file_system.rb', line 34 def log , also_write_to_stderr: false logfile.puts $stderr.puts if also_write_to_stderr # 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 |