private static void renderBacktraceMRI(RubyStackTraceElement[] trace, String linePrefix, StringBuilder buffer, boolean color) { for (int i = 0; i < trace.length; i++) { RubyStackTraceElement element = trace[i]; buffer .append(linePrefix) .append(element.getFileName()) .append(':') .append(element.getLineNumber()) .append(":in `") .append(element.getMethodName()) .append("'\n"); } }
private static void renderBacktraceMRI(RubyStackTraceElement[] trace, String linePrefix, StringBuilder buffer, boolean color) { for (int i = 0; i < trace.length; i++) { RubyStackTraceElement element = trace[i]; buffer .append(linePrefix) .append(element.getFileName()) .append(':') .append(element.getLineNumber()) .append(":in `") .append(element.getMethodName()) .append("'\n"); } }
@JRubyMethod public IRubyObject absolute_path(ThreadContext context) { return context.runtime.newString(element.getFileName()); }
@JRubyMethod public IRubyObject absolute_path(ThreadContext context) { return context.runtime.newString(element.getFileName()); }
@JRubyMethod public IRubyObject absolute_path(ThreadContext context) { return context.runtime.newString(element.getFileName()); }
@JRubyMethod(name = "__dir__", module = true, visibility = PRIVATE, reads = FILENAME, compat = RUBY2_0) public static IRubyObject __dir__(ThreadContext context, IRubyObject recv) { String dir = RubyFile.dirname(context, new File(context.gatherCallerBacktrace()[1].getFileName()).getAbsolutePath()); if (dir == null) return context.nil; return RubyString.newString(context.runtime, dir); }
@JRubyMethod(name = "__dir__", module = true, visibility = PRIVATE, reads = FILENAME, compat = RUBY2_0) public static IRubyObject __dir__(ThreadContext context, IRubyObject recv) { String dir = RubyFile.dirname(context, new File(context.gatherCallerBacktrace()[1].getFileName()).getAbsolutePath()); if (dir == null) return context.nil; return RubyString.newString(context.runtime, dir); }
private static void printExceptionSummary(Ruby runtime, RubyException rEx) { RubyStackTraceElement[] elements = rEx.getBacktraceElements(); RubyStackTraceElement firstElement = elements.length > 0 ? elements[0] : new RubyStackTraceElement("", "", "(empty)", 0, false); String msg = String.format("Exception `%s' at %s:%s - %s\n", rEx.getMetaClass(), firstElement.getFileName(), firstElement.getLineNumber(), TypeConverter.convertToType(rEx, runtime.getString(), "to_s")); runtime.getErrorStream().print(msg); }
private static void writeWarning(Ruby runtime, ID id, String message) { RubyStackTraceElement[] stack = getRubyStackTrace(runtime); String file; int line; if (stack.length == 0) { file = "(unknown)"; line = -1; } else { file = stack[0].getFileName(); line = stack[0].getLineNumber(); } runtime.getWarnings().warning(id, file, line, message); }
private static void printExceptionSummary(Ruby runtime, RubyException rEx) { RubyStackTraceElement[] elements = rEx.getBacktraceElements(); RubyStackTraceElement firstElement = elements.length > 0 ? elements[0] : new RubyStackTraceElement("", "", "(empty)", 0, false); String msg = String.format("Exception `%s' at %s:%s - %s\n", rEx.getMetaClass(), firstElement.getFileName(), firstElement.getLineNumber(), TypeConverter.convertToType(rEx, runtime.getString(), "to_s")); runtime.getErrorStream().print(msg); }
public static void logBacktrace(RubyStackTraceElement[] trace) { LOG.info("Backtrace generated:"); for (RubyStackTraceElement element : trace) { LOG.info(" " + element.getFileName() + ":" + element.getLineNumber() + " in " + element.getMethodName()); } }
public static void logBacktrace(RubyStackTraceElement[] trace) { LOG.info("Backtrace generated:"); for (RubyStackTraceElement element : trace) { LOG.info(" " + element.getFileName() + ":" + element.getLineNumber() + " in " + element.getMethodName()); } }
private static void writeWarning(Ruby runtime, ID id, String message) { RubyStackTraceElement[] stack = getRubyStackTrace(runtime); String file; int line; if (stack.length == 0) { file = "(unknown)"; line = -1; } else { file = stack[0].getFileName(); line = stack[0].getLineNumber(); } runtime.getWarnings().warning(id, file, line, message); }
private static void printExceptionSummary(ThreadContext context, Ruby runtime, RubyException rEx) { RubyStackTraceElement[] elements = rEx.getBacktraceElements(); RubyStackTraceElement firstElement = elements.length > 0 ? elements[0] : new RubyStackTraceElement("", "", "(empty)", 0, false); String msg = String.format("Exception `%s' at %s:%s - %s\n", rEx.getMetaClass(), firstElement.getFileName(), firstElement.getLineNumber(), runtime.is1_9() ? TypeConverter.convertToType(rEx, runtime.getString(), "to_s") : rEx.convertToString().toString()); runtime.getErrorStream().print(msg); }
private static void printExceptionSummary(ThreadContext context, Ruby runtime, RubyException rEx) { RubyStackTraceElement[] elements = rEx.getBacktraceElements(); RubyStackTraceElement firstElement = elements.length > 0 ? elements[0] : new RubyStackTraceElement("", "", "(empty)", 0, false); String msg = String.format("Exception `%s' at %s:%s - %s\n", rEx.getMetaClass(), firstElement.getFileName(), firstElement.getLineNumber(), runtime.is1_9() ? TypeConverter.convertToType(rEx, runtime.getString(), "to_s") : rEx.convertToString().toString()); runtime.getErrorStream().print(msg); }
public static IRubyObject generateMRIBacktrace(Ruby runtime, RubyStackTraceElement[] trace) { if (trace == null) { return runtime.getNil(); } RubyArray traceArray = RubyArray.newArray(runtime); for (int i = 0; i < trace.length; i++) { RubyStackTraceElement element = trace[i]; RubyString str = RubyString.newString(runtime, element.getFileName() + ":" + element.getLineNumber() + ":in `" + element.getMethodName() + "'"); traceArray.append(str); } return traceArray; }
public static IRubyObject generateMRIBacktrace(Ruby runtime, RubyStackTraceElement[] trace) { if (trace == null) { return runtime.getNil(); } RubyArray traceArray = RubyArray.newArray(runtime); for (int i = 0; i < trace.length; i++) { RubyStackTraceElement element = trace[i]; RubyString str = RubyString.newString(runtime, element.getFileName() + ":" + element.getLineNumber() + ":in `" + element.getMethodName() + "'"); traceArray.append(str); } return traceArray; }
@JRubyMethod(name = "__dir__", module = true, visibility = PRIVATE, reads = FILENAME) public static IRubyObject __dir__(ThreadContext context, IRubyObject recv) { // NOTE: not using __FILE__ = context.getFile() since it won't work with JIT final String __FILE__ = context.gatherCallerBacktrace()[1].getFileName(); RubyString path = RubyFile.expandPathInternal(context, RubyString.newString(context.runtime, __FILE__), null, false, true); return RubyString.newString(context.runtime, RubyFile.dirname(context, path.asJavaString())); }
public static RubyString to_s_mri(ThreadContext context, RubyStackTraceElement element) { RubySymbol methodSym = context.runtime.newSymbol(element.getMethodName()); RubyString line = context.runtime.newString(new ByteList(methodSym.getBytes().length() + element.getFileName().length() + 18)); line.setEncoding(methodSym.getEncoding()); line.cat(element.getFileName().getBytes()); line.cat(CommonByteLists.COLON); line.cat(ConvertBytes.longToByteList(element.getLineNumber())); line.cat(CommonByteLists.BACKTRACE_IN); if (element.getFrameType() == FrameType.BLOCK) line.catString("block in "); line.cat(methodSym.getBytes()); line.cat('\''); return line; }
@JRubyMethod(name = "__dir__", module = true, visibility = PRIVATE, reads = FILENAME) public static IRubyObject __dir__(ThreadContext context, IRubyObject recv) { // NOTE: not using __FILE__ = context.getFile() since it won't work with JIT final String __FILE__ = context.gatherCallerBacktrace()[1].getFileName(); RubyString path = RubyFile.expandPathInternal(context, RubyString.newString(context.runtime, __FILE__), null, false, true); return RubyString.newString(context.runtime, RubyFile.dirname(context, path.asJavaString())); }