rack-var-dump 1.0.0 → 1.0.1
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/README.md +8 -2
- data/Rakefile +13 -1
- data/lib/rack/var_dump.rb +10 -38
- data/lib/rack/var_dump/kernel.rb +7 -2
- data/lib/rack/var_dump/response.rb +61 -0
- data/lib/rack/var_dump/variable.rb +33 -0
- data/lib/rack/var_dump/version.rb +1 -1
- metadata +14 -13
- data/lib/rack/var_dump/object.rb +0 -7
data/README.md
CHANGED
@@ -12,11 +12,11 @@ rack-var-dumpはphpのvar_dump()のようなデバッグ用のメソッドを提
|
|
12
12
|
|
13
13
|
Objectにvar_dumpメソッドを提供し、Rackがレスポンスを返すまでにModel,Controller,View,
|
14
14
|
|
15
|
-
|
15
|
+
その他コンテキストで実行されたvar_dump()のすべてのレシーバーをviewに自動的に出力します
|
16
16
|
|
17
17
|
出力には michaeldv / awesome_print を使用しています。
|
18
18
|
|
19
|
-
<img src="http://cdn-ak.f.st-hatena.com/images/fotolife/b/bunnyhop/20120208/
|
19
|
+
<img src="http://cdn-ak.f.st-hatena.com/images/fotolife/b/bunnyhop/20120208/20120208183913.png"/>
|
20
20
|
|
21
21
|
## Supported versions
|
22
22
|
|
@@ -73,6 +73,12 @@ var_dumpの返り値は常にselfのため、チェーンが途切れずに使
|
|
73
73
|
|
74
74
|
@first_name = User.find(3).var_dump('user.id(3)').first_name
|
75
75
|
|
76
|
+
引数にハッシュを与えることで、awesome_printのオプションを使用することができます。
|
77
|
+
|
78
|
+
@users.var_dump("user.all") #=> 通常出力
|
79
|
+
@users.var_dump("user.all", :plain => true) #=> plain text(obj.inspect)の出力
|
80
|
+
@users.var_dump(:plain => true) #=> subjectは省略してもok
|
81
|
+
|
76
82
|
## Copyright
|
77
83
|
|
78
84
|
Copyright (c) 2012 Daichi Hirata. See LICENSE for details.
|
data/Rakefile
CHANGED
@@ -3,4 +3,16 @@ require 'rspec/core/rake_task'
|
|
3
3
|
|
4
4
|
RSpec::Core::RakeTask.new(:spec)
|
5
5
|
|
6
|
-
task :default => :spec
|
6
|
+
task :default => :spec
|
7
|
+
|
8
|
+
def app_task(name)
|
9
|
+
task name => [:load_app, "app:db:#{name}"]
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Debugging tasks for local development"
|
13
|
+
task :debug do
|
14
|
+
rmdir "pkg"
|
15
|
+
sh "rake build"
|
16
|
+
sh "gem uninstall rack-var-dump"
|
17
|
+
sh "gem install pkg/rack-var-dump"
|
18
|
+
end
|
data/lib/rack/var_dump.rb
CHANGED
@@ -2,28 +2,24 @@ require "rack/utils"
|
|
2
2
|
require 'rack/var_dump/kernel'
|
3
3
|
require 'rack/var_dump/version'
|
4
4
|
require 'rack/var_dump/awesome_print'
|
5
|
+
require 'rack/var_dump/response'
|
6
|
+
require 'rack/var_dump/variable'
|
5
7
|
|
6
8
|
module Rack
|
7
9
|
class VarDump
|
8
10
|
@@var_aggregates = []
|
9
11
|
|
10
|
-
def self.
|
11
|
-
@@var_aggregates
|
12
|
+
def self.var_aggregates
|
13
|
+
@@var_aggregates
|
12
14
|
end
|
13
15
|
|
14
|
-
def self.
|
15
|
-
@@var_aggregates
|
16
|
-
{ :var => ai(var, :html => true), :subject => subject }
|
16
|
+
def self.reset!
|
17
|
+
@@var_aggregates = []
|
17
18
|
end
|
18
19
|
|
19
|
-
def self.
|
20
|
-
|
21
|
-
|
22
|
-
formatter = AwesomePrint::VarDump.new(self)
|
23
|
-
instance_variable_set(:@formatter, formatter)
|
24
|
-
end
|
25
|
-
|
26
|
-
ap.awesome(var)
|
20
|
+
def self.var_dump(var, subject, options = {})
|
21
|
+
default = { :html => true, :plain => false }
|
22
|
+
@@var_aggregates << Variable.new(var, subject, default.merge(options))
|
27
23
|
end
|
28
24
|
|
29
25
|
def initialize(app)
|
@@ -31,32 +27,8 @@ module Rack
|
|
31
27
|
end
|
32
28
|
|
33
29
|
def call(env)
|
34
|
-
request = Rack::Request.new(env)
|
35
30
|
status, headers, response = @app.call(env)
|
36
|
-
|
37
|
-
if headers["Content-Type"] =~ /^text\/html/ && !@@var_aggregates.empty?
|
38
|
-
body = ""
|
39
|
-
response.each {|org_body| body << org_body}
|
40
|
-
response = [apply(body)] if body =~ /<body.*>/
|
41
|
-
headers["Content-Length"] = response.join.bytesize.to_s
|
42
|
-
end
|
43
|
-
|
44
|
-
VarDump.reset!
|
45
|
-
[status, headers, response]
|
31
|
+
Response.call(status, headers, response)
|
46
32
|
end
|
47
|
-
|
48
|
-
private
|
49
|
-
def apply(body)
|
50
|
-
html = '<div id="var_dump" style="display:block">'
|
51
|
-
html << '<pre style="background-color:#eee;padding:10px;font-size:11px;white-space:pre-wrap;color:black!important;">'
|
52
|
-
@@var_aggregates.each_with_index do |info, n|
|
53
|
-
html << "var_dump:#{n} #{info[:subject]}\n"
|
54
|
-
html << info[:var]
|
55
|
-
html << "\n\n"
|
56
|
-
end
|
57
|
-
html << "</pre></div>"
|
58
|
-
|
59
|
-
body.sub(/<body.*>/, '\&' + html)
|
60
|
-
end
|
61
33
|
end
|
62
34
|
end
|
data/lib/rack/var_dump/kernel.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
module Kernel
|
2
|
-
def var_dump(subject = nil)
|
3
|
-
|
2
|
+
def var_dump(subject = nil, options = {})
|
3
|
+
if subject.kind_of?(Hash)
|
4
|
+
options = subject
|
5
|
+
subject = nil
|
6
|
+
end
|
7
|
+
|
8
|
+
Rack::VarDump.var_dump(self, subject, options)
|
4
9
|
self
|
5
10
|
end
|
6
11
|
end
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Rack
|
2
|
+
class VarDump
|
3
|
+
class Response
|
4
|
+
def self.call(*args)
|
5
|
+
self.new(*args)._call
|
6
|
+
end
|
7
|
+
|
8
|
+
def initialize(status, headers, response)
|
9
|
+
@status = status
|
10
|
+
@headers = headers
|
11
|
+
@response = response
|
12
|
+
@content_body = ""
|
13
|
+
@var_aggregates = VarDump.var_aggregates
|
14
|
+
end
|
15
|
+
|
16
|
+
def _call
|
17
|
+
if @headers["Content-Type"] =~ /^text\/html/ && !@var_aggregates.empty?
|
18
|
+
@response.each do |orign_body|
|
19
|
+
@content_body << orign_body
|
20
|
+
end
|
21
|
+
|
22
|
+
@response = [apply_content_body] if @content_body =~ /<body.*>/
|
23
|
+
@headers["Content-Length"] = @response.join.bytesize.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
VarDump.reset!
|
27
|
+
[@status, @headers, @response]
|
28
|
+
end
|
29
|
+
|
30
|
+
private
|
31
|
+
def apply_content_body
|
32
|
+
html = <<-HTML
|
33
|
+
<style type="text/css">
|
34
|
+
<!--
|
35
|
+
#raci-var-dump pre {
|
36
|
+
background-color: #eee;
|
37
|
+
padding: 10px;
|
38
|
+
font-size: 11px;
|
39
|
+
white-space: pre-wrap;
|
40
|
+
color: black!important;
|
41
|
+
}
|
42
|
+
-->
|
43
|
+
</style>
|
44
|
+
<div id="rack-var-dump" style="display:block">
|
45
|
+
<pre>
|
46
|
+
HTML
|
47
|
+
|
48
|
+
@var_aggregates.each_with_index do |variable, index|
|
49
|
+
html << <<-EOH
|
50
|
+
var_dump:#{index} #{variable.subject}
|
51
|
+
#{variable.dump}
|
52
|
+
|
53
|
+
EOH
|
54
|
+
end
|
55
|
+
|
56
|
+
html << "</pre></div>"
|
57
|
+
@content_body.sub(/<body.*>/, '\&' + html)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module Rack
|
2
|
+
class VarDump
|
3
|
+
class Variable
|
4
|
+
attr_reader :subject
|
5
|
+
|
6
|
+
def initialize(var, subject, options = {})
|
7
|
+
@variable = var
|
8
|
+
@subject = subject
|
9
|
+
@options = options
|
10
|
+
end
|
11
|
+
|
12
|
+
def dump
|
13
|
+
@options[:plain] ? inspect_dump : ai_dump
|
14
|
+
end
|
15
|
+
|
16
|
+
def inspect_dump
|
17
|
+
Rack::Utils.escape_html(@variable.inspect)
|
18
|
+
end
|
19
|
+
private :inspect
|
20
|
+
|
21
|
+
def ai_dump
|
22
|
+
ap = AwesomePrint::Inspector.new(@options)
|
23
|
+
ap.instance_eval do
|
24
|
+
formatter = AwesomePrint::VarDump.new(self)
|
25
|
+
instance_variable_set(:@formatter, formatter)
|
26
|
+
end
|
27
|
+
|
28
|
+
ap.awesome(@variable)
|
29
|
+
end
|
30
|
+
private :ai_dump
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rack-var-dump
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-02-
|
12
|
+
date: 2012-02-09 00:00:00.000000000Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: awesome_print
|
16
|
-
requirement: &
|
16
|
+
requirement: &2154970300 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - =
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: 1.0.2
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *2154970300
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: rake
|
27
|
-
requirement: &
|
27
|
+
requirement: &2154969520 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: 0.9.2.2
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *2154969520
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rack
|
38
|
-
requirement: &
|
38
|
+
requirement: &2154968680 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: 1.3.5
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *2154968680
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: rack-test
|
49
|
-
requirement: &
|
49
|
+
requirement: &2154968140 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: 0.5.3
|
55
55
|
type: :development
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *2154968140
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: rspec
|
60
|
-
requirement: &
|
60
|
+
requirement: &2154967680 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: 2.7.0
|
66
66
|
type: :development
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *2154967680
|
69
69
|
description: provides a method for debugging like var_dump() of php.
|
70
70
|
email:
|
71
71
|
- bunny.hop.md@gmail.com
|
@@ -85,8 +85,9 @@ files:
|
|
85
85
|
- lib/rack/var_dump/awesome_print/ext/var_dump.rb
|
86
86
|
- lib/rack/var_dump/awesome_print/ext/var_dump.rb.old
|
87
87
|
- lib/rack/var_dump/kernel.rb
|
88
|
-
- lib/rack/var_dump/object.rb
|
89
88
|
- lib/rack/var_dump/railtie.rb
|
89
|
+
- lib/rack/var_dump/response.rb
|
90
|
+
- lib/rack/var_dump/variable.rb
|
90
91
|
- lib/rack/var_dump/version.rb
|
91
92
|
- lib/rails-var-dump.rb
|
92
93
|
- lib/rails_var_dump.rb
|