Dynamic finding of missing constants.

Discussion in 'Ruby' started by Ola Bini, Nov 25, 2005.

  1. Ola Bini

    Ola Bini Guest

    Hi.

    I'm doing some slightly interesting things with Ruby, and I wanted to know
    of there's a language way of interrupting the process for finding a
    Constant name, like the method_missing method. The closest thing I've been
    able to work out is to rescue the NameError at some toplevel, but this is
    not transparent enough for me. Anyone have good any good suggestions?

    Regards
    Ola Bini
     
    Ola Bini, Nov 25, 2005
    #1
    1. Advertising

  2. On Nov 25, 2005, at 10:22 AM, Ola Bini wrote:

    > Hi.
    >
    > I'm doing some slightly interesting things with Ruby, and I wanted
    > to know of there's a language way of interrupting the process for
    > finding a Constant name, like the method_missing method.


    Yep, const_missing().

    James Edward Gray II
     
    James Edward Gray II, Nov 25, 2005
    #2
    1. Advertising

  3. Ola Bini

    ts Guest

    >>>>> "O" == Ola Bini <> writes:

    O> I'm doing some slightly interesting things with Ruby, and I wanted to know
    O> of there's a language way of interrupting the process for finding a
    O> Constant name, like the method_missing method.

    You have Module#const_missing

    moulon% ri Module#const_missing
    --------------------------------------------------- Module#const_missing
    mod.const_missing(sym) => obj
    ------------------------------------------------------------------------
    Invoked when a reference is made to an undefined constant in _mod_.
    It is passed a symbol for the undefined constant, and returns a
    value to be used for that constant. The following code is a (very
    bad) example: if reference is made to an undefined constant, it
    attempts to load a file whose name is the lowercase version of the
    constant (thus class +Fred+ is assumed to be in file +fred.rb+). If
    found, it returns the value of the loaded class. It therefore
    implements a perverse kind of autoload facility.

    def Object.const_missing(name)
    @looked_for ||= {}
    str_name = name.to_s
    raise "Class not found: #{name}" if @looked_for[str_name]
    @looked_for[str_name] = 1
    file = str_name.downcase
    require file
    klass = const_get(name)
    return klass if klass
    raise "Class not found: #{name}"
    end

    moulon%


    Guy Decoux
     
    ts, Nov 25, 2005
    #3
  4. Ola Bini

    Ola Bini Guest

    At 17:28 2005-11-25, you wrote:
    >On Nov 25, 2005, at 10:22 AM, Ola Bini wrote:
    >
    >>Hi.
    >>
    >>I'm doing some slightly interesting things with Ruby, and I wanted
    >>to know of there's a language way of interrupting the process for
    >>finding a Constant name, like the method_missing method.

    >
    >Yep, const_missing().
    >
    >James Edward Gray II


    Ah, sorry. Thanks for the pointer. I thought I checked for it. But
    apparently my brain is fried after to much friday-work.

    /O
     
    Ola Bini, Nov 25, 2005
    #4
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. UJ
    Replies:
    1
    Views:
    392
    Cowboy \(Gregory A. Beamer\)
    Jun 14, 2006
  2. Gary Herron
    Replies:
    2
    Views:
    670
    Bruno Desthuilliers
    Jul 4, 2006
  3. Harsha Srinath

    Finding Repeated and Missing Numbers

    Harsha Srinath, Jun 27, 2005, in forum: C Programming
    Replies:
    9
    Views:
    508
    Lawrence Kirby
    Jun 27, 2005
  4. Krzysztof Loch

    Dynamic variables in blocks vs constants

    Krzysztof Loch, Sep 7, 2010, in forum: Ruby
    Replies:
    2
    Views:
    106
    Krzysztof Lo
    Sep 7, 2010
  5. David Lewis
    Replies:
    0
    Views:
    224
    David Lewis
    May 1, 2011
Loading...

Share This Page