Feature #19752
closedAllow `--backtrace-limit` to appear in RUBYOPT
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) over 1 year 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) over 1 year 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) over 1 year 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) over 1 year 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) over 1 year ago
Yes, it should be fixed. I think @nobu (Nobuyoshi Nakada) is working on it.
Matz.
Updated by nobu (Nobuyoshi Nakada) over 1 year 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) over 1 year 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.
Updated by nobu (Nobuyoshi Nakada) over 1 year ago
- Status changed from Assigned to Closed