tapping_device 0.5.7 → 0.6.0

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.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 28a848cfef98c43315488230c1593aba48ef1b3ee91dc7a495a6cee7cb406771
4
- data.tar.gz: 30601c6039343512d3d7c157bd0c8e5645b8005aa37a4b365458018cb477c2d2
3
+ metadata.gz: d8adc4b6842ade7721eafaf72e9b94c8a6a852c1f9f9beebdf2556b20cef6d4a
4
+ data.tar.gz: ab22b319f6468837e92f851f00f863cf732dd3c0cc73e286d5f9569d00c34db6
5
5
  SHA512:
6
- metadata.gz: 2540416f3d4ece8dfb76ee567030d3f4ab9da497c9ae97e9d7418b952d7ce0552453aad33278344ce683dc89a393244d74aef20bc6c6cf9847f0198911999a20
7
- data.tar.gz: b417c4c17f18a152ce0bbc4135657bc41cb90b70788b971debb4242a1d35a9189c21621420af5f5bf06e9aa76148f9a49c6e2fb786000769a193c57765de45d1
6
+ metadata.gz: 992f31b79a3c0a8abc8471ae643f02586cf76d505da493cfe66b37338781251c3dfdba43a158776431c93a342e8b9a02baff78118b71c679aba2f9114c65077c
7
+ data.tar.gz: cad971d539041804a9860225f17ae23754dc46ea6fa5b7dc15d674e5189c081dd4f6f2602eeea9c27e616fb1b959126fe452ef5f641e249d73392782b17a3c2c
@@ -1,6 +1,11 @@
1
1
  name: Ruby
2
2
 
3
- on: [push, pull_request]
3
+ on:
4
+ workflow_dispatch:
5
+ push:
6
+ branches:
7
+ - master
8
+ pull_request:
4
9
 
5
10
  jobs:
6
11
  test:
@@ -8,9 +13,12 @@ jobs:
8
13
  runs-on: ${{ matrix.os }}
9
14
  strategy:
10
15
  matrix:
11
- rails_version: ['5.2', '6']
12
- ruby_version: ['2.5', '2.6']
16
+ rails_version: ['5.2', '6.0.0', '6.1.0']
17
+ ruby_version: ['2.7', '3.0']
13
18
  os: [ubuntu-latest]
19
+ exclude:
20
+ - ruby_version: '3.0'
21
+ rails_version: '5.2'
14
22
  steps:
15
23
  - uses: actions/checkout@v1
16
24
 
@@ -34,7 +42,9 @@ jobs:
34
42
  bundle install --jobs 4 --retry 3
35
43
 
36
44
  - name: Run test with Rails ${{ matrix.rails_version }}
37
- run: bundle exec rake
45
+ env:
46
+ RAILS_VERSION: ${{ matrix.rails_version }}
47
+ run: make test
38
48
 
39
49
  - name: Publish Test Coverage
40
50
  uses: paambaati/codeclimate-action@v2.6.0
data/.gitignore CHANGED
@@ -7,5 +7,7 @@
7
7
  /spec/reports/
8
8
  /tmp/
9
9
 
10
+ Gemfile.lock
11
+
10
12
  # rspec failure tracking
11
13
  .rspec_status
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.6.5
1
+ 3.0.1
data/CHANGELOG.md CHANGED
@@ -1,5 +1,72 @@
1
1
  # Changelog
2
2
 
3
+ ## [Unreleased](https://github.com/st0012/tapping_device/tree/HEAD)
4
+
5
+ [Full Changelog](https://github.com/st0012/tapping_device/compare/v0.5.7...HEAD)
6
+
7
+ **Implemented enhancements:**
8
+
9
+ - Support Ruby 3.0 [\#71](https://github.com/st0012/tapping_device/pull/71) ([st0012](https://github.com/st0012))
10
+
11
+ **Merged pull requests:**
12
+
13
+ - Drop activerecord requirement [\#73](https://github.com/st0012/tapping_device/pull/73) ([st0012](https://github.com/st0012))
14
+ - Improve file-writing tests [\#72](https://github.com/st0012/tapping_device/pull/72) ([st0012](https://github.com/st0012))
15
+ - Simplify output logic with Ruby' Logger class [\#70](https://github.com/st0012/tapping_device/pull/70) ([st0012](https://github.com/st0012))
16
+ - Refactor Payload classes [\#68](https://github.com/st0012/tapping_device/pull/68) ([st0012](https://github.com/st0012))
17
+
18
+ ## [v0.5.7](https://github.com/st0012/tapping_device/tree/v0.5.7) (2020-09-09)
19
+
20
+ [Full Changelog](https://github.com/st0012/tapping_device/compare/v0.5.6...v0.5.7)
21
+
22
+ **Closed issues:**
23
+
24
+ - Support tag option [\#64](https://github.com/st0012/tapping_device/issues/64)
25
+
26
+ **Merged pull requests:**
27
+
28
+ - Use pastel to replace handmade colorizing logic [\#66](https://github.com/st0012/tapping_device/pull/66) ([st0012](https://github.com/st0012))
29
+ - Add tag option [\#65](https://github.com/st0012/tapping_device/pull/65) ([st0012](https://github.com/st0012))
30
+
31
+ ## [v0.5.6](https://github.com/st0012/tapping_device/tree/v0.5.6) (2020-07-17)
32
+
33
+ [Full Changelog](https://github.com/st0012/tapping_device/compare/v0.5.5...v0.5.6)
34
+
35
+ ## [v0.5.5](https://github.com/st0012/tapping_device/tree/v0.5.5) (2020-07-16)
36
+
37
+ [Full Changelog](https://github.com/st0012/tapping_device/compare/v0.5.4...v0.5.5)
38
+
39
+ **Fixed bugs:**
40
+
41
+ - InitializationTracker's logic can cause error [\#60](https://github.com/st0012/tapping_device/issues/60)
42
+
43
+ **Closed issues:**
44
+
45
+ - Refactor get\_method\_from\_object [\#59](https://github.com/st0012/tapping_device/issues/59)
46
+
47
+ **Merged pull requests:**
48
+
49
+ - Fix init tracker [\#61](https://github.com/st0012/tapping_device/pull/61) ([st0012](https://github.com/st0012))
50
+
51
+ ## [v0.5.4](https://github.com/st0012/tapping_device/tree/v0.5.4) (2020-07-05)
52
+
53
+ [Full Changelog](https://github.com/st0012/tapping_device/compare/v0.5.3...v0.5.4)
54
+
55
+ **Closed issues:**
56
+
57
+ - Add with\_print\_calls method [\#52](https://github.com/st0012/tapping_device/issues/52)
58
+ - Tapping any instance of class [\#51](https://github.com/st0012/tapping_device/issues/51)
59
+ - Add ignore\_private option [\#50](https://github.com/st0012/tapping_device/issues/50)
60
+
61
+ **Merged pull requests:**
62
+
63
+ - Restructure README.md [\#58](https://github.com/st0012/tapping_device/pull/58) ([st0012](https://github.com/st0012))
64
+ - Better support on private methods [\#57](https://github.com/st0012/tapping_device/pull/57) ([st0012](https://github.com/st0012))
65
+ - Add with\_\* helpers \(e.g. with\_print\_calls\) [\#56](https://github.com/st0012/tapping_device/pull/56) ([st0012](https://github.com/st0012))
66
+ - Add force\_recording option for debugging [\#55](https://github.com/st0012/tapping_device/pull/55) ([st0012](https://github.com/st0012))
67
+ - Add print\_instance\_\* and write\_instance\_\* helpers [\#54](https://github.com/st0012/tapping_device/pull/54) ([st0012](https://github.com/st0012))
68
+ - Fix tap\_init by adding c\_\* event type [\#53](https://github.com/st0012/tapping_device/pull/53) ([st0012](https://github.com/st0012))
69
+
3
70
  ## [v0.5.3](https://github.com/st0012/tapping_device/tree/v0.5.3) (2020-06-21)
4
71
 
5
72
  [Full Changelog](https://github.com/st0012/tapping_device/compare/v0.5.2...v0.5.3)
data/Gemfile CHANGED
@@ -2,3 +2,14 @@ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in tapping_device.gemspec
4
4
  gemspec
5
+
6
+ rails_version = ENV["RAILS_VERSION"]
7
+ rails_version = "6.1.0" if rails_version.nil?
8
+
9
+ if rails_version.to_f < 6
10
+ gem "sqlite3", "~> 1.3.0"
11
+ else
12
+ gem "sqlite3"
13
+ end
14
+
15
+ gem "activerecord", "~> #{rails_version}"
data/Makefile ADDED
@@ -0,0 +1,3 @@
1
+ test:
2
+ bundle exec rspec
3
+ WITH_ACTIVE_RECORD=true bundle exec rspec spec/active_record_spec.rb
@@ -1,4 +1,3 @@
1
- require "active_record"
2
1
  require "active_support/core_ext/module/introspection"
3
2
  require "pry" # for using Method#source
4
3
 
@@ -141,7 +140,7 @@ class TappingDevice
141
140
  end
142
141
 
143
142
  def build_payload(tp:, filepath:, line_number:)
144
- Payload.init({
143
+ Payload.new(
145
144
  target: @target,
146
145
  receiver: tp.self,
147
146
  method_name: tp.callee_id,
@@ -152,10 +151,10 @@ class TappingDevice
152
151
  line_number: line_number,
153
152
  defined_class: tp.defined_class,
154
153
  trace: get_traces(tp),
155
- is_private_call?: tp.defined_class.private_method_defined?(tp.callee_id),
154
+ is_private_call: tp.defined_class.private_method_defined?(tp.callee_id),
156
155
  tag: options[:tag],
157
156
  tp: tp
158
- })
157
+ )
159
158
  end
160
159
 
161
160
  def get_method_object_from(target, method_name)
@@ -20,10 +20,14 @@ class TappingDevice
20
20
 
21
21
  def is_writer_method?(method_name)
22
22
  has_definition_source?(method_name) && method_name.match?(/\w+=/) && target.method(method_name).source.match?(/attr_writer|attr_accessor/)
23
+ rescue MethodSource::SourceNotFoundError
24
+ false
23
25
  end
24
26
 
25
27
  def is_reader_method?(method_name)
26
28
  has_definition_source?(method_name) && target.method(method_name).source.match?(/attr_reader|attr_accessor/)
29
+ rescue MethodSource::SourceNotFoundError
30
+ false
27
31
  end
28
32
 
29
33
  def has_definition_source?(method_name)
@@ -1,7 +1,6 @@
1
- require "tapping_device/output/payload"
1
+ require "logger"
2
+ require "tapping_device/output/payload_wrapper"
2
3
  require "tapping_device/output/writer"
3
- require "tapping_device/output/stdout_writer"
4
- require "tapping_device/output/file_writer"
5
4
 
6
5
  class TappingDevice
7
6
  module Output
@@ -13,16 +12,16 @@ class TappingDevice
13
12
 
14
13
  module Helpers
15
14
  def and_write(payload_method = nil, options: {}, &block)
16
- and_output(payload_method, options: options, writer_klass: FileWriter, &block)
15
+ and_output(payload_method, options: options, logger: Logger.new(options[:log_file]), &block)
17
16
  end
18
17
 
19
18
  def and_print(payload_method = nil, options: {}, &block)
20
- and_output(payload_method, options: options, writer_klass: StdoutWriter, &block)
19
+ and_output(payload_method, options: options, logger: Logger.new($stdout), &block)
21
20
  end
22
21
 
23
- def and_output(payload_method = nil, options: {}, writer_klass:, &block)
22
+ def and_output(payload_method = nil, options: {}, logger:, &block)
24
23
  output_block = generate_output_block(payload_method, block)
25
- @output_writer = writer_klass.new(options, output_block)
24
+ @output_writer = Writer.new(options: options, output_block: output_block, logger: logger)
26
25
  self
27
26
  end
28
27
 
@@ -2,18 +2,38 @@ require "pastel"
2
2
 
3
3
  class TappingDevice
4
4
  module Output
5
- class Payload < Payload
5
+ class PayloadWrapper
6
6
  UNDEFINED = "[undefined]"
7
7
  PRIVATE_MARK = " (private)"
8
8
 
9
9
  PASTEL = Pastel.new
10
10
  PASTEL.alias_color(:orange, :bright_red, :bright_yellow)
11
11
 
12
+ TappingDevice::Payload::ATTRS.each do |attr|
13
+ define_method attr do |options = {}|
14
+ @payload.send(attr)
15
+ end
16
+ end
17
+
18
+ alias :is_private_call? :is_private_call
19
+
20
+ def method_head
21
+ @payload.method_head
22
+ end
23
+
24
+ def location(options = {})
25
+ @payload.location(options)
26
+ end
27
+
12
28
  alias :raw_arguments :arguments
13
29
  alias :raw_return_value :return_value
14
30
 
31
+ def initialize(payload)
32
+ @payload = payload
33
+ end
34
+
15
35
  def method_name(options = {})
16
- name = ":#{super(options)}"
36
+ name = ":#{@payload.method_name}"
17
37
 
18
38
  name += " [#{tag}]" if tag
19
39
  name += PRIVATE_MARK if is_private_call?
@@ -95,7 +115,7 @@ class TappingDevice
95
115
  end
96
116
 
97
117
  def ivar_changes(options = {})
98
- super.map do |ivar, value_changes|
118
+ @payload.ivar_changes.map do |ivar, value_changes|
99
119
  before = generate_string_result(value_changes[:before], options[:inspect])
100
120
  after = generate_string_result(value_changes[:after], options[:inspect])
101
121
 
@@ -1,19 +1,21 @@
1
1
  class TappingDevice
2
2
  module Output
3
3
  class Writer
4
- def initialize(options, output_block)
4
+ def initialize(options:, output_block:, logger:)
5
5
  @options = options
6
6
  @output_block = output_block
7
+ @logger = logger
7
8
  end
8
9
 
9
10
  def write!(payload)
10
- raise NotImplementedError
11
+ output = generate_output(payload)
12
+ @logger << output
11
13
  end
12
14
 
13
15
  private
14
16
 
15
17
  def generate_output(payload)
16
- @output_block.call(Output::Payload.init(payload), @options)
18
+ @output_block.call(PayloadWrapper.new(payload), @options)
17
19
  end
18
20
  end
19
21
  end
@@ -1,22 +1,32 @@
1
1
  class TappingDevice
2
- class Payload < Hash
2
+ class Payload
3
3
  ATTRS = [
4
4
  :target, :receiver, :method_name, :method_object, :arguments, :return_value, :filepath, :line_number,
5
- :defined_class, :trace, :tag, :tp, :ivar_changes, :is_private_call?
5
+ :defined_class, :trace, :tag, :tp, :ivar_changes, :is_private_call
6
6
  ]
7
7
 
8
- ATTRS.each do |attr|
9
- define_method attr do |options = {}|
10
- self[attr]
11
- end
12
- end
8
+ attr_accessor(*ATTRS)
9
+
10
+ alias :is_private_call? :is_private_call
13
11
 
14
- def self.init(hash)
15
- h = new
16
- hash.each do |k, v|
17
- h[k] = v
18
- end
19
- h
12
+ def initialize(
13
+ target:, receiver:, method_name:, method_object:, arguments:, return_value:, filepath:, line_number:,
14
+ defined_class:, trace:, tag:, tp:, is_private_call:
15
+ )
16
+ @target = target
17
+ @receiver = receiver
18
+ @method_name = method_name
19
+ @method_object = method_object
20
+ @arguments = arguments
21
+ @return_value = return_value
22
+ @filepath = filepath
23
+ @line_number = line_number
24
+ @defined_class = defined_class
25
+ @trace = trace
26
+ @tag = tag
27
+ @tp = tp
28
+ @ivar_changes = {}
29
+ @is_private_call = is_private_call
20
30
  end
21
31
 
22
32
  def method_head
@@ -11,7 +11,7 @@ class TappingDevice
11
11
 
12
12
  def track(object)
13
13
  super
14
- @is_active_record_model = target.ancestors.include?(ActiveRecord::Base)
14
+ @is_active_record_model = defined?(ActiveRecord) && target.ancestors.include?(ActiveRecord::Base)
15
15
  self
16
16
  end
17
17
 
@@ -20,8 +20,8 @@ class TappingDevice
20
20
 
21
21
  return payload if @is_active_record_model
22
22
 
23
- payload[:return_value] = payload[:receiver]
24
- payload[:receiver] = target
23
+ payload.return_value = payload.receiver
24
+ payload.receiver = target
25
25
  payload
26
26
  end
27
27
 
@@ -47,7 +47,7 @@ class TappingDevice
47
47
  payload = super
48
48
 
49
49
  if change_capturing_event?(tp)
50
- payload[:ivar_changes] = capture_ivar_changes
50
+ payload.ivar_changes = capture_ivar_changes
51
51
  end
52
52
 
53
53
  payload
@@ -55,15 +55,14 @@ class TappingDevice
55
55
 
56
56
  def capture_ivar_changes
57
57
  changes = {}
58
-
59
58
  additional_keys = @latest_instance_variables.keys - @instance_variables_snapshot.keys
60
59
  additional_keys.each do |key|
61
- changes[key] = {before: Output::Payload::UNDEFINED, after: @latest_instance_variables[key]}
60
+ changes[key] = {before: Output::PayloadWrapper::UNDEFINED, after: @latest_instance_variables[key]}
62
61
  end
63
62
 
64
63
  removed_keys = @instance_variables_snapshot.keys - @latest_instance_variables.keys
65
64
  removed_keys.each do |key|
66
- changes[key] = {before: @instance_variables_snapshot[key], after: Output::Payload::UNDEFINED}
65
+ changes[key] = {before: @instance_variables_snapshot[key], after: Output::PayloadWrapper::UNDEFINED}
67
66
  end
68
67
 
69
68
  remained_keys = @latest_instance_variables.keys - additional_keys
@@ -1,3 +1,3 @@
1
1
  class TappingDevice
2
- VERSION = "0.5.7"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -26,17 +26,10 @@ Gem::Specification.new do |spec|
26
26
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
27
27
  spec.require_paths = ["lib"]
28
28
 
29
- if ENV["RAILS_VERSION"]
30
- spec.add_dependency "activerecord", "~> #{ENV["RAILS_VERSION"]}"
31
- else
32
- spec.add_dependency "activerecord", ">= 5.2"
33
- end
34
-
35
29
  spec.add_dependency "pry" # for using Method#source in MutationTracker
36
30
  spec.add_dependency "activesupport"
37
31
  spec.add_dependency "pastel"
38
32
 
39
- spec.add_development_dependency "sqlite3", ">= 1.3.6"
40
33
  spec.add_development_dependency "database_cleaner"
41
34
  spec.add_development_dependency "bundler", "~> 2.0"
42
35
  spec.add_development_dependency "rake", "~> 13.0"
metadata CHANGED
@@ -1,29 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tapping_device
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.7
4
+ version: 0.6.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - st0012
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-09-09 00:00:00.000000000 Z
11
+ date: 2021-04-25 00:00:00.000000000 Z
12
12
  dependencies:
13
- - !ruby/object:Gem::Dependency
14
- name: activerecord
15
- requirement: !ruby/object:Gem::Requirement
16
- requirements:
17
- - - ">="
18
- - !ruby/object:Gem::Version
19
- version: '5.2'
20
- type: :runtime
21
- prerelease: false
22
- version_requirements: !ruby/object:Gem::Requirement
23
- requirements:
24
- - - ">="
25
- - !ruby/object:Gem::Version
26
- version: '5.2'
27
13
  - !ruby/object:Gem::Dependency
28
14
  name: pry
29
15
  requirement: !ruby/object:Gem::Requirement
@@ -66,20 +52,6 @@ dependencies:
66
52
  - - ">="
67
53
  - !ruby/object:Gem::Version
68
54
  version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: sqlite3
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: 1.3.6
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: 1.3.6
83
55
  - !ruby/object:Gem::Dependency
84
56
  name: database_cleaner
85
57
  requirement: !ruby/object:Gem::Requirement
@@ -168,8 +140,8 @@ files:
168
140
  - CHANGELOG.md
169
141
  - CODE_OF_CONDUCT.md
170
142
  - Gemfile
171
- - Gemfile.lock
172
143
  - LICENSE.txt
144
+ - Makefile
173
145
  - README.md
174
146
  - Rakefile
175
147
  - bin/console
@@ -184,9 +156,7 @@ files:
184
156
  - lib/tapping_device/manageable.rb
185
157
  - lib/tapping_device/method_hijacker.rb
186
158
  - lib/tapping_device/output.rb
187
- - lib/tapping_device/output/file_writer.rb
188
- - lib/tapping_device/output/payload.rb
189
- - lib/tapping_device/output/stdout_writer.rb
159
+ - lib/tapping_device/output/payload_wrapper.rb
190
160
  - lib/tapping_device/output/writer.rb
191
161
  - lib/tapping_device/payload.rb
192
162
  - lib/tapping_device/trackable.rb
@@ -219,7 +189,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
219
189
  - !ruby/object:Gem::Version
220
190
  version: '0'
221
191
  requirements: []
222
- rubygems_version: 3.0.3
192
+ rubygems_version: 3.2.15
223
193
  signing_key:
224
194
  specification_version: 4
225
195
  summary: tapping_device lets you understand what your Ruby objects do without digging
data/Gemfile.lock DELETED
@@ -1,78 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- tapping_device (0.5.7)
5
- activerecord (>= 5.2)
6
- activesupport
7
- pastel
8
- pry
9
-
10
- GEM
11
- remote: https://rubygems.org/
12
- specs:
13
- activemodel (6.0.3.2)
14
- activesupport (= 6.0.3.2)
15
- activerecord (6.0.3.2)
16
- activemodel (= 6.0.3.2)
17
- activesupport (= 6.0.3.2)
18
- activesupport (6.0.3.2)
19
- concurrent-ruby (~> 1.0, >= 1.0.2)
20
- i18n (>= 0.7, < 2)
21
- minitest (~> 5.1)
22
- tzinfo (~> 1.1)
23
- zeitwerk (~> 2.2, >= 2.2.2)
24
- coderay (1.1.3)
25
- concurrent-ruby (1.1.7)
26
- database_cleaner (1.7.0)
27
- diff-lcs (1.3)
28
- docile (1.3.2)
29
- i18n (1.8.5)
30
- concurrent-ruby (~> 1.0)
31
- json (2.3.0)
32
- method_source (1.0.0)
33
- minitest (5.14.2)
34
- pastel (0.8.0)
35
- tty-color (~> 0.5)
36
- pry (0.13.1)
37
- coderay (~> 1.1)
38
- method_source (~> 1.0)
39
- rake (13.0.1)
40
- rspec (3.8.0)
41
- rspec-core (~> 3.8.0)
42
- rspec-expectations (~> 3.8.0)
43
- rspec-mocks (~> 3.8.0)
44
- rspec-core (3.8.2)
45
- rspec-support (~> 3.8.0)
46
- rspec-expectations (3.8.4)
47
- diff-lcs (>= 1.2.0, < 2.0)
48
- rspec-support (~> 3.8.0)
49
- rspec-mocks (3.8.1)
50
- diff-lcs (>= 1.2.0, < 2.0)
51
- rspec-support (~> 3.8.0)
52
- rspec-support (3.8.2)
53
- simplecov (0.17.1)
54
- docile (~> 1.1)
55
- json (>= 1.8, < 3)
56
- simplecov-html (~> 0.10.0)
57
- simplecov-html (0.10.2)
58
- sqlite3 (1.4.1)
59
- thread_safe (0.3.6)
60
- tty-color (0.5.2)
61
- tzinfo (1.2.7)
62
- thread_safe (~> 0.1)
63
- zeitwerk (2.4.0)
64
-
65
- PLATFORMS
66
- ruby
67
-
68
- DEPENDENCIES
69
- bundler (~> 2.0)
70
- database_cleaner
71
- rake (~> 13.0)
72
- rspec (~> 3.0)
73
- simplecov (= 0.17.1)
74
- sqlite3 (>= 1.3.6)
75
- tapping_device!
76
-
77
- BUNDLED WITH
78
- 2.1.1
@@ -1,21 +0,0 @@
1
- class TappingDevice
2
- module Output
3
- class FileWriter < Writer
4
- def initialize(options, output_block)
5
- @path = options[:log_file]
6
-
7
- File.write(@path, "") # clean file
8
-
9
- super
10
- end
11
-
12
- def write!(payload)
13
- output = generate_output(payload)
14
-
15
- File.open(@path, "a") do |f|
16
- f << output
17
- end
18
- end
19
- end
20
- end
21
- end
@@ -1,9 +0,0 @@
1
- class TappingDevice
2
- module Output
3
- class StdoutWriter < Writer
4
- def write!(payload)
5
- puts(generate_output(payload))
6
- end
7
- end
8
- end
9
- end