rubyception 0.0.3 → 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- data/app/assets/javascripts/rubyception/collections/entries.coffee +18 -0
- data/app/assets/javascripts/rubyception/collections/filter_actions.coffee +3 -0
- data/app/assets/javascripts/rubyception/lib/jenny.coffee +4 -4
- data/app/assets/javascripts/rubyception/models/filter_action.coffee +2 -0
- data/app/assets/javascripts/rubyception/routers/log.coffee +7 -3
- data/app/assets/javascripts/rubyception/template.js +1 -1
- data/app/assets/javascripts/rubyception/views/entries/entry.coffee +26 -1
- data/app/assets/javascripts/rubyception/views/shared/filter_action.coffee +20 -0
- data/app/assets/javascripts/rubyception/views/shared/filter_controller.coffee +22 -0
- data/app/assets/javascripts/rubyception/views/shared/filters.coffee +15 -0
- data/app/assets/javascripts/rubyception/views/shared/filters_actions.coffee +7 -0
- data/app/assets/stylesheets/rubyception/default.sass +7 -0
- data/app/assets/stylesheets/rubyception/entries.sass +37 -2
- data/app/models/rubyception/entry.rb +5 -1
- data/app/views/rubyception/entries/_entry.haml +1 -0
- data/app/views/rubyception/shared/_filter_action.haml +2 -0
- data/app/views/rubyception/shared/_filter_controller.haml +3 -0
- data/config/templating.yml +3 -0
- data/lib/rubyception/version.rb +1 -1
- data/lib/rubyception/websocket_server.rb +3 -0
- data/test/dummy/config/routes.rb +1 -1
- metadata +67 -19
@@ -1,3 +1,21 @@
|
|
1
1
|
class App.Collections.Entries extends Backbone.Collection
|
2
2
|
model: App.Models.Entry
|
3
3
|
url:-> ''
|
4
|
+
filter:(args)->
|
5
|
+
_.each @models, (model)=>
|
6
|
+
controller = model.get 'controller'
|
7
|
+
action = model.get 'action'
|
8
|
+
check_action = args.controller isnt undefined and args.action isnt undefined
|
9
|
+
check_controller = args.controller isnt undefined
|
10
|
+
|
11
|
+
trigger = if check_action
|
12
|
+
controller is args.controller && action is args.action
|
13
|
+
else if check_controller
|
14
|
+
controller is args.controller
|
15
|
+
else
|
16
|
+
false
|
17
|
+
|
18
|
+
if trigger && args.trigger is 'ignore'
|
19
|
+
model.trigger 'ignore'
|
20
|
+
else if trigger && args.trigger is 'notice'
|
21
|
+
model.trigger 'notice'
|
@@ -57,7 +57,7 @@ CollectionHelpers =
|
|
57
57
|
collect:->
|
58
58
|
e = $ @context.el
|
59
59
|
find = arguments[0]
|
60
|
-
has_find = find isnt undefined
|
60
|
+
has_find = find isnt undefined && find isnt null
|
61
61
|
options = arguments[1]
|
62
62
|
options ||= {}
|
63
63
|
|
@@ -65,12 +65,12 @@ CollectionHelpers =
|
|
65
65
|
delete options.template_index
|
66
66
|
template_index = ti
|
67
67
|
template_index = "#{@name}/index" if ti is undefined
|
68
|
-
e
|
69
|
-
html = @context.template template_index, options.args || {}
|
70
68
|
|
71
69
|
hti = options.has_template_index
|
72
70
|
delete options.has_template_index
|
73
|
-
|
71
|
+
if hti != false
|
72
|
+
html = @context.template template_index, options.args || {}
|
73
|
+
e.html html
|
74
74
|
|
75
75
|
t = options.template
|
76
76
|
delete options.template
|
@@ -8,6 +8,7 @@ class App.Routers.Log extends Backbone.Router
|
|
8
8
|
socket.onclose = @onclose
|
9
9
|
socket.onmessage = @onmessage
|
10
10
|
@collection = new App.Collections.Entries()
|
11
|
+
App.enteries = @collection
|
11
12
|
@collection.model = App.Models.Entry
|
12
13
|
@default()
|
13
14
|
onmessage:(msg)=>
|
@@ -29,17 +30,20 @@ class App.Routers.Log extends Backbone.Router
|
|
29
30
|
@index()
|
30
31
|
toggle_side: =>
|
31
32
|
$('.wrapper').toggleClass 'filter'
|
33
|
+
toggle_params: =>
|
34
|
+
$('body').toggleClass 'pretty_params'
|
32
35
|
hotkeys: =>
|
33
36
|
m = Mousetrap
|
34
37
|
m.bind '\\ n' , @toggle_side
|
35
38
|
m.bind ['j','down'] , @log.entries_index.down
|
36
39
|
m.bind ['k','up'] , @log.entries_index.up
|
37
40
|
m.bind String(i) , _.bind @log.entries_index.number_hotkey, @, String(i) for i in [0..9]
|
38
|
-
m.bind 'o' , @collection.open_selected
|
39
41
|
m.bind 'shift+g' , _.bind @log.entries_index.goto_number, @, 'bottom'
|
40
42
|
m.bind 'g g' , _.bind @log.entries_index.goto_number, @, 'top'
|
41
|
-
m.bind '
|
43
|
+
m.bind 'p' , @toggle_params
|
44
|
+
m.bind ['o','enter'], @log.entries_index.toggle_open
|
42
45
|
index: =>
|
46
|
+
App.column = @partial '.column', 'shared/filters'
|
43
47
|
@log = @partial '.content', 'logs/show',
|
44
|
-
|
48
|
+
collection: @collection
|
45
49
|
@hotkeys()
|
@@ -1 +1 @@
|
|
1
|
-
Template = {"entries":{"index":"<div class='entries'></div>\n","entry":"<div class='marker'></div>\n<div class='details'>\n <div class='heading'>\n <div class='method'>{{method}}</div>\n <div class='format'>{{format}}</div>\n {{controller}}#{{action}}\n <div class='path'>{{path}}</div>\n <div class='datetime'>{{start_time}}</div>\n <div class='ms'>{{duration}}ms</div>\n </div>\n <div class='lines'></div>\n <div class='backtrace_lines'></div>\n</div>\n<div class='clear'></div>\n"},"backtrace_lines":{"index":"<table>\n <thead>\n <th class='toggle_rails'>\n <a href=\"#\" class=\"show_rails\" onclick=\"return false\">T</a>\n </th>\n <th class='exception' colspan='3'>\n {{name}}: {{message}}\n </th>\n </thead>\n <tbody></tbody>\n</table>\n","backtrace_line":"<td class='num'>{{num}}</td>\n<td class='msg'><a href=\"mvim://open?url={{url}}&line={{line_num}}\">{{msg}}</a></td>\n<td class='lnum'>{{line_num}}</td>\n<td class='in'>\n <span>{{in}}</span>\n</td>\n"},"lines":{"index":"<table>\n <thead></thead>\n <tbody></tbody>\n</table>\n","action_controller":{"write_fragment":"","read_fragment":"","expire_fragment":"","exist_fragment":"","write_page":"","expire_page":"","start_processing":"","process_action":"","send_file":"","send_data":"","redirect_to":"","halted_callback":""},"action_view":{"render_template":"<td class='msg'>render template</td>\n<td class='identifier'>{{identifier}}</td>\n<td class='layout'>\n <span>layout:</span>\n {{layout}}\n</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n","render_partial":"<td class='msg'>render partial</td>\n<td class='identifier'>{{identifier}}</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n"},"active_record":{"sql":"<td class='name'>{{name}}</td>\n<td class='sql'>\n <pre class='brush: sql'>{{sql}}</pre>\n</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n","identity":"<td class='name'>{{name}}</td>\n<td class='line'>{{line}}</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n"},"action_mailer":{"receive":"","deliver":""},"active_resource":{"request":""},"active_support":{"cache_read":"","cache_generate":"","cache_fetch_hit":"","cache_write":"","cache_delete":"","cache_exist":""}}}
|
1
|
+
Template = {"entries":{"index":"<div class='entries'></div>\n","entry":"<div class='marker'></div>\n<div class='details'>\n <div class='heading'>\n <div class='method'>{{method}}</div>\n <div class='format'>{{format}}</div>\n {{controller}}#{{action}}\n <div class='path'>{{path}}</div>\n <div class='datetime'>{{start_time}}</div>\n <div class='ms'>{{duration}}ms</div>\n </div>\n <div class='params'></div>\n <div class='lines'></div>\n <div class='backtrace_lines'></div>\n</div>\n<div class='clear'></div>\n"},"backtrace_lines":{"index":"<table>\n <thead>\n <th class='toggle_rails'>\n <a href=\"#\" class=\"show_rails\" onclick=\"return false\">T</a>\n </th>\n <th class='exception' colspan='3'>\n {{name}}: {{message}}\n </th>\n </thead>\n <tbody></tbody>\n</table>\n","backtrace_line":"<td class='num'>{{num}}</td>\n<td class='msg'><a href=\"mvim://open?url={{url}}&line={{line_num}}\">{{msg}}</a></td>\n<td class='lnum'>{{line_num}}</td>\n<td class='in'>\n <span>{{in}}</span>\n</td>\n"},"shared":{"filter_controller":"<input id=\"filter\" name=\"filter\" type=\"checkbox\" value=\"1\" />\n{{controller}}\n<div class='filter_actions'></div>\n","filter_action":"<input id=\"filter\" name=\"filter\" type=\"checkbox\" value=\"1\" />\n{{action}}\n"},"lines":{"index":"<table>\n <thead></thead>\n <tbody></tbody>\n</table>\n","action_controller":{"write_fragment":"","read_fragment":"","expire_fragment":"","exist_fragment":"","write_page":"","expire_page":"","start_processing":"","process_action":"","send_file":"","send_data":"","redirect_to":"","halted_callback":""},"action_view":{"render_template":"<td class='msg'>render template</td>\n<td class='identifier'>{{identifier}}</td>\n<td class='layout'>\n <span>layout:</span>\n {{layout}}\n</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n","render_partial":"<td class='msg'>render partial</td>\n<td class='identifier'>{{identifier}}</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n"},"active_record":{"sql":"<td class='name'>{{name}}</td>\n<td class='sql'>\n <pre class='brush: sql'>{{sql}}</pre>\n</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n","identity":"<td class='name'>{{name}}</td>\n<td class='line'>{{line}}</td>\n<td class='duration' colspan='10'>{{duration}}ms</td>\n"},"action_mailer":{"receive":"","deliver":""},"active_resource":{"request":""},"active_support":{"cache_read":"","cache_generate":"","cache_fetch_hit":"","cache_write":"","cache_delete":"","cache_exist":""}}}
|
@@ -3,6 +3,8 @@ class App.Views.Entries.Entry extends Backbone.View
|
|
3
3
|
events:
|
4
4
|
'click': 'select_and_toggle'
|
5
5
|
initialize: ->
|
6
|
+
@model.bind 'notice', @notice
|
7
|
+
@model.bind 'ignore', @ignore
|
6
8
|
@render()
|
7
9
|
select_and_toggle: (event) =>
|
8
10
|
target = $ event.target
|
@@ -12,14 +14,28 @@ class App.Views.Entries.Entry extends Backbone.View
|
|
12
14
|
@index.entry $ @el
|
13
15
|
@index.toggle_open()
|
14
16
|
render: =>
|
17
|
+
@add_to_filters()
|
15
18
|
@el_template 'entries/entry'
|
16
19
|
@color_ms()
|
17
20
|
@color_marker()
|
21
|
+
@params()
|
18
22
|
@backtrace()
|
19
23
|
@lines()
|
24
|
+
params:->
|
25
|
+
params = @model.get 'params'
|
26
|
+
html = _.map params, (v,k)->
|
27
|
+
boolean = v is true or v is false
|
28
|
+
number = !isNaN(parseFloat(v)) && isFinite(v)
|
29
|
+
kind = if boolean then 'boolean'
|
30
|
+
else if number then 'number'
|
31
|
+
else
|
32
|
+
v = "'#{v}'"
|
33
|
+
'string'
|
34
|
+
|
35
|
+
"<span class='param'><span class='key'>#{k}</span><span class='colon'>:</span> <span class='value #{kind}'>#{v}</span></span>"
|
36
|
+
$(@el).find('.params').html html.join('')
|
20
37
|
backtrace:->
|
21
38
|
backtrace = @model.get 'backtrace'
|
22
|
-
console.log backtrace
|
23
39
|
if backtrace
|
24
40
|
el = $(@el).find '.backtrace_lines'
|
25
41
|
@collect 'backtrace_lines',
|
@@ -47,3 +63,12 @@ class App.Views.Entries.Entry extends Backbone.View
|
|
47
63
|
else 'slow'
|
48
64
|
e = $(@el).find '.ms'
|
49
65
|
e.addClass c
|
66
|
+
ignore:=> $(@el).addClass 'ignore'
|
67
|
+
notice:=> $(@el).removeClass 'ignore'
|
68
|
+
add_to_filters:->
|
69
|
+
controller = @model.get 'controller'
|
70
|
+
action = @model.get 'action'
|
71
|
+
App.filters[controller] = [] if App.filters[controller] is undefined
|
72
|
+
App.filters[controller].push action
|
73
|
+
App.filters[controller] = _.uniq App.filters[controller]
|
74
|
+
App.column.render()
|
@@ -0,0 +1,20 @@
|
|
1
|
+
class App.Views.Shared.FilterAction extends Backbone.View
|
2
|
+
className: 'filter_action'
|
3
|
+
events:
|
4
|
+
'click input': 'filter'
|
5
|
+
initialize:->
|
6
|
+
@render()
|
7
|
+
render:->
|
8
|
+
@el_template 'shared/filter_action'
|
9
|
+
filter:(e)->
|
10
|
+
parent = $(e.currentTarget).parent().parent().parent()
|
11
|
+
checked = parent.find('input:first').is(':checked')
|
12
|
+
if checked is false
|
13
|
+
controller = @model.get 'controller'
|
14
|
+
action = @model.get 'action'
|
15
|
+
checked = $(e.currentTarget).is(':checked')
|
16
|
+
trigger = if checked then 'ignore' else 'notice'
|
17
|
+
App.enteries.filter
|
18
|
+
controller : controller
|
19
|
+
aciton : action
|
20
|
+
trigger : trigger
|
@@ -0,0 +1,22 @@
|
|
1
|
+
class App.Views.Shared.FilterController extends Backbone.View
|
2
|
+
className: 'filter_controller'
|
3
|
+
events:
|
4
|
+
'click input:first': 'filter'
|
5
|
+
initialize:->
|
6
|
+
@render()
|
7
|
+
render:->
|
8
|
+
@el_template 'shared/filter_controller'
|
9
|
+
@collect 'filter_actions',
|
10
|
+
el : @$ '.filter_actions'
|
11
|
+
template: 'shared/filter_actions'
|
12
|
+
filters = @model.get 'filters'
|
13
|
+
@collection.reset filters
|
14
|
+
filter:(e)->
|
15
|
+
e = $(e.currentTarget)
|
16
|
+
controller = @model.get 'controller'
|
17
|
+
checked = e.is(':checked')
|
18
|
+
trigger = if checked then 'ignore' else 'notice'
|
19
|
+
$(@el).find('input').attr 'checked', checked
|
20
|
+
App.enteries.filter
|
21
|
+
controller : controller
|
22
|
+
trigger : trigger
|
@@ -0,0 +1,15 @@
|
|
1
|
+
class App.Views.Shared.Filters extends Backbone.View
|
2
|
+
initialize:->
|
3
|
+
App.filters = {}
|
4
|
+
@render()
|
5
|
+
render:->
|
6
|
+
$(@el).empty()
|
7
|
+
_.each App.filters, (v,k)=>
|
8
|
+
v = _.map v, (action)=>
|
9
|
+
{controller: k, action: v}
|
10
|
+
attrs =
|
11
|
+
controller : k
|
12
|
+
filters : v
|
13
|
+
model = new Backbone.Model attrs
|
14
|
+
e = @partial null, 'shared/filter_controller', model: model
|
15
|
+
$(@el).append e.el
|
@@ -24,12 +24,19 @@ html,body
|
|
24
24
|
|
25
25
|
.wrapper.filter
|
26
26
|
.column
|
27
|
+
:display block
|
27
28
|
:float left
|
28
29
|
:width 260px
|
29
30
|
:margin-left -100%
|
31
|
+
:color rgb(195,195,195)
|
32
|
+
:font-size 14px
|
30
33
|
.content_wrap
|
31
34
|
:float left
|
32
35
|
:width 100%
|
33
36
|
.content
|
34
37
|
:margin
|
35
38
|
:left 260px
|
39
|
+
|
40
|
+
.filter_action
|
41
|
+
:padding
|
42
|
+
:left 15px
|
@@ -45,15 +45,50 @@
|
|
45
45
|
:color rgb(50,250,100)
|
46
46
|
.datetime
|
47
47
|
:color rgb(120,120,120)
|
48
|
-
.lines, .backtrace_lines
|
48
|
+
.lines, .backtrace_lines, .params
|
49
|
+
:display none
|
50
|
+
&.ignore
|
49
51
|
:display none
|
50
52
|
&.selected
|
51
53
|
:background rgb(55,55,55)
|
52
54
|
&.open
|
53
|
-
.lines, .backtrace_lines
|
55
|
+
.lines, .backtrace_lines, .params
|
54
56
|
:display block
|
55
57
|
:padding-bottom 10px
|
56
58
|
.position_marker
|
57
59
|
:background rgb(255,0,0)
|
58
60
|
:height 2px
|
59
61
|
:margin 2px 0
|
62
|
+
|
63
|
+
.params
|
64
|
+
:padding 5px
|
65
|
+
:top 0px
|
66
|
+
:font-size 12px
|
67
|
+
.key
|
68
|
+
:color rgb(160,160,160)
|
69
|
+
.value
|
70
|
+
:margin
|
71
|
+
:left 5px
|
72
|
+
:right 10px
|
73
|
+
.string
|
74
|
+
:color rgb(0,200,100)
|
75
|
+
.number
|
76
|
+
:color rgb(0,100,200)
|
77
|
+
.boolean
|
78
|
+
:color rgb(200,200,0)
|
79
|
+
|
80
|
+
|
81
|
+
body.pretty_params
|
82
|
+
.open
|
83
|
+
.params
|
84
|
+
.param
|
85
|
+
:display block
|
86
|
+
//:display table
|
87
|
+
//:border-collapse collapse
|
88
|
+
//:border none
|
89
|
+
//.param
|
90
|
+
//:display table-row
|
91
|
+
//span
|
92
|
+
//:display table-cell
|
93
|
+
//.key, .colon
|
94
|
+
//:width 1%
|
@@ -28,7 +28,10 @@ class Rubyception::Entry
|
|
28
28
|
self.error = payload[:exception].present?
|
29
29
|
self.duration = event.duration.to_f.round(2)
|
30
30
|
self.id = event.transaction_id
|
31
|
-
|
31
|
+
params = payload[:params]
|
32
|
+
params.delete 'controller'
|
33
|
+
params.delete 'action'
|
34
|
+
self.params = params
|
32
35
|
self.start_time = event.time.to_s :entry
|
33
36
|
self.end_time = event.end.to_s :entry
|
34
37
|
end
|
@@ -83,6 +86,7 @@ class Rubyception::Entry
|
|
83
86
|
|
84
87
|
def to_json
|
85
88
|
methods = %w{controller
|
89
|
+
params
|
86
90
|
action
|
87
91
|
path
|
88
92
|
method
|
data/config/templating.yml
CHANGED
data/lib/rubyception/version.rb
CHANGED
@@ -20,6 +20,9 @@ class Rubyception::WebsocketServer
|
|
20
20
|
options = {
|
21
21
|
host: '0.0.0.0',
|
22
22
|
port: 3030 }
|
23
|
+
while defined?(Thin) && !EventMachine.reactor_running?
|
24
|
+
sleep 1
|
25
|
+
end
|
23
26
|
EventMachine::WebSocket.start(options) do |ws|
|
24
27
|
ws.onopen do
|
25
28
|
Rubyception::WebsocketServer.sockets << ws
|
data/test/dummy/config/routes.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rubyception
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
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-08-
|
12
|
+
date: 2012-08-09 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rails
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,15 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
25
30
|
- !ruby/object:Gem::Dependency
|
26
31
|
name: haml
|
27
|
-
requirement:
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
28
33
|
none: false
|
29
34
|
requirements:
|
30
35
|
- - ! '>='
|
@@ -32,10 +37,15 @@ dependencies:
|
|
32
37
|
version: '0'
|
33
38
|
type: :runtime
|
34
39
|
prerelease: false
|
35
|
-
version_requirements:
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
36
46
|
- !ruby/object:Gem::Dependency
|
37
47
|
name: sass
|
38
|
-
requirement:
|
48
|
+
requirement: !ruby/object:Gem::Requirement
|
39
49
|
none: false
|
40
50
|
requirements:
|
41
51
|
- - ! '>='
|
@@ -43,10 +53,15 @@ dependencies:
|
|
43
53
|
version: '0'
|
44
54
|
type: :runtime
|
45
55
|
prerelease: false
|
46
|
-
version_requirements:
|
56
|
+
version_requirements: !ruby/object:Gem::Requirement
|
57
|
+
none: false
|
58
|
+
requirements:
|
59
|
+
- - ! '>='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
47
62
|
- !ruby/object:Gem::Dependency
|
48
63
|
name: jenny
|
49
|
-
requirement:
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
50
65
|
none: false
|
51
66
|
requirements:
|
52
67
|
- - ! '>='
|
@@ -54,10 +69,15 @@ dependencies:
|
|
54
69
|
version: '0'
|
55
70
|
type: :runtime
|
56
71
|
prerelease: false
|
57
|
-
version_requirements:
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
58
78
|
- !ruby/object:Gem::Dependency
|
59
79
|
name: em-websocket
|
60
|
-
requirement:
|
80
|
+
requirement: !ruby/object:Gem::Requirement
|
61
81
|
none: false
|
62
82
|
requirements:
|
63
83
|
- - ! '>='
|
@@ -65,10 +85,15 @@ dependencies:
|
|
65
85
|
version: '0'
|
66
86
|
type: :runtime
|
67
87
|
prerelease: false
|
68
|
-
version_requirements:
|
88
|
+
version_requirements: !ruby/object:Gem::Requirement
|
89
|
+
none: false
|
90
|
+
requirements:
|
91
|
+
- - ! '>='
|
92
|
+
- !ruby/object:Gem::Version
|
93
|
+
version: '0'
|
69
94
|
- !ruby/object:Gem::Dependency
|
70
95
|
name: compass
|
71
|
-
requirement:
|
96
|
+
requirement: !ruby/object:Gem::Requirement
|
72
97
|
none: false
|
73
98
|
requirements:
|
74
99
|
- - ! '>='
|
@@ -76,10 +101,15 @@ dependencies:
|
|
76
101
|
version: '0'
|
77
102
|
type: :runtime
|
78
103
|
prerelease: false
|
79
|
-
version_requirements:
|
104
|
+
version_requirements: !ruby/object:Gem::Requirement
|
105
|
+
none: false
|
106
|
+
requirements:
|
107
|
+
- - ! '>='
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '0'
|
80
110
|
- !ruby/object:Gem::Dependency
|
81
111
|
name: coffee-script
|
82
|
-
requirement:
|
112
|
+
requirement: !ruby/object:Gem::Requirement
|
83
113
|
none: false
|
84
114
|
requirements:
|
85
115
|
- - ! '>='
|
@@ -87,10 +117,15 @@ dependencies:
|
|
87
117
|
version: '0'
|
88
118
|
type: :runtime
|
89
119
|
prerelease: false
|
90
|
-
version_requirements:
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
none: false
|
122
|
+
requirements:
|
123
|
+
- - ! '>='
|
124
|
+
- !ruby/object:Gem::Version
|
125
|
+
version: '0'
|
91
126
|
- !ruby/object:Gem::Dependency
|
92
127
|
name: sqlite3
|
93
|
-
requirement:
|
128
|
+
requirement: !ruby/object:Gem::Requirement
|
94
129
|
none: false
|
95
130
|
requirements:
|
96
131
|
- - ! '>='
|
@@ -98,7 +133,12 @@ dependencies:
|
|
98
133
|
version: '0'
|
99
134
|
type: :development
|
100
135
|
prerelease: false
|
101
|
-
version_requirements:
|
136
|
+
version_requirements: !ruby/object:Gem::Requirement
|
137
|
+
none: false
|
138
|
+
requirements:
|
139
|
+
- - ! '>='
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: '0'
|
102
142
|
description: Realtime Rails log in your browser. For Rails 3.1+
|
103
143
|
email:
|
104
144
|
- tyeshavik@gmail.com
|
@@ -111,6 +151,7 @@ files:
|
|
111
151
|
- app/assets/javascripts/rubyception/application.js
|
112
152
|
- app/assets/javascripts/rubyception/collections/backtrace_lines.coffee
|
113
153
|
- app/assets/javascripts/rubyception/collections/entries.coffee
|
154
|
+
- app/assets/javascripts/rubyception/collections/filter_actions.coffee
|
114
155
|
- app/assets/javascripts/rubyception/collections/lines.coffee
|
115
156
|
- app/assets/javascripts/rubyception/init.coffee
|
116
157
|
- app/assets/javascripts/rubyception/lib/backbone.js
|
@@ -122,6 +163,7 @@ files:
|
|
122
163
|
- app/assets/javascripts/rubyception/lib/underscore-min.js
|
123
164
|
- app/assets/javascripts/rubyception/models/backtrace_line.coffee
|
124
165
|
- app/assets/javascripts/rubyception/models/entry.coffee
|
166
|
+
- app/assets/javascripts/rubyception/models/filter_action.coffee
|
125
167
|
- app/assets/javascripts/rubyception/models/line.coffee
|
126
168
|
- app/assets/javascripts/rubyception/routers/log.coffee
|
127
169
|
- app/assets/javascripts/rubyception/shBrushSql.js
|
@@ -134,6 +176,10 @@ files:
|
|
134
176
|
- app/assets/javascripts/rubyception/views/lines/index.coffee
|
135
177
|
- app/assets/javascripts/rubyception/views/lines/line.coffee
|
136
178
|
- app/assets/javascripts/rubyception/views/logs/show.coffee
|
179
|
+
- app/assets/javascripts/rubyception/views/shared/filter_action.coffee
|
180
|
+
- app/assets/javascripts/rubyception/views/shared/filter_controller.coffee
|
181
|
+
- app/assets/javascripts/rubyception/views/shared/filters.coffee
|
182
|
+
- app/assets/javascripts/rubyception/views/shared/filters_actions.coffee
|
137
183
|
- app/assets/stylesheets/rubyception/application.sass
|
138
184
|
- app/assets/stylesheets/rubyception/backtrace_lines.sass
|
139
185
|
- app/assets/stylesheets/rubyception/default.sass
|
@@ -179,6 +225,8 @@ files:
|
|
179
225
|
- app/views/rubyception/lines/active_support/_cache_generate.haml
|
180
226
|
- app/views/rubyception/lines/active_support/_cache_read.haml
|
181
227
|
- app/views/rubyception/lines/active_support/_cache_write.haml
|
228
|
+
- app/views/rubyception/shared/_filter_action.haml
|
229
|
+
- app/views/rubyception/shared/_filter_controller.haml
|
182
230
|
- config/initializers/sass.rb
|
183
231
|
- config/initializers/websocket_server.rb
|
184
232
|
- config/routes.rb
|
@@ -352,7 +400,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
352
400
|
version: '0'
|
353
401
|
requirements: []
|
354
402
|
rubyforge_project:
|
355
|
-
rubygems_version: 1.8.
|
403
|
+
rubygems_version: 1.8.24
|
356
404
|
signing_key:
|
357
405
|
specification_version: 3
|
358
406
|
summary: Realtime Rails log in your browser
|