source_route 0.0.3 → 0.0.4

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: c9a1ba833697d52c2138c558b5c94ec6dec3516d
4
- data.tar.gz: 1635e5de83aaf367d91b9867c68b38fc269df07e
3
+ metadata.gz: 53b09f104ea2720d70ee2312d8233aeefbc5ea6c
4
+ data.tar.gz: 33f9ec189a6d23df94cd85bd27da378561ebda00
5
5
  SHA512:
6
- metadata.gz: cf1d68cce07fb6b22ba6e0a01b297ec383ae3bc82cd5ce98404207b649e0abaab1d5be2b491a59ad80f3c288cd1a2377fa0c816602c452239bc9142735d74be2
7
- data.tar.gz: cefc0e26d83f5f9488f203ff12d28224cd02d7473b6af0bc07db6596f8a5d6f1773f8d119ff6abb9ee94ad68f2d51e9bff8d6ddbb32eeb7bbeea16d350d660bf
6
+ metadata.gz: 64e04570f8a30d20631c86003bc3d311ac15f69a0e31d1b6e080220a553c1e8ad51699745fe4be6bf4f6c82f53266248ca78117e3f0f79da60effa506afdecaf
7
+ data.tar.gz: f1ba59748e527c875f5f4ac2b9a46cb3287f845f43ee62b38db9ad3cbf8f57ba89c08921c25e21ae53349fadaacd168ba0ec7d255431ac61f327483edfa1bbed
data/README.md CHANGED
@@ -22,7 +22,49 @@ Or install it yourself as:
22
22
 
23
23
  ## Usage
24
24
 
25
- SourceRoute.enable /ActiveRecord/
25
+ #### In irb or pry terminal
26
+
27
+ SourceRoute.trace output_format: :console, event: :c_call do
28
+ 'abc'.upcase
29
+ end
30
+
31
+ #### In rails console
32
+
33
+ SourceRoute.trace defined_class: 'ActiveRecord', output_format: html do
34
+ User.new
35
+ end
36
+
37
+ It will generate a html file, open it and you can get the trace of User.new
38
+
39
+ The intereting part is when you run the above command again(in same console),
40
+ you will get a different trace file.
41
+
42
+ #### In your ruby application
43
+
44
+ SourceRoute.enable :wanted_method_name
45
+ .... # here is your code
46
+ ....
47
+ # may be code this in another file
48
+ SourceRoute.build_html_output
49
+
50
+ Same as the previous example, you will get a html file showing the code trace.
51
+
52
+ #### In a small application, you may try this
53
+
54
+ SourceRoute.enable do
55
+ defined_class :wanted_class_name
56
+ output_format :console
57
+ end
58
+ .... # here is your code
59
+
60
+ It will output the trace when you run the application.
61
+
62
+ see more usage in examples.
63
+
64
+ ## Test
65
+
66
+ $ bundle install
67
+ $ rake
26
68
 
27
69
  ## Contributing
28
70
 
@@ -36,3 +78,5 @@ Or install it yourself as:
36
78
  ### TODO
37
79
 
38
80
  Add debug option to provider more verbose messages of what has happened
81
+
82
+ Support SourceRoute.enable :wanted_method_or_class, at now only SourceRoute.enable :wanted_method works
data/lib/source_route.rb CHANGED
@@ -36,6 +36,7 @@ module SourceRoute
36
36
 
37
37
  # Not implemented. used in irb or pry.
38
38
  def trace(opt, &block)
39
+ opt[:output_format] ||= :silence
39
40
  wrapper.reset
40
41
  opt.each do |k, v|
41
42
  wrapper.send(k, v)
@@ -24,7 +24,7 @@ html
24
24
  .top-header
25
25
  h4
26
26
  | Event:
27
- =< @conditions.event
27
+ =< @conditions.events
28
28
  .trace-flow
29
29
  .row
30
30
  .left-info.col-sm-4
@@ -63,10 +63,11 @@ html
63
63
  $scope.traces = angular.element("#trace-data").data('trace')
64
64
  // it is possible to prevent dirty check on definedClasses after it was generated
65
65
  $scope.definedClasses = _.uniq(_.map($scope.traces, 'defined_class'))
66
- $scope.definedClasses.unshift('ALL')
66
+ var all_counter = 'ALL ' + $scope.traces.length
67
+ $scope.definedClasses.unshift(all_counter)
67
68
 
68
69
  $scope.selectKlass = function(klass) {
69
- if (klass == 'ALL') {
70
+ if (klass == all_counter) {
70
71
  $scope.selectedKlass = undefined
71
72
  } else {
72
73
  $scope.selectedKlass = klass
@@ -2,9 +2,21 @@ module SourceRoute
2
2
 
3
3
  class TpResult
4
4
 
5
+ # see event description in TracePoint API Doc
5
6
  DEFAULT_ATTRS = {
6
7
  call: [:defined_class, :method_id],
7
- return: [:defined_class, :method_id, :return_value]
8
+ return: [:defined_class, :method_id, :return_value],
9
+ c_call: [:defined_class, :method_id],
10
+ line: [:path, :lineno],
11
+ # following are not tested yet
12
+ class: [:defined_class],
13
+ end: [:defined_class],
14
+ c_return: [:defined_class, :method_id, :return_value],
15
+ raise: [:raised_exception],
16
+ b_call: [:binding, :defined_class, :method_id],
17
+ b_return: [:binding, :defined_class, :method_id],
18
+ thread_begin: [:defined_class, :method_id],
19
+ thread_end: [:defined_class, :method_id]
8
20
  }
9
21
 
10
22
  def initialize(wrapper)
@@ -42,7 +54,7 @@ module SourceRoute
42
54
  when :html
43
55
  # I cant solve the problem: to generate html at the end,
44
56
  # I have to know when the application is end
45
- when :test
57
+ when :test, :silence
46
58
  # do nothing at now
47
59
  when Proc
48
60
  format.call(tp_ins)
@@ -1,3 +1,3 @@
1
1
  module SourceRoute
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.4"
3
3
  end
@@ -58,11 +58,11 @@ module SourceRoute
58
58
 
59
59
  TRACE_POINT_METHODS.each do |m|
60
60
  define_method m do |v|
61
- @conditions.positive[m] = v
61
+ @conditions.positive[m] = v.to_s
62
62
  end
63
63
 
64
64
  define_method "#{m}_not" do |v|
65
- @conditions.negative[m] = v
65
+ @conditions.negative[m] = v.to_s
66
66
  end
67
67
  end
68
68
 
data/source_route.gemspec CHANGED
@@ -21,8 +21,11 @@ Gem::Specification.new do |spec|
21
21
 
22
22
  spec.add_dependency 'awesome_print'
23
23
  spec.add_dependency 'colorize'
24
+ spec.add_dependency 'slim'
25
+
24
26
  spec.add_development_dependency "bundler", "~> 1.6"
25
27
  spec.add_development_dependency "rake"
26
- spec.add_development_dependency 'slim'
27
28
  spec.add_development_dependency 'minitest'
29
+ spec.add_development_dependency 'pry'
30
+ spec.add_development_dependency 'pry-byebug'
28
31
  end
data/test/wrapper_test.rb CHANGED
@@ -41,7 +41,7 @@ module SourceRoute
41
41
 
42
42
  def test_match_class_name
43
43
  @source_route = SourceRoute.enable do
44
- defined_class 'SampleApp'
44
+ defined_class :SampleApp
45
45
  end
46
46
 
47
47
  SampleApp.new.nonsense
@@ -82,6 +82,13 @@ module SourceRoute
82
82
  assert_includes paths.first, 'sample_app'
83
83
  end
84
84
 
85
+ def test_trace_with_c_call
86
+ SourceRoute.trace event: :c_call do
87
+ 'abc'.upcase
88
+ end
89
+ assert_equal 2, @wrapper.tp_attrs_results.size
90
+ end
91
+
85
92
  def test_trace_without_first_hash_option
86
93
  SourceRoute.trace output_format: :test do
87
94
  SampleApp.new.nonsense
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: source_route
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - raykin
@@ -38,6 +38,20 @@ dependencies:
38
38
  - - ">="
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: slim
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: bundler
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -67,7 +81,7 @@ dependencies:
67
81
  - !ruby/object:Gem::Version
68
82
  version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
- name: slim
84
+ name: minitest
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
87
  - - ">="
@@ -81,7 +95,21 @@ dependencies:
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
- name: minitest
98
+ name: pry
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: pry-byebug
85
113
  requirement: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - ">="