Issue #5421 has been updated by Thomas Sawyer.


How was this fixed? I updated to latest 1.9.3-rc1.

  $ cat req.rb
  p "Custom Require"

  module Kernel
    alias :require0 :require

    def require(*a)
      puts "Kernel#require"
      p a
      require0(*a)
    end

    class << self
      alias :require0 :require

      def require(*a)
        puts "Kernel.require"
        p a
        require0(*a)
      end
    end
  end

  $ export RUBYOPT="-r./req.rb"
  $ ruby -rstringio -e'puts'

  "Custom Require"

And nothing else is outputed.

----------------------------------------
Feature #5421: -r option useless
http://redmine.ruby-lang.org/issues/5421

Author: Thomas Sawyer
Status: Rejected
Priority: Normal
Assignee: 
Category: core
Target version: 


Ran into a problem trying to require a plugin I had written while running a ruby scipt, e.g.

  $ ruby -rmyplugin script.rb

It tells me "no such file" for myplugin. Turns out the problem is that the -r option uses internal require code and thus circumvents rubygems or any modified #require, so even though my RUBYOPT="-rubygems", it makes no difference. I've also been informed that RUBYOPT is applied after -r options, which makes for an additional problem. Apparently this so -T can ignore RUBYOPT? But if that's the only reason, then -T should be preparsed from ARGV b/c having -r options load first prevents augmentation and use of what RUBYOPT loads by -r. RUBYOPT is supposed to set the environment, but it isn't much of an environment if its not there when I run a ruby command.

I've marked this report as a feature b/c I'm sure someone would take issue if I did otherwise, but I personally see it as a bug b/c it makes -r useless in many cases. 




-- 
http://redmine.ruby-lang.org