rack_console 0.3.1 → 0.3.2

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: 6118a7bb2ae127448272b43fa93fded43d4dee30
4
- data.tar.gz: 0d2bfcf921120bfb7897e4f609fc384df1b126fa
3
+ metadata.gz: 4a4ba0df0574adddc3056759da9cd1f0977e45bd
4
+ data.tar.gz: 3ec32e29c2b3ff8145767f5e3ea4b26b7bfe433d
5
5
  SHA512:
6
- metadata.gz: da69edcfc2924e8606afa7c761c93b9d1d0a1b08738d8d3b1f35a57c7a279bc843f8995b4a288ef7305191b0465abf82a47ebf8b655aafe20aa3f1d400cae5de
7
- data.tar.gz: afd218cc0f1f15b503a4d026025a9c880c18043358385564bb6a8d9600960f3a440cd78dc03975503f431e39f766890128467e6e0901d095a1b36e86b1b94f95
6
+ metadata.gz: 9aa66a2d07385e9ae6431a428eb88acc8c17a4b2050102ce034c0027dd9abb9a0c6877d2a9314d54628985f45be6d18d7f4978db2f4815446a79e09ca4ce81fa
7
+ data.tar.gz: 15516fe338a8c8b83ff56fa8a0cdb82d1a3bd8a24ba35b3b6d5ffaf98dd0d8af4dabaa03d304a9fa49af60ea536e47d68d755d31e85aa0485ed891aef9f35d03
@@ -1,3 +1,4 @@
1
+ require 'rack_console'
1
2
  require 'rack_console/source_file'
2
3
  require 'rack_console/app_helpers'
3
4
  require 'sinatra'
@@ -9,37 +10,51 @@ module RackConsole
9
10
  set :views, :default
10
11
 
11
12
  get '/?' do
12
- console!
13
+ with_access do
14
+ console!
15
+ end
13
16
  end
14
17
 
15
18
  post '/?' do
16
- console!
19
+ with_access do
20
+ console!
21
+ end
17
22
  end
18
23
 
19
24
  get "/module/:expr" do
20
- evaluate_module!
21
- haml :'console/module', locals: locals, layout: layout
25
+ with_access do
26
+ evaluate_module!
27
+ haml :'console/module', locals: locals, layout: layout
28
+ end
22
29
  end
23
30
 
24
31
  get "/method/:expr/:kind/:name" do
25
- evaluate_method!
26
- haml :'console/method', locals: locals, layout: layout
32
+ with_access do
33
+ evaluate_method!
34
+ haml :'console/method', locals: locals, layout: layout
35
+ end
27
36
  end
28
37
 
29
38
  get "/methods/:owner/:kind/:name" do
30
- evaluate_methods!
31
- haml :'console/methods', locals: locals, layout: layout
39
+ with_access do
40
+ evaluate_methods!
41
+ haml :'console/methods', locals: locals, layout: layout
42
+ end
32
43
  end
33
44
 
34
45
  get "/file/*" do
35
- prepare_file!
36
- haml :'console/file', locals: locals, layout: layout
46
+ with_access do
47
+ prepare_file!
48
+ haml :'console/file', locals: locals, layout: layout
49
+ end
37
50
  end
38
51
 
39
52
  get "/methods/file/*" do
40
- prepare_file!
41
- @methods = methods_within_file(@source_file.file) if @source_file
42
- haml :'console/methods', locals: locals, layout: layout
53
+ with_access do
54
+ prepare_file!
55
+ @methods = methods_within_file(@source_file.file) if @source_file
56
+ haml :'console/methods', locals: locals, layout: layout
57
+ end
43
58
  end
44
59
 
45
60
  get "/css/:path" do | path |
@@ -4,13 +4,21 @@ require 'pp'
4
4
  require 'stringio'
5
5
  require 'rack_console/ansi2html'
6
6
  require 'rack_console/expr_helpers'
7
+ require 'rack_console/mock_method'
7
8
 
8
9
  module RackConsole
9
10
  module AppHelpers
10
11
  include ExprHelpers
11
12
 
12
13
  def has_console_access?
13
- true
14
+ case a = config[:authorized?]
15
+ when true, false
16
+ a
17
+ when Proc
18
+ a.call
19
+ else
20
+ true
21
+ end
14
22
  end
15
23
 
16
24
  def has_file_access? file
@@ -43,14 +51,18 @@ module RackConsole
43
51
 
44
52
  ###############################
45
53
 
46
- def console!
54
+ def with_access
47
55
  if has_console_access?
48
- haml :console, locals: locals, layout: layout
56
+ yield
49
57
  else
50
- raise "not authorized"
58
+ raise Error, "not authorized"
51
59
  end
52
60
  end
53
61
 
62
+ def console!
63
+ haml :console, locals: locals, layout: layout
64
+ end
65
+
54
66
  def evaluate_expr!
55
67
  return if @result_evaled
56
68
  result_capture! do
@@ -78,6 +90,7 @@ module RackConsole
78
90
  if @result_ok && @result.is_a?(Module)
79
91
  result_capture! do
80
92
  @module = @result
93
+ expr_for_object! @module
81
94
  end
82
95
  end
83
96
  end
@@ -95,10 +108,7 @@ module RackConsole
95
108
  @method = @module.send(:method, @method_name)
96
109
  @method_kind = :method
97
110
  end
98
- @method_source_location = @method.source_location
99
- @method_source = @method_source_location && SourceFile.new(@method_source_location).load!.narrow_to_block!
100
111
  @result = @method
101
- @is_method = true
102
112
  expr_for_object! @method, @module, @method_kind
103
113
  end
104
114
  end
@@ -145,16 +155,21 @@ module RackConsole
145
155
  ensure
146
156
  @result_extended = @result.singleton_class.included_modules rescue nil
147
157
  @result_class = @result.class.name
148
- if @is_module = Module === @result
158
+ if @is_module = (::Module === @result)
149
159
  @module = @result
150
160
  @ancestors = @module.ancestors.drop(1)
151
- if @is_class = @module.is_a?(Class)
161
+ if @is_class = (::Class === @module)
152
162
  @superclass = @module.superclass
153
163
  @subclasses = @module.subclasses.sort_by{|c| c.name || ''}
154
164
  end
155
165
  @constants = @module.constants(false).sort.map{|n| [ n, const_get_safe(@module, n) ]}
156
166
  @methods = methods_for_module(@module)
157
167
  end
168
+ if @is_method = (::Method === @result || ::UnboundMethod === @result || MockMethod === @result)
169
+ @method = @result
170
+ @method_source_location = @method.source_location
171
+ @method_source = @method_source_location && SourceFile.new(@method_source_location).load!.narrow_to_block!
172
+ end
158
173
  end
159
174
 
160
175
  def server_info
@@ -298,19 +313,6 @@ module RackConsole
298
313
  end
299
314
  DUMMY_SOURCE_LOCATION = [ "".freeze, 0 ].freeze
300
315
 
301
- class MockMethod
302
- attr_accessor :meth, :name, :kind, :owner
303
- def initialize *args
304
- @meth, @name, @kind, @owner = args
305
- end
306
- def instance_method?
307
- @kind == :i
308
- end
309
- def source_location
310
- @meth.source_location
311
- end
312
- end
313
-
314
316
  def file_line_to_href name, lineno = nil
315
317
  link = name.sub(%r{^/}, '-')
316
318
  link = link.split('/').map{|s| e s}.join('/')
@@ -379,7 +381,15 @@ module RackConsole
379
381
  href = url_root("/method/#{owner.name}/#{e kind.to_s}/#{e m.name}")
380
382
  end
381
383
 
382
- def format_methods name
384
+ def format_methods obj
385
+ case obj
386
+ when nil
387
+ return nil
388
+ when ::Method, ::UnboundMethod, MockMethod
389
+ name = obj.name or return nil
390
+ else
391
+ name = obj.to_s
392
+ end
383
393
  href = url_root("/methods/*/*/#{e name}")
384
394
  "<a href='#{href}' title='Other methods named #{h name.inspect}' class='method_name'>#{method_name_tag(h(name))}</a>"
385
395
  end
@@ -411,13 +421,14 @@ module RackConsole
411
421
  %Q{<span class="backtrace">#{html}</span>}
412
422
  end
413
423
 
414
- def wrap_lines str, width = 80
424
+ def wrap_lines str, width = nil
415
425
  str.to_s.split("\n").map do | line |
416
426
  wrap_line line, width
417
427
  end * "\n"
418
428
  end
419
429
 
420
- def wrap_line str, width = 80
430
+ def wrap_line str, width = nil
431
+ width ||= config[:wrap_width] || 80
421
432
  str = str.to_s
422
433
  out = ''
423
434
  pos = 0
@@ -1,5 +1,6 @@
1
1
  require 'time'
2
2
  require 'date'
3
+ require 'rack_console/mock_method'
3
4
 
4
5
  module RackConsole
5
6
  module ExprHelpers
@@ -14,17 +15,15 @@ module RackConsole
14
15
 
15
16
  def expr_for_object obj, mod = nil, kind = nil
16
17
  case obj
17
- when nil, true, false
18
- obj.to_s
19
- when Float, Integer
18
+ when nil, true, false, ::Numeric, ::String
20
19
  obj.inspect
21
- when Time
20
+ when ::Time
22
21
  "Time.parse(#{obj.iso8601(6).inspect})"
23
- when Date
22
+ when ::Date
24
23
  "Date.parse(#{obj.to_s.inspect})"
25
- when Module
26
- expr_for_object obj
27
- when Method, UnboundMethod
24
+ when ::Module
25
+ expr_for_module obj
26
+ when ::Method, ::UnboundMethod, MockMethod
28
27
  expr_for_method(mod, obj.name, kind) if mod && kind
29
28
  else
30
29
  nil
@@ -32,11 +31,11 @@ module RackConsole
32
31
  end
33
32
 
34
33
  def expr_for_method mod, name, kind
35
- "#{mod}.#{kind}(#{name.to_sym.inspect})"
34
+ mod.name && "#{expr_for_module(mod)}.#{kind}(#{name.to_sym.inspect})"
36
35
  end
37
36
 
38
- def expr_for_Module obj
39
- obj && obj.name
37
+ def expr_for_module obj
38
+ obj && obj.name && "::#{obj.name}"
40
39
  end
41
40
  end
42
41
  end
@@ -0,0 +1,16 @@
1
+ module RackConsole
2
+ class MockMethod
3
+ attr_accessor :meth, :name, :kind, :owner
4
+ def initialize *args
5
+ @meth, @name, @kind, @owner = args
6
+ @owner ||= @meth.owner
7
+ end
8
+ def instance_method?
9
+ @kind == :i
10
+ end
11
+ def source_location
12
+ @meth.source_location
13
+ end
14
+ end
15
+ end
16
+
@@ -6,6 +6,6 @@
6
6
  %td.class=format_module(meth.owner)
7
7
  %td.kind
8
8
  %a{href: method_href(meth, meth.kind, meth.owner), title: "Method detail"}=meth.instance_method? ? "#" : "."
9
- %td.name=format_methods(meth.name)
9
+ %td.name=format_methods(meth)
10
10
  %td.source_location=format_source_location(meth.source_location, meth, meth.kind)
11
11
  .status{style: "text-align: center"}=h "#{methods.size} methods"
@@ -1,5 +1,5 @@
1
1
  %dt Name:
2
- %dd= format_methods(@method.name)
2
+ %dd= format_methods(@method)
3
3
  %dt Owner:
4
4
  %dd= format_module(@module)
5
5
  %dt Parameters:
@@ -2,8 +2,8 @@
2
2
  %html
3
3
  %head
4
4
  %title rack_console
5
- %link(rel="stylesheet" href="#{url_root "/css/rack_console.css"})
6
- %link(rel="stylesheet" href="#{url_root "/css/ansi.css"})
5
+ %link{rel: "stylesheet", href: url_root("/css/rack_console.css")}
6
+ %link{rel: "stylesheet", href: url_root("/css/ansi.css")}
7
7
  %body
8
8
  .wrapper
9
9
  .header
@@ -1,3 +1,3 @@
1
1
  module RackConsole
2
- VERSION = "0.3.1"
2
+ VERSION = "0.3.2"
3
3
  end
data/lib/rack_console.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  require "rack_console/version"
2
2
 
3
3
  module RackConsole
4
- # Your code goes here...
4
+ class Error < ::StandardError; end
5
5
  end
data/rack_console.gemspec CHANGED
@@ -29,7 +29,7 @@ Gem::Specification.new do |spec|
29
29
 
30
30
  spec.add_dependency "sinatra", "~> 1.4"
31
31
  spec.add_dependency "haml", "~> 4.0"
32
- spec.add_dependency "activesupport", "~> 4.2"
32
+ spec.add_dependency "activesupport", ">= 3.0"
33
33
  spec.add_dependency "awesome_print", "~> 1.6"
34
34
 
35
35
  spec.add_development_dependency "bundler", "~> 1.10"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rack_console
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kurt Stephens
@@ -42,16 +42,16 @@ dependencies:
42
42
  name: activesupport
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '4.2'
47
+ version: '3.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - "~>"
52
+ - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '4.2'
54
+ version: '3.0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: awesome_print
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -174,6 +174,7 @@ files:
174
174
  - lib/rack_console/app.rb
175
175
  - lib/rack_console/app_helpers.rb
176
176
  - lib/rack_console/expr_helpers.rb
177
+ - lib/rack_console/mock_method.rb
177
178
  - lib/rack_console/source_file.rb
178
179
  - lib/rack_console/template/css/ansi.css
179
180
  - lib/rack_console/template/css/rack_console.css
@@ -213,7 +214,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
214
  version: '0'
214
215
  requirements: []
215
216
  rubyforge_project:
216
- rubygems_version: 2.4.3
217
+ rubygems_version: 2.2.2
217
218
  signing_key:
218
219
  specification_version: 4
219
220
  summary: A Rack App that provides a basic interactive Ruby console and introspection.