Project

General

Profile

Actions

Feature #19752

closed

Allow `--backtrace-limit` to appear in RUBYOPT

Added by tomstuart (Tom Stuart) 10 months ago. Updated 9 months ago.

Status:
Closed
Target version:
-
[ruby-core:114064]

Description

The --backtrace-limit option was added in #8661 but it is not currently supported in the RUBYOPT environment variable, which appears to be a mistake. Unlike other long options which are not allowed in RUBYOPT (e.g. --copyright, --version, --dump and --help) it does not cause the interpreter to terminate, and cannot cause harm if read from the environment. During the initial discussion about the --backtrace-limit feature, Matz suggested that he expected RUBYOPT to allow this option.

Patch here, which also documents --backtrace-limit on Ruby’s man page: https://github.com/ruby/ruby/pull/8010

Updated by mame (Yusuke Endoh) 10 months ago

  • Status changed from Open to Assigned
  • Assignee set to matz (Yukihiro Matsumoto)

The proposed patch includes a change to treat it as unspecified with -1. I would like to get Matz's approval on this.

Updated by tomstuart (Tom Stuart) 10 months ago

My main goal is to allow RUBYOPT to support --backtrace-limit.

I am happy to remove the ability to say --backtrace-limit=-1 from my patch if it’s undesirable, but since -1 is already a meaningful value for the backtrace limit, it seems useful and unsurprising to allow it. For example, this makes it possible to use RUBYOPT to restore the default backtrace limit by saying RUBYOPT="--backtrace-limit=-1" ruby --backtrace-limit=5.

Updated by matz (Yukihiro Matsumoto) 10 months ago

Basically accepted, including --backtrace-limit=-1. But as far as I understand, command line options are (and should be) higher precedence than RUBYOPT.

Matz.

Updated by tomstuart (Tom Stuart) 10 months ago

Thank you for accepting!

Currently (i.e. on master with this patch applied), --backtrace-limit in RUBYOPT has higher precedence than the command line option:

% ruby -v
ruby 3.3.0dev (2023-07-13T07:54:27Z backtrace-limit-fi.. b1b0395cd1) [arm64-darwin22]
last_commit=Add `--backtrace-limit` option to the man page

% RUBYOPT="--backtrace-limit=10" ruby --backtrace-limit=5 -e "puts Thread::Backtrace.limit"
10

Is this a bug?

Updated by matz (Yukihiro Matsumoto) 10 months ago

Yes, it should be fixed. I think @nobu (Nobuyoshi Nakada) is working on it.

Matz.

Updated by nobu (Nobuyoshi Nakada) 10 months ago

https://github.com/ruby/ruby/pull/8068

Also you'll need the tests.

    env = {"RUBYOPT" => "--backtrace-limit=5"}
    assert_in_out_err([env], "p Thread::Backtrace.limit", ['5'], [])
    assert_in_out_err([env, "--backtrace-limit=1"], "p Thread::Backtrace.limit", ['1'], [])

Updated by tomstuart (Tom Stuart) 10 months ago

Thank you @nobu (Nobuyoshi Nakada). I’ve rebased https://github.com/ruby/ruby/pull/8010 onto master to include your fix, and added your test.

Actions #8

Updated by nobu (Nobuyoshi Nakada) 9 months ago

  • Status changed from Assigned to Closed
Actions

Also available in: Atom PDF

Like1
Like0Like0Like0Like0Like1Like0Like0Like0