better_rails_debugger 0.0.4 → 0.1.1

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: 8db111d53acaca8f9189541d980913115548ad5d
4
- data.tar.gz: 3019083b26fc20710e60f1e117c24ed8ab11fb36
3
+ metadata.gz: df5a043634855d9b65b83b88acc03be073cfb332
4
+ data.tar.gz: 3faf19fa8112b878dfa0e8581cd7e55164ffd1a4
5
5
  SHA512:
6
- metadata.gz: e2cd39a23ed59ad9287721aba2d9df1aac1848939ce417626f7fa39447846218140359a294d858c510806cffb0c976c183af409d23fc733cba50539be6983702
7
- data.tar.gz: 64c5dfab31505814a7ecfa858b662da32fa23620e0c8b857aa35a4065252270be67e4b82bc05f8a6f4fc5ce7470134aed7b004ffda5cfd8f38b9fa97dbe0d69f
6
+ metadata.gz: fa232ee5c81f0a4a8c9b8f5f29f1c22c0641a89ede2c6b52bc7a7490c4efd120b9807b276dce4448c968b273192cf25cedbbfd41f478f891d9797ece3488692b
7
+ data.tar.gz: 8e3b3231772ddcf096b1bb3d6daec4cd461c055c872be21e8b5f67123ed15144a408ffdf0ed0fda9666abdc11d131c9f90bc8f8c219084cdc75699252cf8ee41
@@ -71,7 +71,6 @@ module BetterRailsDebugger
71
71
  {source_line: /.*#{params[:filter]}.*/i},
72
72
  {memsize: /.*#{params[:filter]}.*/i},
73
73
  {class_name: /.*#{params[:filter]}.*/i})
74
- pp @objects
75
74
  end
76
75
  end
77
76
 
@@ -88,7 +87,6 @@ module BetterRailsDebugger
88
87
  {source_line: /.*#{params[:filter]}.*/i},
89
88
  {memsize: /.*#{params[:filter]}.*/i},
90
89
  {class_name: /.*#{params[:filter]}.*/i})
91
- pp @objects
92
90
  end
93
91
  end
94
92
  end
@@ -0,0 +1,9 @@
1
+ module BetterRailsDebugger
2
+ class CodeAnalizerJob < ApplicationJob
3
+ queue_as :default
4
+
5
+ def perform(*args)
6
+ # Do something later
7
+ end
8
+ end
9
+ end
@@ -35,13 +35,10 @@ module BetterRailsDebugger
35
35
  end
36
36
 
37
37
  record_objects_in.to_s.split(/\n/).each do |line|
38
- pp 'Line', line
39
38
  line = line.strip
40
39
  # Check if file exist
41
40
  if File.exist? line
42
- pp 'File exist'
43
41
  if File.directory? line
44
- pp 'File is a dir'
45
42
  analise_paths << /#{line}.*/
46
43
  elsif File.file? line
47
44
  analise_paths << /#{line}$/
@@ -0,0 +1,6 @@
1
+ require "better_rails_debugger/parser/base"
2
+ require "better_rails_debugger/parser/ruby/context_runner"
3
+ require "better_rails_debugger/parser/ruby/processor"
4
+ require "better_rails_debugger/parser/ruby/extension"
5
+ require "better_rails_debugger/parser/ruby/parser"
6
+ require "better_rails_debugger/parser/analyzer"
@@ -0,0 +1,42 @@
1
+ # Include all language parsers here
2
+ module BetterRailsDebugger::Parser
3
+ class Analyzer
4
+ def initialize(path, options)
5
+ @path = path
6
+ @options = options
7
+ end
8
+
9
+ def self.analise(path, options)
10
+ self.new(path, options).run
11
+ end
12
+
13
+ def run
14
+ # Check if file exist or not
15
+ raise ArgumentError.new "File #{@path} does not exist" if !File.exist? @path
16
+ # Detect lang by file ext
17
+ lang = get_lang_from_path
18
+ raise ArgumentError.new "Sorry, we do not support that language" if lang != 'ruby' # Only ruby by the moment
19
+ # Create lang instance with options
20
+ lang_instance = get_lang_instance lang
21
+ # parse
22
+ end
23
+
24
+ # get file ext and return language as 'ruby', 'javascript', 'php' or nil if unknown
25
+ def get_lang_from_path
26
+ case File.extname(@path).downcase
27
+ when '.rb'
28
+ 'ruby'
29
+ when '.js'
30
+ 'javascript'
31
+ when '.php'
32
+ 'php'
33
+ else
34
+ nil
35
+ end
36
+ end
37
+
38
+ def get_lang_instance(lang)
39
+ "BetterRailsDebugger::#{lang.classify}::Parser".constantize.new @path, @options
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,11 @@
1
+ module BetterRailsDebugger::Parser
2
+ class Base
3
+ def initialize(path, options)
4
+ @path, @options = path, options
5
+ end
6
+
7
+ def analise
8
+ raise NotImplementedError
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,281 @@
1
+ module BetterRailsDebugger::Parser::Ruby
2
+ module ProcessorExtension
3
+ def get_full_context_name(node)
4
+ if node.type.to_s == 'class'
5
+ get_full_class_name node
6
+ elsif node.type.to_s == 'module'
7
+ module_t, _ = *node
8
+ super_module, module_name = *module_t
9
+ if super_module.present?
10
+ "#{super_module.to_sexp_array[2]}::#{module_name}"
11
+ else
12
+ module_name
13
+ end
14
+ elsif node.type.to_s == 'const'
15
+ pre, name = *node
16
+ if pre.present?
17
+ "#{get_full_context_name pre}::#{name}"
18
+ else
19
+ name.to_s
20
+ end
21
+ # send are superclass
22
+ elsif node.type.to_s == 'send'
23
+ n, name, extra = *node
24
+ if extra
25
+ "#{name}::#{get_full_context_name(extra)}"
26
+ else
27
+ name.to_s
28
+ end
29
+ elsif node.type.to_s == 'sym'
30
+ name = *node
31
+ name.first.to_s
32
+ end
33
+ end
34
+
35
+ def get_full_class_name(node)
36
+ klass, superclass, _ = *node
37
+
38
+ klass_name = klass.to_sexp_array[2].to_s
39
+
40
+ # Base case
41
+ return klass_name unless klass.to_sexp_array[1].present?
42
+ "#{get_full_context_name(superclass)}::#{klass_name}"
43
+ end
44
+
45
+ def params_to_hash(node)
46
+ args = *node
47
+ args.map do |arg|
48
+ type, value = arg.type, *arg
49
+ if type == :optarg
50
+ [type, value, arg.to_sexp_array[2]]
51
+ else
52
+ [type, value]
53
+ end
54
+
55
+ end
56
+ end
57
+ end
58
+ Processor.include ProcessorExtension
59
+
60
+ module ContextRunnerExtension
61
+
62
+ def current_context
63
+ _context = get 'context'
64
+ if !_context
65
+ _context = Hash.new
66
+ end
67
+ _context['current'] ||= []
68
+ end
69
+
70
+ def push_context(value)
71
+ _context = get 'context'
72
+ if !_context
73
+ _context = Hash.new
74
+ end
75
+ _context['current'] ||= []
76
+ _context['current'] << value
77
+
78
+ set 'context', _context
79
+ end
80
+
81
+ def pop_context
82
+ _context = get 'context'
83
+ if !_context
84
+ _context = Hash.new
85
+ set 'context', _context
86
+ end
87
+
88
+ # get basic information
89
+ _context['current'] ||= []
90
+ _context['current'].pop
91
+ set 'context', _context
92
+ end
93
+ end
94
+
95
+ ContextRunner.include ContextRunnerExtension
96
+
97
+ class ContextDefiner < Extension
98
+ position 100
99
+ def setup
100
+ # Module
101
+ processor.subscribe_signal :begin_module do
102
+ full_name = processor.get_full_context_name(node)
103
+ full_name.split('::').each do |name|
104
+ push_context name
105
+ end
106
+ end
107
+
108
+ processor.subscribe_signal :end_module do
109
+ full_name = processor.get_full_context_name(node)
110
+ full_name.split('::').size.times do
111
+ pop_context
112
+ end
113
+ end
114
+
115
+ # CLASS
116
+ processor.subscribe_signal :begin_class do
117
+ klass, superclass, _ = *node
118
+
119
+ full_name = processor.get_full_context_name(klass)
120
+
121
+ # get basic information
122
+ before_context = (current_context || []).join('::')
123
+ if full_name['::'].present?
124
+ complete_current_context = "#{before_context}::#{full_name}"
125
+ else
126
+ complete_current_context = full_name
127
+ end
128
+
129
+ class_info = (get complete_current_context) || HashWithIndifferentAccess.new
130
+ class_info[:type] = 'class'
131
+ class_info[:full_type] = 'class'
132
+ class_info[:location] = klass.loc
133
+
134
+ # Detect superclass
135
+ class_info[:superclass] = processor.get_full_context_name superclass
136
+ full_name.split('::').each do |name|
137
+ push_context name
138
+ end
139
+ set complete_current_context, class_info
140
+ end
141
+
142
+ processor.subscribe_signal :end_class do
143
+ full_name = processor.get_full_context_name(node)
144
+ full_name.split('::').size.times do
145
+ pop_context
146
+ end
147
+ end
148
+
149
+ # SELF CLASS(class << self; end)
150
+ processor.subscribe_signal :begin_sclass do
151
+ # get basic information
152
+ before_context = current_context.join('::')
153
+ # set current context and information about it
154
+ push_context 'self'
155
+ if before_context.present?
156
+ complete_current_context = "#{before_context}::self"
157
+ else
158
+ complete_current_context = 'self'
159
+ end
160
+ class_info = (get complete_current_context) || HashWithIndifferentAccess.new
161
+ class_info[:type] = 'class'
162
+ class_info[:full_type] = 'sclass'
163
+ class_info[:location] = node.loc
164
+
165
+ set complete_current_context, class_info
166
+ end
167
+
168
+ processor.subscribe_signal :end_sclass do
169
+ pop_context
170
+ end
171
+
172
+ # def
173
+ processor.subscribe_signal :begin_def do
174
+ name, args, _ = *node
175
+
176
+ # Class or module method
177
+ if current_context.present?
178
+ method_context = current_context.join('::')
179
+ info = (get method_context) || HashWithIndifferentAccess.new
180
+ info[:methods] ||= HashWithIndifferentAccess.new
181
+ info[:methods][name] ||= HashWithIndifferentAccess.new
182
+ info[:methods][name][:location] = node.loc
183
+ info[:methods][name][:arguments] = processor.params_to_hash(args)
184
+ else # Global methods
185
+ method_context = "##{name}"
186
+
187
+ info = HashWithIndifferentAccess.new
188
+ info[:location] = node.loc
189
+ info[:arguments] = processor.params_to_hash(args)
190
+
191
+ set method_context, info
192
+ end
193
+ # set current context and information about it
194
+ push_context "##{name}"
195
+ end
196
+
197
+ processor.subscribe_signal :end_def do
198
+ pop_context
199
+ end
200
+
201
+ # defs (def self.method_name)
202
+ processor.subscribe_signal :begin_defs do
203
+ _, name, _, args= *node
204
+
205
+ # Class or module method
206
+ if current_context.present?
207
+ # Push the method inside self definition, this is MyClass::Self methods => []
208
+ method_context = current_context.join('::') + '::self'
209
+ info = (get method_context) || HashWithIndifferentAccess.new
210
+ info[:methods] ||= HashWithIndifferentAccess.new
211
+ info[:methods][name] ||= HashWithIndifferentAccess.new
212
+ info[:methods][name][:location] = node.loc
213
+
214
+ info[:methods][name][:arguments] = processor.params_to_hash(args)
215
+ else # Global methods
216
+ method_context = "##{name}"
217
+
218
+ info = HashWithIndifferentAccess.new
219
+ info[:location] = node.loc
220
+ info[:arguments] = processor.params_to_hash(args)
221
+
222
+ set method_context, info
223
+ end
224
+ # set current context and information about it
225
+ push_context 'self'
226
+ push_context "##{name}"
227
+ end
228
+
229
+ processor.subscribe_signal :end_defs do
230
+ pop_context # method name
231
+ pop_context # self
232
+ end
233
+
234
+ # block (like map, each lambda or any other block param)
235
+ # Context format $block#<method name, like each, map or lambda>
236
+ processor.subscribe_signal :begin_block do
237
+ method, _, _ = *node
238
+ push_context "$block##{method.to_sexp_array[2]}"
239
+ end
240
+
241
+ processor.subscribe_signal :end_block do
242
+ pop_context
243
+ end
244
+
245
+ # lambda (TODO)
246
+ processor.subscribe_signal :begin_lambda do
247
+ end
248
+
249
+ processor.subscribe_signal :end_lambda do
250
+ end
251
+
252
+ # while
253
+ processor.subscribe_signal :begin_while do
254
+ push_context '$while'
255
+ end
256
+
257
+ processor.subscribe_signal :end_while do
258
+ pop_context
259
+ end
260
+
261
+ # until
262
+ processor.subscribe_signal :begin_until do
263
+ push_context '$until'
264
+ end
265
+
266
+ processor.subscribe_signal :end_until do
267
+ pop_context
268
+ end
269
+
270
+ # for
271
+ processor.subscribe_signal :begin_for do
272
+ push_context '$for'
273
+ end
274
+
275
+ processor.subscribe_signal :end_for do
276
+ pop_context
277
+ end
278
+
279
+ end
280
+ end
281
+ end
@@ -0,0 +1,16 @@
1
+ module BetterRailsDebugger::Parser::Ruby
2
+ class ContextRunner
3
+ attr_accessor :node, :processor
4
+ def initialize(_processor)
5
+ @processor = _processor
6
+ end
7
+
8
+ def set(key, value)
9
+ @processor.information[key] = value
10
+ end
11
+
12
+ def get(key)
13
+ @processor.information[key]
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,50 @@
1
+ module BetterRailsDebugger::Parser::Ruby
2
+ class Extension
3
+ @@classes = Hash.new(ActiveSupport::HashWithIndifferentAccess.new)
4
+ # Define the position of the extension. The position define when should be executed, if for example we have Ext1 and
5
+ # Ext2, with position 2 and 1, then Ext2 it's going to be executed before Ext1. This is useful for an extension that
6
+ # depends of another one
7
+ def self.position(position)
8
+ # TODO: Allow to set position before another extension of after that one
9
+ raise ArgumentError.new "Expected Integer or Float" unless position.kind_of? Integer or position.kind_of? Float
10
+ @@classes[self.class][:position] = position
11
+ end
12
+
13
+ # Define the name of the extension.
14
+ def self.name(extension_name)
15
+ raise ArgumentError.new "Argument must define to_s method" unless extension_name.respond_to? :to_s
16
+ @@classes[self.class][:name] = extension_name.to_s
17
+ end
18
+
19
+ def self.config_for(klass)
20
+ @@classes[klass]
21
+ end
22
+
23
+ def self.sorted_extensions
24
+ ::BetterRailsDebugger::Parser::Ruby::Extension.descendants.sort_by do |klass|
25
+ config = config_for klass
26
+ # Classes without position goes at bottom
27
+ config[:position] || Float::INFINITY
28
+ end
29
+ end
30
+
31
+ def initialize(processor)
32
+ @processor = processor
33
+ end
34
+
35
+ def setup
36
+
37
+ end
38
+
39
+ def run()
40
+ raise ScriptError.new "Please, define run method"
41
+ end
42
+
43
+ private
44
+
45
+ def processor
46
+ @processor
47
+ end
48
+ end
49
+ end
50
+ require_relative 'basic_extensions/context_definer'
@@ -0,0 +1,5 @@
1
+ module BetterRailsDebugger::Parser::Ruby
2
+ class Extension
3
+
4
+ end
5
+ end
@@ -0,0 +1,26 @@
1
+ require 'parser/current'
2
+ module BetterRailsDebugger::Parser::Ruby
3
+ class Parser < BetterRailsDebugger::Parser::Base
4
+ def analise
5
+ # Use some setting to select ruby version
6
+ @node_tree = ::Parser::CurrentRuby.parse(File.read(@path)).to_sexp_array
7
+ @status = ContextRunner.new
8
+ @klasses = Extension.sorted_extensions
9
+ analise_node_tree(@node_tree)
10
+ end
11
+
12
+ def analise_node_tree(tree)
13
+ add_context
14
+ tree.each do |node_item|
15
+ if node_item.kind_of? Array
16
+ analise_node_tree node_item
17
+ else
18
+ push_to_context node_item
19
+ @klasses.each do |klass|
20
+ klass.run node_item, @status
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,81 @@
1
+ module BetterRailsDebugger::Parser::Ruby
2
+ class Processor < ::Parser::AST::Processor
3
+ attr_reader :information
4
+ def initialize
5
+ @information = ActiveSupport::HashWithIndifferentAccess.new
6
+ end
7
+ # Call all subscriptions for the given signal
8
+ # @param signal_name Symbol
9
+ # @param args Hash
10
+ def emit_signal(signal_name, node)
11
+ @subscriptions ||= Hash.new()
12
+ @runner ||= BetterRailsDebugger::Parser::Ruby::ContextRunner.new self
13
+ (@subscriptions[signal_name] || {}).values.each do |block|
14
+ @runner.node = node
15
+ @runner.instance_eval &block
16
+ # block.call(node)
17
+ end
18
+ end
19
+
20
+ # Subscribe to a particular signal
21
+ # @param signal_name Symbol
22
+ # @param block Proc
23
+ def subscribe_signal(signal_name, &block)
24
+ key = SecureRandom.hex(5)
25
+ @subscriptions ||= Hash.new()
26
+ @subscriptions[signal_name] ||= Hash.new
27
+ @subscriptions[signal_name][key] = block
28
+ key
29
+ end
30
+
31
+ def unsubscribe(signal_name, hash)
32
+ @subscriptions ||= Hash.new()
33
+ @subscriptions[signal_name] ||= Hash.new
34
+ @subscriptions[signal_name].delete hash
35
+ end
36
+
37
+ def cleanup_subscriptions
38
+ @subscriptions = Hash.new()
39
+ end
40
+
41
+ def setup
42
+ (@extensions = ::BetterRailsDebugger::Parser::Ruby::Extension.sorted_extensions).map do |klass|
43
+ instance = klass.new self
44
+ instance.setup
45
+ instance
46
+ end
47
+ end
48
+
49
+ # ON Methods
50
+ #https://github.com/whitequark/parser/blob/7d72eba571b8684ff452dd9c1885ea8c43698442/lib/parser/ast/processor.rb
51
+
52
+ [:on_dstr, :on_dsym, :on_regexp, :on_xstr, :on_splat, :on_array, :on_pair, :on_hash, :on_irange, :on_erange, :on_var,
53
+ :on_lvar, :on_ivar, :on_gvar, :on_cvar, :on_back_ref, :on_nth_ref, :on_vasgn, :on_lvasgn, :on_ivasgn, :on_gvasgn,
54
+ :on_cvasgn, :on_and_asgn, :on_or_asgn, :on_op_asgn, :on_mlhs, :on_masgn, :on_const, :on_casgn, :on_args, :on_argument,
55
+ :on_arg, :on_optarg, :on_restarg, :on_blockarg, :on_shadowarg, :on_kwarg, :on_kwoptarg, :on_kwrestarg, :on_procarg0,
56
+ :on_arg_expr, :on_restarg_expr, :on_blockarg_expr, :on_block_pass, :on_undef, :on_alias, :on_send, :on_csend,
57
+ :on_index, :on_indexasgn, :on_return, :on_break, :on_next, :on_redo, :on_retry, :on_super, :on_yield, :on_defined?,
58
+ :on_not, :on_and, :on_or, :on_if, :on_when, :on_case, :on_iflipflop, :on_eflipflop, :on_match_current_line,
59
+ :on_match_with_lvasgn, :on_preexe, :on_postexe
60
+ ].each do |method|
61
+ define_method method do |node|
62
+ emit_signal method.to_s.gsub('on_', '').to_sym, node
63
+ emit_signal :all, node
64
+ super node
65
+ end
66
+ end
67
+
68
+ # signals where the node contains body, like methods, classes or modules
69
+ [:on_module, :on_class, :on_sclass, :on_def, :on_defs, :on_block, :on_lambda, :on_while, :on_while_post, :on_until,
70
+ :on_until_post, :on_for, :on_resbody, :on_rescue, :on_ensure, :on_begin, :on_kwbegin].each do |method|
71
+ define_method method do |node|
72
+ emit_signal "begin_#{method.to_s.gsub('on_', '')}".to_sym, node
73
+ emit_signal :begin_all, node
74
+ result = super node
75
+ emit_signal "end_#{method.to_s.gsub('on_', '')}".to_sym, node
76
+ emit_signal :end_all, node
77
+ result
78
+ end
79
+ end
80
+ end
81
+ end
@@ -1,3 +1,3 @@
1
1
  module BetterRailsDebugger
2
- VERSION = '0.0.4'
2
+ VERSION = '0.1.1'
3
3
  end
@@ -4,10 +4,11 @@ require "haml"
4
4
  require "will_paginate_mongoid"
5
5
  require "will_paginate-bootstrap4"
6
6
  require "font-awesome-rails"
7
+ require "parser/all"
7
8
 
8
9
  require "better_rails_debugger/config"
9
10
  require "better_rails_debugger/analyzer"
10
-
11
+ require "better_rails_debugger/parser/all"
11
12
  Haml.init_rails(binding)
12
13
 
13
14
  module BetterRailsDebugger
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: better_rails_debugger
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Andres Jose Borek
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-03-04 00:00:00.000000000 Z
11
+ date: 2018-04-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails
@@ -17,9 +17,6 @@ dependencies:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
19
  version: 5.1.5
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '6.0'
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
@@ -27,9 +24,6 @@ dependencies:
27
24
  - - "~>"
28
25
  - !ruby/object:Gem::Version
29
26
  version: 5.1.5
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '6.0'
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: haml-rails
35
29
  requirement: !ruby/object:Gem::Requirement
@@ -37,9 +31,6 @@ dependencies:
37
31
  - - "~>"
38
32
  - !ruby/object:Gem::Version
39
33
  version: '1.0'
40
- - - "<"
41
- - !ruby/object:Gem::Version
42
- version: '2.0'
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
@@ -47,9 +38,6 @@ dependencies:
47
38
  - - "~>"
48
39
  - !ruby/object:Gem::Version
49
40
  version: '1.0'
50
- - - "<"
51
- - !ruby/object:Gem::Version
52
- version: '2.0'
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: mongoid
55
43
  requirement: !ruby/object:Gem::Requirement
@@ -57,9 +45,6 @@ dependencies:
57
45
  - - ">="
58
46
  - !ruby/object:Gem::Version
59
47
  version: 7.0.0.beta
60
- - - "<"
61
- - !ruby/object:Gem::Version
62
- version: '8.0'
63
48
  type: :runtime
64
49
  prerelease: false
65
50
  version_requirements: !ruby/object:Gem::Requirement
@@ -67,9 +52,6 @@ dependencies:
67
52
  - - ">="
68
53
  - !ruby/object:Gem::Version
69
54
  version: 7.0.0.beta
70
- - - "<"
71
- - !ruby/object:Gem::Version
72
- version: '8.0'
73
55
  - !ruby/object:Gem::Dependency
74
56
  name: will_paginate_mongoid
75
57
  requirement: !ruby/object:Gem::Requirement
@@ -112,6 +94,20 @@ dependencies:
112
94
  - - ">="
113
95
  - !ruby/object:Gem::Version
114
96
  version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: parser
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">"
102
+ - !ruby/object:Gem::Version
103
+ version: '2.5'
104
+ type: :runtime
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.5'
115
111
  - !ruby/object:Gem::Dependency
116
112
  name: sqlite3
117
113
  requirement: !ruby/object:Gem::Requirement
@@ -126,6 +122,20 @@ dependencies:
126
122
  - - ">="
127
123
  - !ruby/object:Gem::Version
128
124
  version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
129
139
  description: Better rails debugger can analyze memory issues only by the moment, but
130
140
  performance is planned.
131
141
  email:
@@ -181,6 +191,7 @@ files:
181
191
  - app/helpers/better_rails_debugger/memory_helper.rb
182
192
  - app/jobs/better_rails_debugger/analysis_recorder_job.rb
183
193
  - app/jobs/better_rails_debugger/application_job.rb
194
+ - app/jobs/better_rails_debugger/code_analizer_job.rb
184
195
  - app/mailers/better_rails_debugger/application_mailer.rb
185
196
  - app/models/better_rails_debugger/analysis_group.rb
186
197
  - app/models/better_rails_debugger/application_record.rb
@@ -210,6 +221,15 @@ files:
210
221
  - lib/better_rails_debugger/analyzer.rb
211
222
  - lib/better_rails_debugger/config.rb
212
223
  - lib/better_rails_debugger/engine.rb
224
+ - lib/better_rails_debugger/parser/all.rb
225
+ - lib/better_rails_debugger/parser/analyzer.rb
226
+ - lib/better_rails_debugger/parser/base.rb
227
+ - lib/better_rails_debugger/parser/ruby/basic_extensions/context_definer.rb
228
+ - lib/better_rails_debugger/parser/ruby/context_runner.rb
229
+ - lib/better_rails_debugger/parser/ruby/extension.rb
230
+ - lib/better_rails_debugger/parser/ruby/module_detector.rb
231
+ - lib/better_rails_debugger/parser/ruby/parser.rb
232
+ - lib/better_rails_debugger/parser/ruby/processor.rb
213
233
  - lib/better_rails_debugger/version.rb
214
234
  - lib/tasks/better_rails_debugger_tasks.rake
215
235
  homepage: ''