ruby_inspector 0.1.0 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
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: