reox 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (5) hide show
  1. checksums.yaml +7 -0
  2. data/lib/reox.rb +48 -0
  3. data/lib/reox_file.rb +2 -0
  4. data/lib/reox_io.rb +28 -0
  5. metadata +45 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 4eef73a1bbf3225ac54d590251698ba6bbac2015d940a77a003ac84b8a51cb73
4
+ data.tar.gz: 6af7b387f76d7daa6ec87e21671897a4c6cf1a4aad3d5054d840a6bd74ded05e
5
+ SHA512:
6
+ metadata.gz: 5a730e6a93bbe51ea74c00ed6bd6f0a14892a34312c9b8883af38c9c26353aae6f27a9b7a6cabb8de62e26daab4bde5bd00806d95e83d7f0f4946dc8ff4deb2a
7
+ data.tar.gz: 86831c0d830e5b9845131ec01a3d0dbef6e969a8ff4efcf6c1e1e05400a192d8d843c34989523b01a82c9c1795ce3e067ffa9987b4521fc87b25c3ecb13bb147
data/lib/reox.rb ADDED
@@ -0,0 +1,48 @@
1
+ require_relative 'reox_io'
2
+ require_relative 'reox_file'
3
+
4
+ class Reox
5
+
6
+ FILE_NAMES = %w(input.log output.log error.log)
7
+
8
+ def self.record
9
+ hijack_streams
10
+ yield
11
+ restore_streams
12
+ end
13
+
14
+
15
+ def self.record!
16
+ hijack_streams
17
+ end
18
+
19
+ def self.stop!
20
+ restore_streams
21
+ end
22
+
23
+
24
+ private
25
+
26
+ def self.hijack_streams
27
+ input_log,output_log,error_log = setup_files
28
+ $stdout = ReoxIO.new(STDOUT,output_log) unless $stdout.is_a? ReoxIO
29
+ $stderr = ReoxIO.new(STDERR,error_log) unless $stderr.is_a? ReoxIO
30
+ end
31
+
32
+ def self.restore_streams
33
+ $stdout = STDOUT if $stdout.is_a? ReoxIO
34
+ $stderr = STDOUT if $stderr.is_a? ReoxIO
35
+ end
36
+
37
+ def self.setup_files
38
+ FILE_NAMES.map do |file_name|
39
+ setup_file(file_name)
40
+ end
41
+ end
42
+
43
+ def self.setup_file(file_name)
44
+ file = ReoxFile.open(File.join(Dir.pwd,file_name),mode: 'a')
45
+ file.sync = true
46
+ file
47
+ end
48
+ end
data/lib/reox_file.rb ADDED
@@ -0,0 +1,2 @@
1
+ class ReoxFile < File
2
+ end
data/lib/reox_io.rb ADDED
@@ -0,0 +1,28 @@
1
+ # Insipired from https://stackoverflow.com/a/6407200
2
+ require_relative 'reox_file'
3
+ class ReoxIO
4
+ $LOG_SEPARATOR = " --> ".freeze
5
+ def initialize(*streams)
6
+ @streams = streams
7
+ @verbose = true
8
+ end
9
+
10
+ def write(*content)
11
+ @streams.each do |stream|
12
+ if @verbose and stream.is_a? ReoxFile and not content.join.strip.empty?
13
+ stream.write([caller[2],$LOG_SEPARATOR,*content].join)
14
+ else
15
+ stream.write(*content)
16
+ end
17
+ end
18
+ end
19
+
20
+ def flush
21
+ @streams.each(&:flush)
22
+ end
23
+
24
+ def close
25
+ @streams.each(&:close)
26
+ end
27
+
28
+ end
metadata ADDED
@@ -0,0 +1,45 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: reox
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Jatin Dhankhar
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2019-04-13 00:00:00.000000000 Z
12
+ dependencies: []
13
+ description: A simple hello world gem
14
+ email: jatin@jatindhankhar.in
15
+ executables: []
16
+ extensions: []
17
+ extra_rdoc_files: []
18
+ files:
19
+ - lib/reox.rb
20
+ - lib/reox_file.rb
21
+ - lib/reox_io.rb
22
+ homepage: http://rubygems.org/gems/reox
23
+ licenses:
24
+ - MIT
25
+ metadata: {}
26
+ post_install_message:
27
+ rdoc_options: []
28
+ require_paths:
29
+ - lib
30
+ required_ruby_version: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: '0'
35
+ required_rubygems_version: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ requirements: []
41
+ rubygems_version: 3.0.3
42
+ signing_key:
43
+ specification_version: 4
44
+ summary: reox - Red Box!
45
+ test_files: []