rbtrace 0.4.12 → 0.4.13

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.
Files changed (4) hide show
  1. checksums.yaml +4 -4
  2. data/ext/rbtrace.c +20 -8
  3. data/lib/rbtrace/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 90ef44223d9a9594cd447443fff128884825d19b5bb553ba3d4c2924df6c2da0
4
- data.tar.gz: a09e1b41bca4f998e47b7de04a711915440deb4bbc81007cbf27264dac9bfcbb
3
+ metadata.gz: 942f750987d2faf32e6d104d097bb8dfa68dda43644750259a1bc0d3a23a47d6
4
+ data.tar.gz: 1fb44c1bbf4936871cef319331d27f9743debe12d28ca05235fc1750e70aa261
5
5
  SHA512:
6
- metadata.gz: 828eead6b86f3b21b743b6391e69ae854bb19ba0b1a6e84258a9b67f2675036dd46a91b6178a622d7568466e480e858b519fa7aa9d099e3030470422a3fa706e
7
- data.tar.gz: b735bf29d7fb23d56a36a008df77d8ea23325fc0f1c9d0f16826941077000c11a25fa4e7b9b637cd7157e988bd2db5e0f5017ca53218a6b1b23bab8b7df4d46e
6
+ metadata.gz: df57be716aff5cc91cd2ce54e3bb55015b76a4390fe86b7f68b91a63794364387cd9edae630f6f83584c5288f8d2fcdd3a191c6c43e75a1cdabfb064ae5cd0be
7
+ data.tar.gz: 60cf530a8271c124dd1cd8df54761812e951aa9a722df89da12c5be163a87838b7fcce03b12244699df732424a5eeaf26e6ac80270f4afaa79f756875654521a
@@ -862,13 +862,11 @@ msgq_setup()
862
862
  #endif
863
863
  }
864
864
 
865
+ static VALUE rbtrace_module;
866
+
865
867
  static VALUE
866
868
  eval_inspect(VALUE rb_code) {
867
- VALUE binding, result;
868
-
869
- binding = rb_eval_string("$rbtrace_binding ||= binding");
870
- result = rb_funcall(binding, rb_intern("eval"), 1, rb_code);
871
- return rb_funcall(result, rb_intern("inspect"), 0);
869
+ return rb_funcall(rbtrace_module, rb_intern("eval_and_inspect"), 1, rb_code);
872
870
  }
873
871
 
874
872
  static VALUE
@@ -1028,7 +1026,7 @@ rbtrace__process_event(msgpack_object cmd)
1028
1026
  strncpy(query, str.ptr, str.size);
1029
1027
  query[str.size] = 0;
1030
1028
 
1031
- VALUE rb_code, binding;
1029
+ VALUE rb_code;
1032
1030
  rb_code = rb_str_new2(query);
1033
1031
 
1034
1032
  val = rb_rescue(eval_inspect, rb_code, rescue_inspect, Qnil);
@@ -1134,11 +1132,25 @@ send_write(VALUE klass, VALUE val) {
1134
1132
  void
1135
1133
  Init_rbtrace()
1136
1134
  {
1137
- VALUE mod = rb_define_module("RBTrace");
1138
- VALUE output = rb_define_module_under(mod, "OUT");
1135
+ rbtrace_module = rb_define_module("RBTrace");
1136
+ VALUE output = rb_define_module_under(rbtrace_module, "OUT");
1139
1137
 
1140
1138
  rb_define_singleton_method(output, "write", send_write, 1);
1141
1139
 
1140
+ rb_eval_string(
1141
+ "module RBTrace\n"
1142
+ " def self.eval_context\n"
1143
+ " @eval_context ||= binding\n"
1144
+ " end\n"
1145
+
1146
+ " def self.eval_and_inspect(code)\n"
1147
+ " t = Thread.new { Thread.current[:output] = eval_context.eval(code).inspect }\n"
1148
+ " t.join\n"
1149
+ " t[:output]\n"
1150
+ " end\n"
1151
+ "end\n"
1152
+ );
1153
+
1142
1154
  // hook into the gc
1143
1155
  gc_hook = Data_Wrap_Struct(rb_cObject, rbtrace_gc_mark, NULL, NULL);
1144
1156
  rb_global_variable(&gc_hook);
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class RBTracer
4
- VERSION = '0.4.12'
4
+ VERSION = '0.4.13'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rbtrace
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.12
4
+ version: 0.4.13
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aman Gupta
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-03-17 00:00:00.000000000 Z
11
+ date: 2020-05-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ffi