ruby_inspector 0.1.0 → 0.2.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 +4 -4
- data/.travis.yml +2 -0
- data/Gemfile +1 -1
- data/History.md +8 -0
- data/README.md +13 -5
- data/Rakefile +5 -0
- data/bin/console +3 -3
- data/lib/nsa/net_http_tracker.rb +3 -3
- data/lib/ruby_inspector.rb +40 -17
- data/lib/ruby_inspector/dev_tools_request_tracker.rb +7 -7
- data/lib/ruby_inspector/version.rb +1 -1
- data/readme/demo.gif +0 -0
- data/ruby_inspector.gemspec +1 -1
- metadata +6 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 670502b3bdc8ae5edb3e41ef19b8805968ff8d16
|
4
|
+
data.tar.gz: c48ecf4cc661be9eb3573281f8f8f49dd46f86df
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 364f57553733876bf6c734561a35393aa0b333639987255115298b0c7da05dc958be6e9e1141874080716d115579f1293f0ca76db1c803760f65815f0d19dc41
|
7
|
+
data.tar.gz: 276838235ea7b152b870b2b94306487e42ed8421aeac07daebbc4a0f2a272b513351611670b2ada9fd69554a4261d060c8a78f4aa9590cf27e82242b8fd7e579
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/History.md
ADDED
data/README.md
CHANGED
@@ -1,15 +1,23 @@
|
|
1
|
-
#
|
1
|
+
# RubyInspector 
|
2
2
|
|
3
3
|
Allows for ruby apps to be debugged using the standard chrome developer tools
|
4
4
|
|
5
|
+
# Demo
|
6
|
+
|
7
|
+

|
8
|
+
|
9
|
+
See [RubyInspector demos](https://github.com/gingermusketeer/ruby_inspector_demos) for more examples
|
10
|
+
|
5
11
|
# Getting started
|
6
12
|
|
7
13
|
1. Get a copy of [chrome devtools app](https://github.com/auchenberg/chrome-devtools-app)
|
8
14
|
2. Setup and start [ruby_inspector_server](https://github.com/gingermusketeer/ruby_inspector_server)
|
9
|
-
3.
|
10
|
-
4.
|
11
|
-
5.
|
12
|
-
6.
|
15
|
+
3. Add `gem 'ruby_inspector'` to your gem file
|
16
|
+
4. Add `RubyInspector.enable("MyAppName", "Optional description")` to enable monitoring
|
17
|
+
5. Add a breakpoint before the network requests are made
|
18
|
+
6. Connect the devtools app to your app. apps -> Go
|
19
|
+
7. Unleash the app from the breakpoint
|
20
|
+
8. Monitor http traffic
|
13
21
|
|
14
22
|
|
15
23
|
# Todo
|
data/Rakefile
CHANGED
data/bin/console
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
|
3
|
-
require
|
4
|
-
require
|
3
|
+
require "bundler/setup"
|
4
|
+
require "ruby_inspector"
|
5
5
|
|
6
6
|
# You can add fixtures and/or initialization code here to make experimenting
|
7
7
|
# with your gem easier. You can also use a different console, if you like.
|
@@ -10,5 +10,5 @@ require 'ruby_inspector'
|
|
10
10
|
# require 'pry'
|
11
11
|
# Pry.start
|
12
12
|
|
13
|
-
require
|
13
|
+
require "irb"
|
14
14
|
IRB.start
|
data/lib/nsa/net_http_tracker.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "net/http"
|
2
2
|
|
3
3
|
module Nsa
|
4
4
|
class NetHttpTracker
|
@@ -68,14 +68,14 @@ module Net
|
|
68
68
|
|
69
69
|
def request(req, request_body = nil, &block)
|
70
70
|
return orig_request(req, request_body, &block) unless started?
|
71
|
-
protocol = use_ssl? ?
|
71
|
+
protocol = use_ssl? ? "https" : "http"
|
72
72
|
request_headers = Hash[req.each_header.to_a]
|
73
73
|
request_tracker = ::Nsa::NetHttpTracker.new(
|
74
74
|
protocol, @address, @port, req.path, req.method, request_headers,
|
75
75
|
request_body || req.body
|
76
76
|
)
|
77
77
|
|
78
|
-
response_body =
|
78
|
+
response_body = ""
|
79
79
|
block_provided = block_given?
|
80
80
|
response = orig_request(req, request_body) do |resp|
|
81
81
|
resp.read_body { |str| response_body << str }
|
data/lib/ruby_inspector.rb
CHANGED
@@ -1,43 +1,66 @@
|
|
1
|
-
require
|
2
|
-
|
3
|
-
|
4
|
-
require_relative
|
5
|
-
require_relative './ruby_inspector/dev_tools_request_tracker'
|
1
|
+
require "ruby_inspector/version"
|
2
|
+
require "json"
|
3
|
+
require_relative "./nsa/net_http_tracker"
|
4
|
+
require_relative "./ruby_inspector/dev_tools_request_tracker"
|
6
5
|
|
7
6
|
module RubyInspector
|
8
7
|
DELIMITER = "\0"
|
9
8
|
class << self
|
10
|
-
def enable(app_name, description
|
11
|
-
|
12
|
-
|
9
|
+
def enable(app_name, description)
|
10
|
+
@app_name = app_name
|
11
|
+
@description = description
|
12
|
+
|
13
|
+
begin
|
14
|
+
send_init_info
|
15
|
+
rescue Errno::ECONNREFUSED
|
16
|
+
puts "[RubyInspector] Unable to send initialization info during setup"
|
17
|
+
end
|
13
18
|
|
14
19
|
::Nsa::NetHttpTracker.on_request do |net_http_request_tracker|
|
15
20
|
DevToolsRequestTracker.new(net_http_request_tracker)
|
16
21
|
end
|
17
22
|
end
|
18
23
|
|
24
|
+
def disable
|
25
|
+
@socket = nil
|
26
|
+
@initialized = nil
|
27
|
+
end
|
28
|
+
|
19
29
|
def send_info(data)
|
20
|
-
|
21
|
-
|
22
|
-
|
30
|
+
send_init_info unless initialized?
|
31
|
+
send_socket_msg(data)
|
32
|
+
rescue Errno::ECONNREFUSED
|
33
|
+
puts "[RubyInspector] Unable to send data: #{data}"
|
23
34
|
end
|
24
35
|
|
25
36
|
private
|
26
37
|
|
27
|
-
attr_accessor :
|
28
|
-
|
29
|
-
|
38
|
+
attr_accessor :app_name, :description
|
39
|
+
|
40
|
+
def initialized?
|
41
|
+
@initialized
|
42
|
+
end
|
43
|
+
|
44
|
+
def socket
|
45
|
+
@socket ||= TCPSocket.new("localhost", 8124)
|
46
|
+
end
|
47
|
+
|
48
|
+
def send_socket_msg(data)
|
49
|
+
socket.puts(
|
50
|
+
::JSON.generate(data) + DELIMITER
|
51
|
+
)
|
30
52
|
end
|
31
53
|
|
32
|
-
def send_init_info
|
33
|
-
|
34
|
-
method:
|
54
|
+
def send_init_info
|
55
|
+
send_socket_msg(
|
56
|
+
method: "RubyInspector.initialize",
|
35
57
|
params: {
|
36
58
|
name: app_name,
|
37
59
|
type: :ruby,
|
38
60
|
description: description
|
39
61
|
}
|
40
62
|
)
|
63
|
+
@initialized = true
|
41
64
|
end
|
42
65
|
end
|
43
66
|
end
|
@@ -17,7 +17,7 @@ module RubyInspector
|
|
17
17
|
|
18
18
|
def notify_request_started
|
19
19
|
RubyInspector.send_info(
|
20
|
-
method:
|
20
|
+
method: "Network.requestWillBeSent",
|
21
21
|
params: {
|
22
22
|
requestId: request_id,
|
23
23
|
request: {
|
@@ -27,24 +27,24 @@ module RubyInspector
|
|
27
27
|
postData: request_tracker.request_body
|
28
28
|
},
|
29
29
|
timestamp: Time.now.to_f,
|
30
|
-
type:
|
30
|
+
type: "Other"
|
31
31
|
}
|
32
32
|
)
|
33
33
|
end
|
34
34
|
|
35
35
|
def notify_response_received
|
36
36
|
RubyInspector.send_info(
|
37
|
-
method:
|
37
|
+
method: "Network.responseReceived",
|
38
38
|
params: {
|
39
39
|
requestId: request_id,
|
40
40
|
timestamp: Time.now.to_f,
|
41
|
-
type:
|
41
|
+
type: "Document",
|
42
42
|
response: {
|
43
43
|
url: request_tracker.url,
|
44
44
|
status: request_tracker.status_code,
|
45
45
|
statusText: request_tracker.status_message,
|
46
46
|
headers: request_tracker.response_headers,
|
47
|
-
mimeType:
|
47
|
+
mimeType: "text/html",
|
48
48
|
requestHeaders: request_tracker.request_headers,
|
49
49
|
remotePort: request_tracker.port
|
50
50
|
}
|
@@ -54,7 +54,7 @@ module RubyInspector
|
|
54
54
|
|
55
55
|
def notify_body_received
|
56
56
|
RubyInspector.send_info(
|
57
|
-
method:
|
57
|
+
method: "RubyInspector.network.cacheBody",
|
58
58
|
params: { requestId: request_id },
|
59
59
|
result: {
|
60
60
|
body: request_tracker.response_body,
|
@@ -63,7 +63,7 @@ module RubyInspector
|
|
63
63
|
)
|
64
64
|
|
65
65
|
RubyInspector.send_info(
|
66
|
-
method:
|
66
|
+
method: "Network.loadingFinished",
|
67
67
|
params: {
|
68
68
|
requestId: request_id,
|
69
69
|
timestamp: Time.now.to_f,
|
data/readme/demo.gif
ADDED
Binary file
|
data/ruby_inspector.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
spec.executables = spec.files.grep(/^exe\//) { |f| File.basename(f) }
|
21
21
|
spec.require_paths = ['lib']
|
22
22
|
|
23
|
-
spec.add_development_dependency 'bundler', '~> 1.
|
23
|
+
spec.add_development_dependency 'bundler', '~> 1.7'
|
24
24
|
spec.add_development_dependency 'rake', '~> 10.0'
|
25
25
|
spec.add_development_dependency 'rspec', '~> 3.2'
|
26
26
|
spec.add_development_dependency 'rack', '~> 1.6'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ruby_inspector
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Max Brosnahan
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-02-
|
11
|
+
date: 2015-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - ~>
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '1.
|
19
|
+
version: '1.7'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ~>
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '1.
|
26
|
+
version: '1.7'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -92,6 +92,7 @@ files:
|
|
92
92
|
- .travis.yml
|
93
93
|
- CODE_OF_CONDUCT.md
|
94
94
|
- Gemfile
|
95
|
+
- History.md
|
95
96
|
- LICENSE.txt
|
96
97
|
- README.md
|
97
98
|
- Rakefile
|
@@ -101,6 +102,7 @@ files:
|
|
101
102
|
- lib/ruby_inspector.rb
|
102
103
|
- lib/ruby_inspector/dev_tools_request_tracker.rb
|
103
104
|
- lib/ruby_inspector/version.rb
|
105
|
+
- readme/demo.gif
|
104
106
|
- ruby_inspector.gemspec
|
105
107
|
homepage: https://github.com/gingermusketeer/ruby_inspector
|
106
108
|
licenses:
|