Hello community,

here is the log from the commit of package rubygem-bindex for openSUSE:Factory 
checked in at 2019-06-19 20:59:18
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory/rubygem-bindex (Old)
 and      /work/SRC/openSUSE:Factory/.rubygem-bindex.new.4811 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "rubygem-bindex"

Wed Jun 19 20:59:18 2019 rev:2 rq:705978 version:0.7.0

Changes:
--------
--- /work/SRC/openSUSE:Factory/rubygem-bindex/rubygem-bindex.changes    
2017-06-04 01:56:48.461810744 +0200
+++ /work/SRC/openSUSE:Factory/.rubygem-bindex.new.4811/rubygem-bindex.changes  
2019-06-19 20:59:18.974030311 +0200
@@ -1,0 +2,6 @@
+Sun May  5 09:19:35 UTC 2019 - Stephan Kulow <[email protected]>
+
+- updated to version 0.7.0
+  no changelog found
+
+-------------------------------------------------------------------

Old:
----
  bindex-0.5.0.gem

New:
----
  bindex-0.7.0.gem

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ rubygem-bindex.spec ++++++
--- /var/tmp/diff_new_pack.QZfLvb/_old  2019-06-19 20:59:19.526030805 +0200
+++ /var/tmp/diff_new_pack.QZfLvb/_new  2019-06-19 20:59:19.530030808 +0200
@@ -1,7 +1,7 @@
 #
 # spec file for package rubygem-bindex
 #
-# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
+# Copyright (c) 2019 SUSE LINUX GmbH, Nuernberg, Germany.
 #
 # All modifications and additions to the file contributed by third parties
 # remain the property of their copyright owners, unless otherwise agreed
@@ -12,7 +12,7 @@
 # license that conforms to the Open Source Definition (Version 1.9)
 # published by the Open Source Initiative.
 
-# Please submit bugfixes or comments via http://bugs.opensuse.org/
+# Please submit bugfixes or comments via https://bugs.opensuse.org/
 #
 
 
@@ -24,14 +24,14 @@
 #
 
 Name:           rubygem-bindex
-Version:        0.5.0
+Version:        0.7.0
 Release:        0
 %define mod_name bindex
 %define mod_full_name %{mod_name}-%{version}
 BuildRoot:      %{_tmppath}/%{name}-%{version}-build
-BuildRequires:  ruby-macros >= 5
 BuildRequires:  %{rubydevel >= 2.0.0}
 BuildRequires:  %{rubygem gem2rpm}
+BuildRequires:  ruby-macros >= 5
 Url:            https://github.com/gsamokovarov/bindex
 Source:         https://rubygems.org/gems/%{mod_full_name}.gem
 Source1:        gem2rpm.yml

++++++ bindex-0.5.0.gem -> bindex-0.7.0.gem ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/.travis.yml new/.travis.yml
--- old/.travis.yml     2017-03-20 12:22:18.000000000 +0100
+++ new/.travis.yml     2019-04-08 22:09:35.000000000 +0200
@@ -1,10 +1,6 @@
 language: ruby
 
 rvm:
-  - ruby-2.0.0-p648
-  - ruby-2.1.10
-  - ruby-2.1.0
-  - ruby-2.2.6
   - ruby-2.3.3
   - ruby-2.4.0
   - ruby-head
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/CONTRIBUTING.md new/CONTRIBUTING.md
--- old/CONTRIBUTING.md 2017-03-20 12:22:18.000000000 +0100
+++ new/CONTRIBUTING.md 2019-04-08 22:09:35.000000000 +0200
@@ -1,6 +1,6 @@
 # Contributing
 
-1. Fork it ( https://github.com/gsamokovarov/bindex/fork )
+1. Fork it ( https://github.com/gsamokovarov/skiptrace/fork )
 2. Create your feature branch (`git checkout -b my-new-feature`)
 3. Commit your changes (`git commit -am 'Add some feature'`)
 4. Push to the branch (`git push origin my-new-feature`)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Gemfile new/Gemfile
--- old/Gemfile 2017-03-20 12:22:18.000000000 +0100
+++ new/Gemfile 2019-04-08 22:09:35.000000000 +0200
@@ -1,6 +1,6 @@
 source 'https://rubygems.org'
 
-gemspec
+gemspec name: 'skiptrace'
 
 # Rubinius 2.2.2 travis tests complain about this one.
 platforms :rbx do
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/README.md new/README.md
--- old/README.md       2017-03-20 12:22:18.000000000 +0100
+++ new/README.md       2019-04-08 22:09:35.000000000 +0200
@@ -1,7 +1,7 @@
-# Bindex [![Build 
Status](https://travis-ci.org/gsamokovarov/bindex.svg?branch=master)](https://travis-ci.org/gsamokovarov/bindex)
+# Skiptrace [![Build 
Status](https://travis-ci.org/gsamokovarov/bindex.svg?branch=master)](https://travis-ci.org/gsamokovarov/bindex)
 
 When Ruby raises an exception, it leaves you a backtrace to help you figure out
-where did the exception originated in. Bindex gives you the bindings as well.
+where did the exception originated in. Skiptrace gives you the bindings as 
well.
 This can help you introspect the state of the Ruby program when at the point
 the exception occurred.
 
@@ -12,13 +12,13 @@
 
 ### API
 
-Bindex defines the following API:
+Skiptrace defines the following API:
 
 #### Exception#bindings
 
 Returns all the bindings up to the one in which the exception originated in.
 
-#### Bindex.current_bindings
+#### Skiptrace.current_bindings
 
 Returns all of the current Ruby execution state bindings. The first one is the
 current one, the second is the caller one, the third is the caller of the
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/Rakefile new/Rakefile
--- old/Rakefile        2017-03-20 12:22:18.000000000 +0100
+++ new/Rakefile        2019-04-08 22:09:35.000000000 +0200
@@ -1,5 +1,9 @@
-require 'bundler/gem_tasks'
 require 'rake/testtask'
+require "rake/clean"
+
+CLOBBER.include "pkg"
+
+Bundler::GemHelper.install_tasks name: ENV.fetch('GEM_NAME', 'skiptrace')
 
 Rake::TestTask.new do |t|
   t.libs << 'test'
@@ -11,18 +15,20 @@
 when 'ruby'
   require 'rake/extensiontask'
 
-  Rake::ExtensionTask.new('bindex') do |ext|
+  Rake::ExtensionTask.new('skiptrace') do |ext|
     ext.name = 'cruby'
-    ext.lib_dir = 'lib/bindex'
+    ext.lib_dir = 'lib/skiptrace'
   end
 
   task default: [:clean, :compile, :test]
 when 'jruby'
   require 'rake/javaextensiontask'
 
-  Rake::JavaExtensionTask.new('bindex') do |ext|
+  Rake::JavaExtensionTask.new('skiptrace') do |ext|
     ext.name = 'jruby_internals'
-    ext.lib_dir = 'lib/bindex'
+    ext.lib_dir = 'lib/skiptrace'
+    ext.source_version = '1.8'
+    ext.target_version = '1.8'
   end
 
   task default: [:clean, :compile, :test]
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/bindex.gemspec new/bindex.gemspec
--- old/bindex.gemspec  2017-03-20 12:22:18.000000000 +0100
+++ new/bindex.gemspec  2019-04-08 22:09:35.000000000 +0200
@@ -1,13 +1,13 @@
 $LOAD_PATH << File.expand_path('../lib', __FILE__)
 
-require 'bindex/version'
+require 'skiptrace/version'
 
 Gem::Specification.new do |spec|
   spec.name          = "bindex"
-  spec.version       = Bindex::VERSION
+  spec.version       = Skiptrace::VERSION
   spec.authors       = ["Genadi Samokovarov"]
   spec.email         = ["[email protected]"]
-  spec.extensions    = ["ext/bindex/extconf.rb"]
+  spec.extensions    = ["ext/skiptrace/extconf.rb"]
   spec.summary       = "Bindings for your Ruby exceptions"
   spec.homepage      = "https://github.com/gsamokovarov/bindex";
   spec.license       = "MIT"
@@ -18,7 +18,7 @@
   spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
   spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
   spec.require_paths = ["lib"]
-  spec.extensions    = ["ext/bindex/extconf.rb"]
+  spec.extensions    = ["ext/skiptrace/extconf.rb"]
 
   spec.add_development_dependency "minitest", "~> 5.4"
   spec.add_development_dependency "bundler"
Binary files old/checksums.yaml.gz and new/checksums.yaml.gz differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/BindingBuilder.java 
new/ext/bindex/com/gsamokovarov/bindex/BindingBuilder.java
--- old/ext/bindex/com/gsamokovarov/bindex/BindingBuilder.java  2017-03-20 
12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/BindingBuilder.java  1970-01-01 
01:00:00.000000000 +0100
@@ -1,13 +0,0 @@
-package com.gsamokovarov.bindex;
-
-import org.jruby.runtime.DynamicScope;
-import org.jruby.runtime.Binding;
-import org.jruby.runtime.Frame;
-import org.jruby.runtime.DynamicScope;
-import org.jruby.runtime.backtrace.BacktraceElement;
-
-class BindingBuilder {
-    public static Binding build(Frame frame, DynamicScope scope, 
BacktraceElement element) {
-        return new Binding(frame, scope, element.method, element.filename, 
element.line);
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/CurrentBindingsIterator.java 
new/ext/bindex/com/gsamokovarov/bindex/CurrentBindingsIterator.java
--- old/ext/bindex/com/gsamokovarov/bindex/CurrentBindingsIterator.java 
2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/CurrentBindingsIterator.java 
1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-package com.gsamokovarov.bindex;
-
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.DynamicScope;
-import org.jruby.runtime.Binding;
-import org.jruby.runtime.Frame;
-import org.jruby.runtime.DynamicScope;
-import org.jruby.runtime.backtrace.BacktraceElement;
-import java.util.Iterator;
-import java.util.NoSuchElementException;
-
-class CurrentBindingsIterator implements Iterator<Binding> {
-    private Frame[] frameStack;
-    private int frameIndex;
-
-    private DynamicScope[] scopeStack;
-    private int scopeIndex;
-
-    private BacktraceElement[] backtrace;
-    private int backtraceIndex;
-
-    CurrentBindingsIterator(ThreadContext context) {
-        ThreadContextInternals contextInternals = new 
ThreadContextInternals(context);
-
-        this.frameStack = contextInternals.getFrameStack();
-        this.frameIndex = contextInternals.getFrameIndex();
-
-        this.scopeStack = contextInternals.getScopeStack();
-        this.scopeIndex = contextInternals.getScopeIndex();
-
-        this.backtrace = contextInternals.getBacktrace();
-        this.backtraceIndex = contextInternals.getBacktraceIndex();
-    }
-
-    public boolean hasNext() {
-        return frameIndex >= 0 && scopeIndex >= 0 && backtraceIndex >= 0;
-    }
-
-    public Binding next() {
-        if (!hasNext()) {
-            throw new NoSuchElementException();
-        }
-
-        Frame frame = frameStack[frameIndex--];
-        DynamicScope scope = scopeStack[scopeIndex--];
-        BacktraceElement element = backtrace[backtraceIndex--];
-
-        return BindingBuilder.build(frame, scope, element);
-    }
-
-    public void remove() {
-        throw new UnsupportedOperationException();
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/JRubyIntegration.java 
new/ext/bindex/com/gsamokovarov/bindex/JRubyIntegration.java
--- old/ext/bindex/com/gsamokovarov/bindex/JRubyIntegration.java        
2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/JRubyIntegration.java        
1970-01-01 01:00:00.000000000 +0100
@@ -1,49 +0,0 @@
-package com.gsamokovarov.bindex;
-
-import org.jruby.Ruby;
-import org.jruby.RubyArray;
-import org.jruby.RubyModule;
-import org.jruby.RubyClass;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.runtime.builtin.InstanceVariables;
-import org.jruby.anno.JRubyMethod;
-
-public class JRubyIntegration {
-    public static void setup(Ruby runtime) {
-        RubyModule bindex = runtime.defineModule("Bindex");
-        bindex.defineAnnotatedMethods(BindexMethods.class);
-
-        RubyClass exception = runtime.getException();
-        exception.defineAnnotatedMethods(ExceptionExtensionMethods.class);
-
-        IRubyObject verbose = runtime.getVerbose();
-        try {
-            runtime.setVerbose(runtime.getNil());
-            runtime.addEventHook(new SetExceptionBindingsEventHook());
-        } finally {
-            runtime.setVerbose(verbose);
-        }
-    }
-
-    public static class BindexMethods {
-        @JRubyMethod(name = "current_bindings", meta = true)
-        public static IRubyObject currentBindings(ThreadContext context, 
IRubyObject self) {
-            return RubyBindingsCollector.collectCurrentFor(context);
-        }
-    }
-
-    public static class ExceptionExtensionMethods {
-        @JRubyMethod
-        public static IRubyObject bindings(ThreadContext context, IRubyObject 
self) {
-            InstanceVariables instanceVariables = self.getInstanceVariables();
-
-            IRubyObject bindings = 
instanceVariables.getInstanceVariable("@bindings");
-            if (bindings != null && !bindings.isNil()) {
-                return bindings;
-            }
-
-            return RubyArray.newArray(context.getRuntime());
-        }
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/RubyBindingsCollector.java 
new/ext/bindex/com/gsamokovarov/bindex/RubyBindingsCollector.java
--- old/ext/bindex/com/gsamokovarov/bindex/RubyBindingsCollector.java   
2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/RubyBindingsCollector.java   
1970-01-01 01:00:00.000000000 +0100
@@ -1,34 +0,0 @@
-package com.gsamokovarov.bindex;
-
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.Binding;
-import org.jruby.runtime.DynamicScope;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.RubyBinding;
-import org.jruby.RubyArray;
-import org.jruby.Ruby;
-import java.util.Iterator;
-
-public class RubyBindingsCollector {
-    private final Ruby runtime;
-    private Iterator<Binding> iterator;
-
-    public static RubyArray collectCurrentFor(ThreadContext context) {
-        return new RubyBindingsCollector(context).collectCurrent();
-    }
-
-    private RubyBindingsCollector(ThreadContext context) {
-        this.iterator = new CurrentBindingsIterator(context);
-        this.runtime = context.getRuntime();
-    }
-
-    private RubyArray collectCurrent() {
-        RubyArray bindings = RubyArray.newArray(runtime);
-
-        while (iterator.hasNext()) {
-            bindings.append(((IRubyObject) RubyBinding.newBinding(runtime, 
iterator.next())));
-        }
-
-        return bindings;
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/SetExceptionBindingsEventHook.java 
new/ext/bindex/com/gsamokovarov/bindex/SetExceptionBindingsEventHook.java
--- old/ext/bindex/com/gsamokovarov/bindex/SetExceptionBindingsEventHook.java   
2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/SetExceptionBindingsEventHook.java   
1970-01-01 01:00:00.000000000 +0100
@@ -1,24 +0,0 @@
-package com.gsamokovarov.bindex;
-
-import org.jruby.runtime.EventHook;
-import org.jruby.runtime.RubyEvent;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.builtin.IRubyObject;
-import org.jruby.RubyArray;
-import org.jruby.RubyException;
-
-public class SetExceptionBindingsEventHook extends EventHook {
-    public boolean isInterestedInEvent(RubyEvent event) {
-        return event == RubyEvent.RAISE;
-    }
-
-    public void eventHandler(ThreadContext context, String eventName, String 
file, int line, String name, IRubyObject type) {
-        RubyArray bindings = RubyBindingsCollector.collectCurrentFor(context);
-        RubyException exception = (RubyException) 
context.runtime.getGlobalVariables().get("$!");
-
-        IRubyObject exceptionBindings = 
exception.getInstanceVariable("@bindings");
-        if (exceptionBindings == null || exceptionBindings.isNil()) {
-            exception.setInstanceVariable("@bindings", bindings);
-        }
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/ThreadContextInterfaceException.java 
new/ext/bindex/com/gsamokovarov/bindex/ThreadContextInterfaceException.java
--- old/ext/bindex/com/gsamokovarov/bindex/ThreadContextInterfaceException.java 
2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/ThreadContextInterfaceException.java 
1970-01-01 01:00:00.000000000 +0100
@@ -1,14 +0,0 @@
-package com.gsamokovarov.bindex;
-
-class ThreadContextInterfaceException extends RuntimeException {
-    private static final String MESSAGE_TEMPLATE =
-        "Expected private field %s in ThreadContext is missing";
-
-    ThreadContextInterfaceException(String fieldName) {
-        super(String.format(MESSAGE_TEMPLATE, fieldName));
-    }
-
-    ThreadContextInterfaceException(String fieldName, Throwable cause) {
-        super(String.format(MESSAGE_TEMPLATE, fieldName), cause);
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/bindex/com/gsamokovarov/bindex/ThreadContextInternals.java 
new/ext/bindex/com/gsamokovarov/bindex/ThreadContextInternals.java
--- old/ext/bindex/com/gsamokovarov/bindex/ThreadContextInternals.java  
2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/com/gsamokovarov/bindex/ThreadContextInternals.java  
1970-01-01 01:00:00.000000000 +0100
@@ -1,54 +0,0 @@
-package com.gsamokovarov.bindex;
-
-import java.lang.reflect.Field;
-import org.jruby.runtime.ThreadContext;
-import org.jruby.runtime.DynamicScope;
-import org.jruby.runtime.Frame;
-import org.jruby.runtime.backtrace.BacktraceElement;
-import org.jruby.runtime.builtin.IRubyObject;
-
-public class ThreadContextInternals {
-    private ThreadContext context;
-
-    public ThreadContextInternals(ThreadContext context) {
-        this.context = context;
-    }
-
-    public Frame[] getFrameStack() {
-        return (Frame[]) getPrivateField("frameStack");
-    }
-
-    public int getFrameIndex() {
-        return (Integer) getPrivateField("frameIndex");
-    }
-
-    public DynamicScope[] getScopeStack() {
-        return (DynamicScope[]) getPrivateField("scopeStack");
-    }
-
-    public int getScopeIndex() {
-        return (Integer) getPrivateField("scopeIndex");
-    }
-
-    public BacktraceElement[] getBacktrace() {
-        return (BacktraceElement[]) getPrivateField("backtrace");
-    }
-
-    public int getBacktraceIndex() {
-        return (Integer) getPrivateField("backtraceIndex");
-    }
-
-    private Object getPrivateField(String fieldName) {
-        try {
-            Field field = ThreadContext.class.getDeclaredField(fieldName);
-
-            field.setAccessible(true);
-
-            return field.get(context);
-        } catch (NoSuchFieldException exc) {
-            throw new ThreadContextInterfaceException(fieldName, exc);
-        } catch (IllegalAccessException exc) {
-            throw new ThreadContextInterfaceException(fieldName, exc);
-        }
-    }
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/bindex/cruby.c new/ext/bindex/cruby.c
--- old/ext/bindex/cruby.c      2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/cruby.c      1970-01-01 01:00:00.000000000 +0100
@@ -1,80 +0,0 @@
-#include <ruby.h>
-#include <ruby/debug.h>
-
-VALUE bx_mBindex;
-static ID id_bindings;
-
-static VALUE
-current_bindings_callback(const rb_debug_inspector_t *context, void *data)
-{
-  VALUE locations = rb_debug_inspector_backtrace_locations(context);
-  VALUE binding, bindings = rb_ary_new();
-  long i, length = RARRAY_LEN(locations);
-
-  for (i = 0; i < length; i++) {
-    binding = rb_debug_inspector_frame_binding_get(context, i);
-
-    if (!NIL_P(binding)) {
-      rb_ary_push(bindings, binding);
-    }
-  }
-
-  return bindings;
-}
-
-VALUE
-current_bindings(void)
-{
-  return rb_debug_inspector_open(current_bindings_callback, NULL);
-}
-
-static void
-set_exception_bindings_callback(VALUE tpval, void *data)
-{
-  rb_trace_arg_t *trace_arg = rb_tracearg_from_tracepoint(tpval);
-  VALUE exception = rb_tracearg_raised_exception(trace_arg);
-  VALUE bindings = rb_attr_get(exception, id_bindings);
-
-  /* Set the bindings, only if they haven't been set already. This may reset
-   * the binding during reraise. */
-  if (NIL_P(bindings)) {
-    rb_ivar_set(exception, id_bindings, current_bindings());
-  }
-}
-
-void
-set_exception_bindings_on_raise(void)
-{
-  VALUE tpval = rb_tracepoint_new(0, RUBY_EVENT_RAISE, 
set_exception_bindings_callback, 0);
-  rb_tracepoint_enable(tpval);
-}
-
-static VALUE
-bx_current_bindings(VALUE self)
-{
-  return current_bindings();
-}
-
-static VALUE
-bx_exc_bindings(VALUE self)
-{
-  VALUE bindings = rb_attr_get(self, id_bindings);
-
-  if (NIL_P(bindings)) {
-    bindings = rb_ary_new();
-  }
-
-  return bindings;
-}
-
-void
-Init_cruby(void)
-{
-  bx_mBindex = rb_define_module("Bindex");
-  id_bindings = rb_intern("bindings");
-
-  rb_define_singleton_method(bx_mBindex, "current_bindings", 
bx_current_bindings, 0);
-  rb_define_method(rb_eException, "bindings", bx_exc_bindings, 0);
-
-  set_exception_bindings_on_raise();
-}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/bindex/extconf.rb new/ext/bindex/extconf.rb
--- old/ext/bindex/extconf.rb   2017-03-20 12:22:18.000000000 +0100
+++ new/ext/bindex/extconf.rb   1970-01-01 01:00:00.000000000 +0100
@@ -1,15 +0,0 @@
-case RUBY_ENGINE
-when "ruby"
-  require "mkmf"
-
-  $CFLAGS << " -Wall"
-  $CFLAGS << " -g3 -O0" if ENV["DEBUG"]
-
-  create_makefile("bindex/cruby")
-else
-  IO.write(File.expand_path("../Makefile", __FILE__), <<-END)
-    all install static install-so install-rb: Makefile
-    .PHONY: all install static install-so install-rb
-    .PHONY: clean clean-so clean-static clean-rb
-  END
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/BindingBuilder.java 
new/ext/skiptrace/com/gsamokovarov/skiptrace/BindingBuilder.java
--- old/ext/skiptrace/com/gsamokovarov/skiptrace/BindingBuilder.java    
1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/com/gsamokovarov/skiptrace/BindingBuilder.java    
2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,13 @@
+package com.gsamokovarov.skiptrace;
+
+import org.jruby.runtime.DynamicScope;
+import org.jruby.runtime.Binding;
+import org.jruby.runtime.Frame;
+import org.jruby.runtime.DynamicScope;
+import org.jruby.runtime.backtrace.BacktraceElement;
+
+class BindingBuilder {
+    public static Binding build(Frame frame, DynamicScope scope, 
BacktraceElement element) {
+        return new Binding(frame, scope, element.method, element.filename, 
element.line);
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/CurrentBindingsIterator.java 
new/ext/skiptrace/com/gsamokovarov/skiptrace/CurrentBindingsIterator.java
--- old/ext/skiptrace/com/gsamokovarov/skiptrace/CurrentBindingsIterator.java   
1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/com/gsamokovarov/skiptrace/CurrentBindingsIterator.java   
2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,54 @@
+package com.gsamokovarov.skiptrace;
+
+import org.jruby.runtime.ThreadContext;
+import org.jruby.runtime.DynamicScope;
+import org.jruby.runtime.Binding;
+import org.jruby.runtime.Frame;
+import org.jruby.runtime.DynamicScope;
+import org.jruby.runtime.backtrace.BacktraceElement;
+import java.util.Iterator;
+import java.util.NoSuchElementException;
+
+class CurrentBindingsIterator implements Iterator<Binding> {
+    private Frame[] frameStack;
+    private int frameIndex;
+
+    private DynamicScope[] scopeStack;
+    private int scopeIndex;
+
+    private BacktraceElement[] backtrace;
+    private int backtraceIndex;
+
+    CurrentBindingsIterator(ThreadContext context) {
+        ThreadContextInternals contextInternals = new 
ThreadContextInternals(context);
+
+        this.frameStack = contextInternals.getFrameStack();
+        this.frameIndex = contextInternals.getFrameIndex();
+
+        this.scopeStack = contextInternals.getScopeStack();
+        this.scopeIndex = contextInternals.getScopeIndex();
+
+        this.backtrace = contextInternals.getBacktrace();
+        this.backtraceIndex = contextInternals.getBacktraceIndex();
+    }
+
+    public boolean hasNext() {
+        return frameIndex >= 0 && scopeIndex >= 0 && backtraceIndex >= 0;
+    }
+
+    public Binding next() {
+        if (!hasNext()) {
+            throw new NoSuchElementException();
+        }
+
+        Frame frame = frameStack[frameIndex--];
+        DynamicScope scope = scopeStack[scopeIndex--];
+        BacktraceElement element = backtrace[backtraceIndex--];
+
+        return BindingBuilder.build(frame, scope, element);
+    }
+
+    public void remove() {
+        throw new UnsupportedOperationException();
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/JRubyIntegration.java 
new/ext/skiptrace/com/gsamokovarov/skiptrace/JRubyIntegration.java
--- old/ext/skiptrace/com/gsamokovarov/skiptrace/JRubyIntegration.java  
1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/com/gsamokovarov/skiptrace/JRubyIntegration.java  
2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,49 @@
+package com.gsamokovarov.skiptrace;
+
+import org.jruby.Ruby;
+import org.jruby.RubyArray;
+import org.jruby.RubyModule;
+import org.jruby.RubyClass;
+import org.jruby.runtime.ThreadContext;
+import org.jruby.runtime.builtin.IRubyObject;
+import org.jruby.runtime.builtin.InstanceVariables;
+import org.jruby.anno.JRubyMethod;
+
+public class JRubyIntegration {
+    public static void setup(Ruby runtime) {
+        RubyModule skiptrace = runtime.defineModule("Skiptrace");
+        skiptrace.defineAnnotatedMethods(SkiptraceMethods.class);
+
+        RubyClass exception = runtime.getException();
+        exception.defineAnnotatedMethods(ExceptionExtensionMethods.class);
+
+        IRubyObject verbose = runtime.getVerbose();
+        try {
+            runtime.setVerbose(runtime.getNil());
+            runtime.addEventHook(new SetExceptionBindingsEventHook());
+        } finally {
+            runtime.setVerbose(verbose);
+        }
+    }
+
+    public static class SkiptraceMethods {
+        @JRubyMethod(name = "current_bindings", meta = true)
+        public static IRubyObject currentBindings(ThreadContext context, 
IRubyObject self) {
+            return RubyBindingsCollector.collectCurrentFor(context);
+        }
+    }
+
+    public static class ExceptionExtensionMethods {
+        @JRubyMethod
+        public static IRubyObject bindings(ThreadContext context, IRubyObject 
self) {
+            InstanceVariables instanceVariables = self.getInstanceVariables();
+
+            IRubyObject bindings = 
instanceVariables.getInstanceVariable("@bindings");
+            if (bindings != null && !bindings.isNil()) {
+                return bindings;
+            }
+
+            return RubyArray.newArray(context.getRuntime());
+        }
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/RubyBindingsCollector.java 
new/ext/skiptrace/com/gsamokovarov/skiptrace/RubyBindingsCollector.java
--- old/ext/skiptrace/com/gsamokovarov/skiptrace/RubyBindingsCollector.java     
1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/com/gsamokovarov/skiptrace/RubyBindingsCollector.java     
2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,34 @@
+package com.gsamokovarov.skiptrace;
+
+import org.jruby.runtime.ThreadContext;
+import org.jruby.runtime.Binding;
+import org.jruby.runtime.DynamicScope;
+import org.jruby.runtime.builtin.IRubyObject;
+import org.jruby.RubyBinding;
+import org.jruby.RubyArray;
+import org.jruby.Ruby;
+import java.util.Iterator;
+
+public class RubyBindingsCollector {
+    private final Ruby runtime;
+    private Iterator<Binding> iterator;
+
+    public static RubyArray collectCurrentFor(ThreadContext context) {
+        return new RubyBindingsCollector(context).collectCurrent();
+    }
+
+    private RubyBindingsCollector(ThreadContext context) {
+        this.iterator = new CurrentBindingsIterator(context);
+        this.runtime = context.getRuntime();
+    }
+
+    private RubyArray collectCurrent() {
+        RubyArray bindings = RubyArray.newArray(runtime);
+
+        while (iterator.hasNext()) {
+            bindings.append(((IRubyObject) RubyBinding.newBinding(runtime, 
iterator.next())));
+        }
+
+        return bindings;
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/SetExceptionBindingsEventHook.java 
new/ext/skiptrace/com/gsamokovarov/skiptrace/SetExceptionBindingsEventHook.java
--- 
old/ext/skiptrace/com/gsamokovarov/skiptrace/SetExceptionBindingsEventHook.java 
    1970-01-01 01:00:00.000000000 +0100
+++ 
new/ext/skiptrace/com/gsamokovarov/skiptrace/SetExceptionBindingsEventHook.java 
    2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,24 @@
+package com.gsamokovarov.skiptrace;
+
+import org.jruby.runtime.EventHook;
+import org.jruby.runtime.RubyEvent;
+import org.jruby.runtime.ThreadContext;
+import org.jruby.runtime.builtin.IRubyObject;
+import org.jruby.RubyArray;
+import org.jruby.RubyException;
+
+public class SetExceptionBindingsEventHook extends EventHook {
+    public boolean isInterestedInEvent(RubyEvent event) {
+        return event == RubyEvent.RAISE;
+    }
+
+    public void eventHandler(ThreadContext context, String eventName, String 
file, int line, String name, IRubyObject type) {
+        RubyArray bindings = RubyBindingsCollector.collectCurrentFor(context);
+        RubyException exception = (RubyException) 
context.runtime.getGlobalVariables().get("$!");
+
+        IRubyObject exceptionBindings = 
exception.getInstanceVariable("@bindings");
+        if (exceptionBindings == null || exceptionBindings.isNil()) {
+            exception.setInstanceVariable("@bindings", bindings);
+        }
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInterfaceException.java
 
new/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInterfaceException.java
--- 
old/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInterfaceException.java
   1970-01-01 01:00:00.000000000 +0100
+++ 
new/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInterfaceException.java
   2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,14 @@
+package com.gsamokovarov.skiptrace;
+
+class ThreadContextInterfaceException extends RuntimeException {
+    private static final String MESSAGE_TEMPLATE =
+        "Expected private field %s in ThreadContext is missing";
+
+    ThreadContextInterfaceException(String fieldName) {
+        super(String.format(MESSAGE_TEMPLATE, fieldName));
+    }
+
+    ThreadContextInterfaceException(String fieldName, Throwable cause) {
+        super(String.format(MESSAGE_TEMPLATE, fieldName), cause);
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' 
old/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInternals.java 
new/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInternals.java
--- old/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInternals.java    
1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInternals.java    
2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,54 @@
+package com.gsamokovarov.skiptrace;
+
+import java.lang.reflect.Field;
+import org.jruby.runtime.ThreadContext;
+import org.jruby.runtime.DynamicScope;
+import org.jruby.runtime.Frame;
+import org.jruby.runtime.backtrace.BacktraceElement;
+import org.jruby.runtime.builtin.IRubyObject;
+
+public class ThreadContextInternals {
+    private ThreadContext context;
+
+    public ThreadContextInternals(ThreadContext context) {
+        this.context = context;
+    }
+
+    public Frame[] getFrameStack() {
+        return (Frame[]) getPrivateField("frameStack");
+    }
+
+    public int getFrameIndex() {
+        return (Integer) getPrivateField("frameIndex");
+    }
+
+    public DynamicScope[] getScopeStack() {
+        return (DynamicScope[]) getPrivateField("scopeStack");
+    }
+
+    public int getScopeIndex() {
+        return (Integer) getPrivateField("scopeIndex");
+    }
+
+    public BacktraceElement[] getBacktrace() {
+        return (BacktraceElement[]) getPrivateField("backtrace");
+    }
+
+    public int getBacktraceIndex() {
+        return (Integer) getPrivateField("backtraceIndex");
+    }
+
+    private Object getPrivateField(String fieldName) {
+        try {
+            Field field = ThreadContext.class.getDeclaredField(fieldName);
+
+            field.setAccessible(true);
+
+            return field.get(context);
+        } catch (NoSuchFieldException exc) {
+            throw new ThreadContextInterfaceException(fieldName, exc);
+        } catch (IllegalAccessException exc) {
+            throw new ThreadContextInterfaceException(fieldName, exc);
+        }
+    }
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/skiptrace/cruby.c new/ext/skiptrace/cruby.c
--- old/ext/skiptrace/cruby.c   1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/cruby.c   2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,80 @@
+#include <ruby.h>
+#include <ruby/debug.h>
+
+static VALUE st_mSkiptrace;
+static ID id_bindings;
+
+static VALUE
+current_bindings_callback(const rb_debug_inspector_t *context, void *data)
+{
+  VALUE locations = rb_debug_inspector_backtrace_locations(context);
+  VALUE binding, bindings = rb_ary_new();
+  long i, length = RARRAY_LEN(locations);
+
+  for (i = 0; i < length; i++) {
+    binding = rb_debug_inspector_frame_binding_get(context, i);
+
+    if (!NIL_P(binding)) {
+      rb_ary_push(bindings, binding);
+    }
+  }
+
+  return bindings;
+}
+
+static VALUE
+current_bindings(void)
+{
+  return rb_debug_inspector_open(current_bindings_callback, NULL);
+}
+
+static void
+set_exception_bindings_callback(VALUE tpval, void *data)
+{
+  rb_trace_arg_t *trace_arg = rb_tracearg_from_tracepoint(tpval);
+  VALUE exception = rb_tracearg_raised_exception(trace_arg);
+  VALUE bindings = rb_attr_get(exception, id_bindings);
+
+  /* Set the bindings, only if they haven't been set already. This may reset
+   * the binding during reraise. */
+  if (NIL_P(bindings)) {
+    rb_ivar_set(exception, id_bindings, current_bindings());
+  }
+}
+
+static void
+set_exception_bindings_on_raise(void)
+{
+  VALUE tpval = rb_tracepoint_new(0, RUBY_EVENT_RAISE, 
set_exception_bindings_callback, 0);
+  rb_tracepoint_enable(tpval);
+}
+
+static VALUE
+st_current_bindings(VALUE self)
+{
+  return current_bindings();
+}
+
+static VALUE
+st_exc_bindings(VALUE self)
+{
+  VALUE bindings = rb_attr_get(self, id_bindings);
+
+  if (NIL_P(bindings)) {
+    bindings = rb_ary_new();
+  }
+
+  return bindings;
+}
+
+void
+Init_cruby(void)
+{
+  st_mSkiptrace = rb_define_module("Skiptrace");
+  id_bindings = rb_intern("bindings");
+
+  rb_define_singleton_method(st_mSkiptrace, "current_bindings", 
st_current_bindings, 0);
+  rb_define_method(rb_eException, "bindings", st_exc_bindings, 0);
+
+  set_exception_bindings_on_raise();
+}
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/ext/skiptrace/extconf.rb new/ext/skiptrace/extconf.rb
--- old/ext/skiptrace/extconf.rb        1970-01-01 01:00:00.000000000 +0100
+++ new/ext/skiptrace/extconf.rb        2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,15 @@
+case RUBY_ENGINE
+when "ruby"
+  require "mkmf"
+
+  $CFLAGS << " -Wall"
+  $CFLAGS << " -g3 -O0" if ENV["DEBUG"]
+
+  create_makefile("skiptrace/cruby")
+else
+  IO.write(File.expand_path("../Makefile", __FILE__), <<-END)
+    all install static install-so install-rb: Makefile
+    .PHONY: all install static install-so install-rb
+    .PHONY: clean clean-so clean-static clean-rb
+  END
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/bindex/jruby.rb new/lib/bindex/jruby.rb
--- old/lib/bindex/jruby.rb     2017-03-20 12:22:18.000000000 +0100
+++ new/lib/bindex/jruby.rb     1970-01-01 01:00:00.000000000 +0100
@@ -1,5 +0,0 @@
-require 'bindex/jruby_internals'
-
-java_import com.gsamokovarov.bindex.JRubyIntegration
-
-JRubyIntegration.setup(JRuby.runtime)
Binary files old/lib/bindex/jruby_internals.jar and 
new/lib/bindex/jruby_internals.jar differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/bindex/rubinius.rb new/lib/bindex/rubinius.rb
--- old/lib/bindex/rubinius.rb  2017-03-20 12:22:18.000000000 +0100
+++ new/lib/bindex/rubinius.rb  1970-01-01 01:00:00.000000000 +0100
@@ -1,66 +0,0 @@
-module Bindex
-  module Rubinius
-    # Filters internal Rubinius locations.
-    #
-    # There are a couple of reasons why we wanna filter out the locations.
-    #
-    # * ::Kernel.raise, is implemented in Ruby for Rubinius. We don't wanna
-    #   have the frame for it to align with the CRuby and JRuby 
implementations.
-    #
-    # * For internal methods location variables can be nil. We can't create a
-    #   bindings for them.
-    #
-    # * Bindings from the current file are considered internal and ignored.
-    #
-    # We do that all that so we can align the bindings with the backtraces
-    # entries.
-    class InternalLocationFilter
-      def initialize(locations)
-        @locations = locations
-      end
-
-      def filter
-        @locations.reject do |location|
-          location.file.start_with?('kernel/delta/kernel.rb') ||
-            location.file == __FILE__ ||
-            location.variables.nil?
-        end
-      end
-    end
-  end
-end
-
-# Gets the current bindings for all available Ruby frames.
-#
-# Filters the internal Rubinius and Bindex frames.
-def Bindex.current_bindings
-  locations = ::Rubinius::VM.backtrace(1, true)
-
-  Bindex::Rubinius::InternalLocationFilter.new(locations).filter.map do 
|location|
-    Binding.setup(
-      location.variables,
-      location.variables.method,
-      location.constant_scope,
-      location.variables.self,
-      location
-    )
-  end
-end
-
-::Exception.class_eval do
-  def bindings
-    @bindings || []
-  end
-end
-
-::Rubinius.singleton_class.class_eval do
-  raise_exception = instance_method(:raise_exception)
-
-  define_method(:raise_exception) do |exc|
-    if exc.bindings.empty?
-      exc.instance_variable_set(:@bindings, Bindex.current_bindings)
-    end
-
-    raise_exception.bind(self).call(exc)
-  end
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/bindex/version.rb new/lib/bindex/version.rb
--- old/lib/bindex/version.rb   2017-03-20 12:22:18.000000000 +0100
+++ new/lib/bindex/version.rb   1970-01-01 01:00:00.000000000 +0100
@@ -1,3 +0,0 @@
-module Bindex
-  VERSION = "0.5.0"
-end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/bindex.rb new/lib/bindex.rb
--- old/lib/bindex.rb   2017-03-20 12:22:18.000000000 +0100
+++ new/lib/bindex.rb   2019-04-08 22:09:35.000000000 +0200
@@ -1,10 +1,4 @@
-case RUBY_ENGINE
-when 'rbx'
-  require 'bindex/rubinius'
-when 'jruby'
-  require 'bindex/jruby'
-when 'ruby'
-  require 'bindex/cruby'
-end
+require_relative "skiptrace"
 
-require "bindex/version"
+# Keep backwards compatibility with the previous name.
+Bindex = Skiptrace
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/skiptrace/jruby.rb new/lib/skiptrace/jruby.rb
--- old/lib/skiptrace/jruby.rb  1970-01-01 01:00:00.000000000 +0100
+++ new/lib/skiptrace/jruby.rb  2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,5 @@
+require 'skiptrace/jruby_internals'
+
+java_import com.gsamokovarov.skiptrace.JRubyIntegration
+
+JRubyIntegration.setup(JRuby.runtime)
Binary files old/lib/skiptrace/jruby_internals.jar and 
new/lib/skiptrace/jruby_internals.jar differ
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/skiptrace/rubinius.rb 
new/lib/skiptrace/rubinius.rb
--- old/lib/skiptrace/rubinius.rb       1970-01-01 01:00:00.000000000 +0100
+++ new/lib/skiptrace/rubinius.rb       2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,66 @@
+module Skiptrace
+  module Rubinius
+    # Filters internal Rubinius locations.
+    #
+    # There are a couple of reasons why we wanna filter out the locations.
+    #
+    # * ::Kernel.raise, is implemented in Ruby for Rubinius. We don't wanna
+    #   have the frame for it to align with the CRuby and JRuby 
implementations.
+    #
+    # * For internal methods location variables can be nil. We can't create a
+    #   bindings for them.
+    #
+    # * Bindings from the current file are considered internal and ignored.
+    #
+    # We do that all that so we can align the bindings with the backtraces
+    # entries.
+    class InternalLocationFilter
+      def initialize(locations)
+        @locations = locations
+      end
+
+      def filter
+        @locations.reject do |location|
+          location.file.start_with?('kernel/delta/kernel.rb') ||
+            location.file == __FILE__ ||
+            location.variables.nil?
+        end
+      end
+    end
+  end
+end
+
+# Gets the current bindings for all available Ruby frames.
+#
+# Filters the internal Rubinius and Skiptrace frames.
+def Skiptrace.current_bindings
+  locations = ::Rubinius::VM.backtrace(1, true)
+
+  Skiptrace::Rubinius::InternalLocationFilter.new(locations).filter.map do 
|location|
+    Binding.setup(
+      location.variables,
+      location.variables.method,
+      location.constant_scope,
+      location.variables.self,
+      location
+    )
+  end
+end
+
+::Exception.class_eval do
+  def bindings
+    @bindings || []
+  end
+end
+
+::Rubinius.singleton_class.class_eval do
+  raise_exception = instance_method(:raise_exception)
+
+  define_method(:raise_exception) do |exc|
+    if exc.bindings.empty?
+      exc.instance_variable_set(:@bindings, Skiptrace.current_bindings)
+    end
+
+    raise_exception.bind(self).call(exc)
+  end
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/skiptrace/version.rb new/lib/skiptrace/version.rb
--- old/lib/skiptrace/version.rb        1970-01-01 01:00:00.000000000 +0100
+++ new/lib/skiptrace/version.rb        2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,3 @@
+module Skiptrace
+  VERSION = "0.7.0"
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/lib/skiptrace.rb new/lib/skiptrace.rb
--- old/lib/skiptrace.rb        1970-01-01 01:00:00.000000000 +0100
+++ new/lib/skiptrace.rb        2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,11 @@
+case RUBY_ENGINE
+when 'rbx'
+  require 'skiptrace/rubinius'
+when 'jruby'
+  require 'skiptrace/jruby'
+when 'ruby'
+  require 'skiptrace/cruby'
+end
+
+require "skiptrace/version"
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/metadata new/metadata
--- old/metadata        2017-03-20 12:22:18.000000000 +0100
+++ new/metadata        2019-04-08 22:09:35.000000000 +0200
@@ -1,77 +1,77 @@
 --- !ruby/object:Gem::Specification
 name: bindex
 version: !ruby/object:Gem::Version
-  version: 0.5.0
+  version: 0.7.0
 platform: ruby
 authors:
 - Genadi Samokovarov
-autorequire:
+autorequire: 
 bindir: bin
 cert_chain: []
-date: 2017-03-20 00:00:00.000000000 Z
+date: 2019-04-08 00:00:00.000000000 Z
 dependencies:
 - !ruby/object:Gem::Dependency
+  name: minitest
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
         version: '5.4'
-  name: minitest
-  prerelease: false
   type: :development
+  prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - "~>"
       - !ruby/object:Gem::Version
         version: '5.4'
 - !ruby/object:Gem::Dependency
+  name: bundler
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
         version: '0'
-  name: bundler
-  prerelease: false
   type: :development
+  prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
         version: '0'
 - !ruby/object:Gem::Dependency
+  name: rake
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
         version: '0'
-  name: rake
-  prerelease: false
   type: :development
+  prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
         version: '0'
 - !ruby/object:Gem::Dependency
+  name: rake-compiler
   requirement: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
         version: '0'
-  name: rake-compiler
-  prerelease: false
   type: :development
+  prerelease: false
   version_requirements: !ruby/object:Gem::Requirement
     requirements:
     - - ">="
       - !ruby/object:Gem::Version
         version: '0'
-description:
+description: 
 email:
 - [email protected]
 executables: []
 extensions:
-- ext/bindex/extconf.rb
+- ext/skiptrace/extconf.rb
 extra_rdoc_files: []
 files:
 - ".gitignore"
@@ -82,20 +82,22 @@
 - README.md
 - Rakefile
 - bindex.gemspec
-- ext/bindex/com/gsamokovarov/bindex/BindingBuilder.java
-- ext/bindex/com/gsamokovarov/bindex/CurrentBindingsIterator.java
-- ext/bindex/com/gsamokovarov/bindex/JRubyIntegration.java
-- ext/bindex/com/gsamokovarov/bindex/RubyBindingsCollector.java
-- ext/bindex/com/gsamokovarov/bindex/SetExceptionBindingsEventHook.java
-- ext/bindex/com/gsamokovarov/bindex/ThreadContextInterfaceException.java
-- ext/bindex/com/gsamokovarov/bindex/ThreadContextInternals.java
-- ext/bindex/cruby.c
-- ext/bindex/extconf.rb
+- ext/skiptrace/com/gsamokovarov/skiptrace/BindingBuilder.java
+- ext/skiptrace/com/gsamokovarov/skiptrace/CurrentBindingsIterator.java
+- ext/skiptrace/com/gsamokovarov/skiptrace/JRubyIntegration.java
+- ext/skiptrace/com/gsamokovarov/skiptrace/RubyBindingsCollector.java
+- ext/skiptrace/com/gsamokovarov/skiptrace/SetExceptionBindingsEventHook.java
+- ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInterfaceException.java
+- ext/skiptrace/com/gsamokovarov/skiptrace/ThreadContextInternals.java
+- ext/skiptrace/cruby.c
+- ext/skiptrace/extconf.rb
 - lib/bindex.rb
-- lib/bindex/jruby.rb
-- lib/bindex/jruby_internals.jar
-- lib/bindex/rubinius.rb
-- lib/bindex/version.rb
+- lib/skiptrace.rb
+- lib/skiptrace/jruby.rb
+- lib/skiptrace/jruby_internals.jar
+- lib/skiptrace/rubinius.rb
+- lib/skiptrace/version.rb
+- skiptrace.gemspec
 - test/current_bindings_test.rb
 - test/exception_test.rb
 - test/fixtures/basic_nested_fixture.rb
@@ -108,7 +110,7 @@
 licenses:
 - MIT
 metadata: {}
-post_install_message:
+post_install_message: 
 rdoc_options: []
 require_paths:
 - lib
@@ -123,9 +125,8 @@
     - !ruby/object:Gem::Version
       version: '0'
 requirements: []
-rubyforge_project:
-rubygems_version: 2.6.8
-signing_key:
+rubygems_version: 3.0.3
+signing_key: 
 specification_version: 4
 summary: Bindings for your Ruby exceptions
 test_files:
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/skiptrace.gemspec new/skiptrace.gemspec
--- old/skiptrace.gemspec       1970-01-01 01:00:00.000000000 +0100
+++ new/skiptrace.gemspec       2019-04-08 22:09:35.000000000 +0200
@@ -0,0 +1,27 @@
+$LOAD_PATH << File.expand_path('../lib', __FILE__)
+
+require 'skiptrace/version'
+
+Gem::Specification.new do |spec|
+  spec.name          = "skiptrace"
+  spec.version       = Skiptrace::VERSION
+  spec.authors       = ["Genadi Samokovarov"]
+  spec.email         = ["[email protected]"]
+  spec.extensions    = ["ext/skiptrace/extconf.rb"]
+  spec.summary       = "Bindings for your Ruby exceptions"
+  spec.homepage      = "https://github.com/gsamokovarov/skiptrace";
+  spec.license       = "MIT"
+
+  spec.required_ruby_version = ">= 2.0.0"
+
+  spec.files         = `git ls-files -z`.split("\x0")
+  spec.executables   = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
+  spec.test_files    = spec.files.grep(%r{^(test|spec|features)/})
+  spec.require_paths = ["lib"]
+  spec.extensions    = ["ext/skiptrace/extconf.rb"]
+
+  spec.add_development_dependency "minitest", "~> 5.4"
+  spec.add_development_dependency "bundler"
+  spec.add_development_dependency "rake"
+  spec.add_development_dependency "rake-compiler"
+end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/current_bindings_test.rb 
new/test/current_bindings_test.rb
--- old/test/current_bindings_test.rb   2017-03-20 12:22:18.000000000 +0100
+++ new/test/current_bindings_test.rb   2019-04-08 22:09:35.000000000 +0200
@@ -2,6 +2,6 @@
 
 class CurrentBindingsTest < BaseTest
   test 'first binding returned is the current one' do
-    assert_equal __LINE__, Bindex.current_bindings.first.eval('__LINE__')
+    assert_equal __LINE__, Skiptrace.current_bindings.first.eval('__LINE__')
   end
 end
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/test/test_helper.rb new/test/test_helper.rb
--- old/test/test_helper.rb     2017-03-20 12:22:18.000000000 +0100
+++ new/test/test_helper.rb     2019-04-08 22:09:35.000000000 +0200
@@ -1,7 +1,7 @@
 $LOAD_PATH << File.expand_path('../lib', __FILE__)
 
 require 'minitest/autorun'
-require 'bindex'
+require 'skiptrace'
 
 current_directory = File.dirname(File.expand_path(__FILE__))
 


Reply via email to