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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 9cc62aa2145cbcc7a866417af8336e4938191bde
4
- data.tar.gz: 9140911db39e45b9b73bbb59f8ae8fcf008590b2
3
+ metadata.gz: 670502b3bdc8ae5edb3e41ef19b8805968ff8d16
4
+ data.tar.gz: c48ecf4cc661be9eb3573281f8f8f49dd46f86df
5
5
  SHA512:
6
- metadata.gz: 6c45ff6e7d390b47ada436aa0a21e6db621fee5efa6b221d264a7d9a7ade3e33cd7c09af0573967280e353b0bdd1bb7b5466eb2d4e1e8d86554b5576534ec774
7
- data.tar.gz: fdf89ce39c7efa9c11ced6fabf6b8cc2a5a5e99855c07c092c4ab008d048122da39f4bd2a01c196032e08e87c7e031dd11efa9e957b9ac846ff30d387d6d9766
6
+ metadata.gz: 364f57553733876bf6c734561a35393aa0b333639987255115298b0c7da05dc958be6e9e1141874080716d115579f1293f0ca76db1c803760f65815f0d19dc41
7
+ data.tar.gz: 276838235ea7b152b870b2b94306487e42ed8421aeac07daebbc4a0f2a272b513351611670b2ada9fd69554a4261d060c8a78f4aa9590cf27e82242b8fd7e579
@@ -1,3 +1,5 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 2.0.0
4
+ - 2.1.5
5
+ - 2.2.0
data/Gemfile CHANGED
@@ -1,4 +1,4 @@
1
- source 'https://rubygems.org'
1
+ source "https://rubygems.org"
2
2
 
3
3
  # Specify your gem's dependencies in ruby_inspector.gemspec
4
4
  gemspec
@@ -0,0 +1,8 @@
1
+
2
+ 0.2.0 / 2015-02-28
3
+ ==================
4
+ * Improve code style consistency
5
+ * Handle socket not being able to connect initially
6
+ * Improve test coverage
7
+ * Add travis-ci integration (2.0.0, 2.1.5, 2.2.0)
8
+ * Tweak readme
data/README.md CHANGED
@@ -1,15 +1,23 @@
1
- # Ruby Inspector
1
+ # RubyInspector ![](https://travis-ci.org/gingermusketeer/ruby_inspector.svg?branch=master)
2
2
 
3
3
  Allows for ruby apps to be debugged using the standard chrome developer tools
4
4
 
5
+ # Demo
6
+
7
+ ![RubyInspector demo gif](https://raw.githubusercontent.com/gingermusketeer/ruby_inspector/master/readme/demo.gif)
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. Run `ruby demo.rb`
10
- 4. Connect the devtools app to your app. apps -> Go
11
- 5. Unleash the app from the breakpoint
12
- 6. Monitor http traffic
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
@@ -1 +1,6 @@
1
1
  require 'bundler/gem_tasks'
2
+ require 'rspec/core/rake_task'
3
+
4
+ RSpec::Core::RakeTask.new(:spec)
5
+
6
+ task :default => :spec
@@ -1,7 +1,7 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- require 'bundler/setup'
4
- require 'ruby_inspector'
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 'irb'
13
+ require "irb"
14
14
  IRB.start
@@ -1,4 +1,4 @@
1
- require 'net/http'
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? ? 'https' : 'http'
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 }
@@ -1,43 +1,66 @@
1
- require 'ruby_inspector/version'
2
-
3
- require 'json'
4
- require_relative './nsa/net_http_tracker'
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
- connect
12
- send_init_info(app_name, description)
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
- socket.puts(
21
- ::JSON.generate(data) + DELIMITER
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 :socket
28
- def connect
29
- @socket = TCPSocket.new('localhost', 8124)
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(app_name, description)
33
- send_info(
34
- method: 'RubyInspector.initialize',
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: 'Network.requestWillBeSent',
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: 'Other'
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: 'Network.responseReceived',
37
+ method: "Network.responseReceived",
38
38
  params: {
39
39
  requestId: request_id,
40
40
  timestamp: Time.now.to_f,
41
- type: 'Document',
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: 'text/html',
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: 'RubyInspector.network.cacheBody',
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: 'Network.loadingFinished',
66
+ method: "Network.loadingFinished",
67
67
  params: {
68
68
  requestId: request_id,
69
69
  timestamp: Time.now.to_f,
@@ -1,3 +1,3 @@
1
1
  module RubyInspector
2
- VERSION = '0.1.0'
2
+ VERSION = "0.2.0"
3
3
  end
Binary file
@@ -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.8'
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.1.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-21 00:00:00.000000000 Z
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.8'
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.8'
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: