Bug #14322
closedInconsitency in command line options between 2.4 and 2.5
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
        
          
          Updated by jeremyevans0 (Jeremy Evans) almost 8 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) almost 8 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) almost 8 years ago
          
          
        
        
      
      wolf@wolfsden.cz 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) almost 8 years ago
          
          
        
        
      
      - File 0001-lib-ubygems.rb-restore-placeholder.patch 0001-lib-ubygems.rb-restore-placeholder.patch added
 - Status changed from Rejected to Open
 - Assignee set to hsbt (Hiroshi SHIBATA)
 - Backport changed from 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: UNKNOWN to 2.3: UNKNOWN, 2.4: UNKNOWN, 2.5: REQUIRED
 
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) almost 8 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) almost 8 years ago
          
          
        
        
      
      out of curiosity, why there was no deprecation phase for this change?
        
          
          Updated by arpitchauhan (Arpit Chauhan) over 7 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) over 7 years ago
          
          
        
        
      
      yeeey, +1 for not silently breaking stuff :)
        
          
          Updated by daniel-barrows (Daniel Barrows) about 7 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