Project

General

Profile

Actions

Bug #14322

closed

Inconsitency in command line options between 2.4 and 2.5

Added by graywolf (Gray Wolf) about 6 years ago. Updated over 5 years ago.

Status:
Rejected
Target version:
-
[ruby-core:84664]

Description

How command-line options are handled was changed between 2.4 and 2.5

[ wolf@ws ] :: ~
Load: 0.33 2.40 3.64 , Memory: 4.48 %, Disk: 77.69 %
   $ ruby -rubygems -e 'puts Gem.user_dir'
Traceback (most recent call last):
	1: from /usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
/usr/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require': cannot load such file -- ubygems (LoadError)

[ wolf@ws ] :: ~
Load: 0.28 2.33 3.60 , Memory: 4.48 %, Disk: 77.69 %
:( $ ruby -rrubygems -e 'puts Gem.user_dir'
/home/wolf/.gem/ruby/2.5.0

[ wolf@ws ] :: ~
Load: 0.18 2.14 3.50 , Memory: 4.48 %, Disk: 77.69 %
   $ ruby-2.4 -rubygems -e 'puts Gem.user_dir'
/home/wolf/.gem/ruby/2.4.0

[ wolf@ws ] :: ~
Load: 0.40 2.12 3.48 , Memory: 4.49 %, Disk: 77.69 %
   $ ruby --version
ruby 2.5.0p0 (2017-12-25 revision 61468) [x86_64-linux]

[ wolf@ws ] :: ~
Load: 0.41 1.57 3.12 , Memory: 4.63 %, Disk: 77.69 %
   $ ruby-2.4 --version
ruby 2.4.3p205 (2017-12-14 revision 61247) [x86_64-linux]

was this intentional?


Files

0001-lib-ubygems.rb-restore-placeholder.patch (721 Bytes) 0001-lib-ubygems.rb-restore-placeholder.patch normalperson (Eric Wong), 01/06/2018 12:49 AM

Updated by jeremyevans0 (Jeremy Evans) about 6 years ago

  • Status changed from Open to Rejected

Yes, ubygems.rb was removed intentionally. This is mentioned in the NEWS file for 2.5.0.

Updated by graywolf (Gray Wolf) about 6 years ago

Hm, guess I should read not only the web version but also the detailed one. Guess this wasn't "notable" enough. Thx :)

Updated by normalperson (Eric Wong) about 6 years ago

wrote:

Bug #14322: Inconsitency in command line options between 2.4 and 2.5
https://bugs.ruby-lang.org/issues/14322

was this intentional?

Sadly, yes, and done without warning. I should've pushed
harder for a long deprecation period about this :x

http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/83144

We should try to fix this for 2.5.1

Updated by normalperson (Eric Wong) about 6 years ago

We must not break existing use cases (including commands which
may show up in shell scripts and Makefiles) without deprecation
warnings.

Updated by hsbt (Hiroshi SHIBATA) about 6 years ago

  • Status changed from Open to Rejected
  • Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: REQUIRED to 2.3: DONTNEED, 2.4: DONTNEED, 2.5: DONTNEED

It's an intentional change. I have no plan to revert it.

Updated by graywolf (Gray Wolf) about 6 years ago

out of curiosity, why there was no deprecation phase for this change?

Updated by arpitchauhan (Arpit Chauhan) almost 6 years ago

graywolf (Gray Wolf) wrote:

out of curiosity, why there was no deprecation phase for this change?

This commit on Mar 3, 2018 did deprecate it, but it says that ubygems.rb may be removed on or after Dec 1, 2018. https://github.com/rubygems/rubygems/commit/8933115bff09402f6baaffe2f2bf6971f71081fb#diff-5be91e1eedfcea837d44a272469a25b2

Updated by graywolf (Gray Wolf) almost 6 years ago

yeeey, +1 for not silently breaking stuff :)

Updated by daniel-barrows (Daniel Barrows) over 5 years ago

Run this script with a shell to workaround the issue:

#!/bin/sh
# Copyright:: 2018 Daniel Barrows
# License::   zlib/libpng
# https://gist.github.com/daniel-barrows/ca8359b76ad9bb84b37593a9f7b695fc

# Leave warn variable empty to not output the deprecation warning.
warn=true
if ruby -e exit 2>&1 \
   | grep 'cannot load such file -- ubygems (LoadError)' >/dev/null; then
  which sudo >/dev/null 2>&1 && sudo=sudo
  ruby_lib_dir="$( ruby -e 'exit 0' 2>&1 | grep 'cannot load such file' \
                   | sed 's,/rubygems/core_ext.\+,,' )"
  if ! [ -z "$warn" ]; then
    warning_msg="warn 'WARNING: -rubygems flag is deprecated. Use -rrubygems.'"
  fi
  printf "#!/usr/bin/env ruby\n%s\nrequire 'rubygems'\n" "$warning_msg" \
  | $sudo tee "$ruby_lib_dir/ubygems.rb" > /dev/null
fi

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0Like0