ddollar-rack-debug 1.0.2 → 1.1.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.
- data/.gitignore +2 -0
- data/README.rdoc +1 -0
- data/Rakefile +49 -0
- data/VERSION +1 -0
- data/ext/debugger.rb +89 -0
- data/init.rb +0 -0
- data/lib/rack/debug.rb +7 -0
- data/rack-debug.gemspec +54 -0
- data/tasks/rack-debug.rake +17 -0
- metadata +37 -12
data/.gitignore
ADDED
data/README.rdoc
CHANGED
data/Rakefile
ADDED
@@ -0,0 +1,49 @@
|
|
1
|
+
require 'rubygems'
|
2
|
+
require 'rake'
|
3
|
+
|
4
|
+
begin
|
5
|
+
require 'jeweler'
|
6
|
+
Jeweler::Tasks.new do |gem|
|
7
|
+
gem.name = "rack-debug"
|
8
|
+
gem.summary = %Q{Rack::Debug adds a middlerware interface to ruby-debug}
|
9
|
+
gem.description = <<-DESCRIPTION
|
10
|
+
|
11
|
+
Rack::Debug adds a middlerware interface to ruby-debug
|
12
|
+
http://github.com/github/rack-debug
|
13
|
+
|
14
|
+
DESCRIPTION
|
15
|
+
gem.email = "<ddollar@gmail.com>"
|
16
|
+
gem.homepage = "http://github.com/ddollar/rack-debug"
|
17
|
+
gem.authors = ["David Dollar"]
|
18
|
+
gem.add_dependency 'rake', '>= 1.0'
|
19
|
+
gem.add_dependency 'rake', '>= 1.0'
|
20
|
+
end
|
21
|
+
Jeweler::GemcutterTasks.new
|
22
|
+
rescue LoadError
|
23
|
+
puts "Jeweler (or a dependency) not available. Install it with: sudo gem install jeweler"
|
24
|
+
end
|
25
|
+
|
26
|
+
require 'spec/rake/spectask'
|
27
|
+
Spec::Rake::SpecTask.new(:spec) do |spec|
|
28
|
+
spec.libs << 'lib' << 'spec'
|
29
|
+
spec.spec_files = FileList['spec/**/*_spec.rb']
|
30
|
+
end
|
31
|
+
|
32
|
+
Spec::Rake::SpecTask.new(:rcov) do |spec|
|
33
|
+
spec.libs << 'lib' << 'spec'
|
34
|
+
spec.pattern = 'spec/**/*_spec.rb'
|
35
|
+
spec.rcov = true
|
36
|
+
end
|
37
|
+
|
38
|
+
task :spec => :check_dependencies
|
39
|
+
|
40
|
+
task :default => :spec
|
41
|
+
|
42
|
+
begin
|
43
|
+
require 'yard'
|
44
|
+
YARD::Rake::YardocTask.new
|
45
|
+
rescue LoadError
|
46
|
+
task :yardoc do
|
47
|
+
abort "YARD is not available. In order to run yardoc, you must: sudo gem install yard"
|
48
|
+
end
|
49
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
1.1.0
|
data/ext/debugger.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
require 'ruby-debug'
|
2
|
+
require 'socket'
|
3
|
+
require 'thread'
|
4
|
+
require 'fileutils'
|
5
|
+
|
6
|
+
module Debugger
|
7
|
+
SOCKET_PATH = File.join(Rails.root, 'tmp', 'sockets', 'debugger')
|
8
|
+
|
9
|
+
class << self
|
10
|
+
def start_unix_socket_remote(socket_path=SOCKET_PATH, post_mortem = false)
|
11
|
+
return if @thread
|
12
|
+
return if started?
|
13
|
+
|
14
|
+
self.interface = nil
|
15
|
+
start
|
16
|
+
self.post_mortem if post_mortem
|
17
|
+
|
18
|
+
FileUtils.mkdir_p(File.dirname(socket_path))
|
19
|
+
|
20
|
+
server_path = "#{socket_path}.server"
|
21
|
+
control_path = "#{socket_path}.control"
|
22
|
+
|
23
|
+
start_unix_socket_control(control_path)
|
24
|
+
|
25
|
+
yield if block_given?
|
26
|
+
|
27
|
+
mutex = Mutex.new
|
28
|
+
proceed = ConditionVariable.new
|
29
|
+
|
30
|
+
File.unlink(server_path) if File.exists?(server_path)
|
31
|
+
@thread = DebugThread.new do
|
32
|
+
server = UNIXServer.open(server_path)
|
33
|
+
while (session = server.accept)
|
34
|
+
self.interface = RemoteInterface.new(session)
|
35
|
+
if wait_connection
|
36
|
+
mutex.synchronize do
|
37
|
+
proceed.signal
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
if wait_connection
|
43
|
+
mutex.synchronize do
|
44
|
+
proceed.wait(mutex)
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
alias_method :start_unix_socket_server, :start_unix_socket_remote
|
49
|
+
|
50
|
+
def start_unix_socket_control(socket_path=SOCKET_PATH) # :nodoc:
|
51
|
+
raise "Debugger is not started" unless started?
|
52
|
+
return if defined?(@control_thread) && @control_thread
|
53
|
+
File.unlink(socket_path) if File.exists?(socket_path)
|
54
|
+
@control_thread = DebugThread.new do
|
55
|
+
server = UNIXServer.open(socket_path)
|
56
|
+
while (session = server.accept)
|
57
|
+
interface = RemoteInterface.new(session)
|
58
|
+
processor = ControlCommandProcessor.new(interface)
|
59
|
+
processor.process_commands
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def start_unix_socket_client(socket_path=SOCKET_PATH)
|
65
|
+
require "socket"
|
66
|
+
interface = Debugger::LocalInterface.new
|
67
|
+
socket = UNIXSocket.new(socket_path + '.server')
|
68
|
+
puts "Connected."
|
69
|
+
|
70
|
+
catch(:exit) do
|
71
|
+
while (line = socket.gets)
|
72
|
+
case line
|
73
|
+
when /^PROMPT (.*)$/
|
74
|
+
input = interface.read_command($1)
|
75
|
+
throw :exit unless input
|
76
|
+
socket.puts input
|
77
|
+
when /^CONFIRM (.*)$/
|
78
|
+
input = interface.confirm($1)
|
79
|
+
throw :exit unless input
|
80
|
+
socket.puts input
|
81
|
+
else
|
82
|
+
print line
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
socket.close
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
data/init.rb
ADDED
File without changes
|
data/lib/rack/debug.rb
CHANGED
@@ -7,6 +7,7 @@ class Rack::Debug
|
|
7
7
|
attr_reader :app
|
8
8
|
|
9
9
|
def initialize(app, options={})
|
10
|
+
extend_ruby_debug!
|
10
11
|
@app = app
|
11
12
|
end
|
12
13
|
|
@@ -16,4 +17,10 @@ class Rack::Debug
|
|
16
17
|
app.call(env)
|
17
18
|
end
|
18
19
|
|
20
|
+
private ######################################################################
|
21
|
+
|
22
|
+
def extend_ruby_debug!
|
23
|
+
require File.join(File.dirname(__FILE__), '..', '..', 'ext', 'debugger')
|
24
|
+
end
|
25
|
+
|
19
26
|
end
|
data/rack-debug.gemspec
ADDED
@@ -0,0 +1,54 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{rack-debug}
|
8
|
+
s.version = "1.1.0"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["David Dollar"]
|
12
|
+
s.date = %q{2009-08-31}
|
13
|
+
s.description = %q{
|
14
|
+
Rack::Debug adds a middlerware interface to ruby-debug
|
15
|
+
http://github.com/github/rack-debug
|
16
|
+
|
17
|
+
}
|
18
|
+
s.email = %q{<ddollar@gmail.com>}
|
19
|
+
s.extra_rdoc_files = [
|
20
|
+
"README.rdoc"
|
21
|
+
]
|
22
|
+
s.files = [
|
23
|
+
".gitignore",
|
24
|
+
"README.rdoc",
|
25
|
+
"Rakefile",
|
26
|
+
"VERSION",
|
27
|
+
"ext/debugger.rb",
|
28
|
+
"init.rb",
|
29
|
+
"lib/rack/debug.rb",
|
30
|
+
"rack-debug.gemspec",
|
31
|
+
"tasks/rack-debug.rake"
|
32
|
+
]
|
33
|
+
s.homepage = %q{http://github.com/ddollar/rack-debug}
|
34
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
35
|
+
s.require_paths = ["lib"]
|
36
|
+
s.rubygems_version = %q{1.3.5}
|
37
|
+
s.summary = %q{Rack::Debug adds a middlerware interface to ruby-debug}
|
38
|
+
|
39
|
+
if s.respond_to? :specification_version then
|
40
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
41
|
+
s.specification_version = 3
|
42
|
+
|
43
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
44
|
+
s.add_runtime_dependency(%q<rake>, [">= 1.0"])
|
45
|
+
s.add_runtime_dependency(%q<rake>, [">= 1.0"])
|
46
|
+
else
|
47
|
+
s.add_dependency(%q<rake>, [">= 1.0"])
|
48
|
+
s.add_dependency(%q<rake>, [">= 1.0"])
|
49
|
+
end
|
50
|
+
else
|
51
|
+
s.add_dependency(%q<rake>, [">= 1.0"])
|
52
|
+
s.add_dependency(%q<rake>, [">= 1.0"])
|
53
|
+
end
|
54
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
# desc "Explaining what the task does"
|
2
|
+
# task :socket_debugger do
|
3
|
+
# # Task goes here
|
4
|
+
# end
|
5
|
+
|
6
|
+
desc 'Launch the Rack::Debug client'
|
7
|
+
task :debug do
|
8
|
+
require File.join(File.dirname(__FILE__), '..', 'ext', 'debugger')
|
9
|
+
|
10
|
+
begin
|
11
|
+
Debugger.start_unix_socket_client
|
12
|
+
rescue Errno::ENOENT
|
13
|
+
puts "Server is not running or Passenger has spooled down"
|
14
|
+
rescue StandardError => ex
|
15
|
+
puts "Unable to connect to debugging socket: #{ex}"
|
16
|
+
end
|
17
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddollar-rack-debug
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0
|
4
|
+
version: 1.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- David Dollar
|
@@ -9,12 +9,31 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date: 2009-
|
12
|
+
date: 2009-08-31 00:00:00 -07:00
|
13
13
|
default_executable:
|
14
|
-
dependencies:
|
15
|
-
|
14
|
+
dependencies:
|
15
|
+
- !ruby/object:Gem::Dependency
|
16
|
+
name: rake
|
17
|
+
type: :runtime
|
18
|
+
version_requirement:
|
19
|
+
version_requirements: !ruby/object:Gem::Requirement
|
20
|
+
requirements:
|
21
|
+
- - ">="
|
22
|
+
- !ruby/object:Gem::Version
|
23
|
+
version: "1.0"
|
24
|
+
version:
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: rake
|
27
|
+
type: :runtime
|
28
|
+
version_requirement:
|
29
|
+
version_requirements: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: "1.0"
|
34
|
+
version:
|
16
35
|
description: Rack::Debug adds a middlerware interface to ruby-debug http://github.com/github/rack-debug
|
17
|
-
email: ddollar@gmail.com
|
36
|
+
email: <ddollar@gmail.com>
|
18
37
|
executables: []
|
19
38
|
|
20
39
|
extensions: []
|
@@ -22,14 +41,20 @@ extensions: []
|
|
22
41
|
extra_rdoc_files:
|
23
42
|
- README.rdoc
|
24
43
|
files:
|
25
|
-
-
|
26
|
-
- lib/rack/debug.rb
|
44
|
+
- .gitignore
|
27
45
|
- README.rdoc
|
28
|
-
|
46
|
+
- Rakefile
|
47
|
+
- VERSION
|
48
|
+
- ext/debugger.rb
|
49
|
+
- init.rb
|
50
|
+
- lib/rack/debug.rb
|
51
|
+
- rack-debug.gemspec
|
52
|
+
- tasks/rack-debug.rake
|
53
|
+
has_rdoc: false
|
29
54
|
homepage: http://github.com/ddollar/rack-debug
|
30
55
|
post_install_message:
|
31
|
-
rdoc_options:
|
32
|
-
|
56
|
+
rdoc_options:
|
57
|
+
- --charset=UTF-8
|
33
58
|
require_paths:
|
34
59
|
- lib
|
35
60
|
required_ruby_version: !ruby/object:Gem::Requirement
|
@@ -46,10 +71,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
46
71
|
version:
|
47
72
|
requirements: []
|
48
73
|
|
49
|
-
rubyforge_project:
|
74
|
+
rubyforge_project:
|
50
75
|
rubygems_version: 1.2.0
|
51
76
|
signing_key:
|
52
|
-
specification_version:
|
77
|
+
specification_version: 3
|
53
78
|
summary: Rack::Debug adds a middlerware interface to ruby-debug
|
54
79
|
test_files: []
|
55
80
|
|