[#393742] Getting the class of an object. — Ralph Shnelvar <ralphs@...32.com>

Consider;

14 messages 2012/03/06

[#393815] arcadia IDE requires tcl/tk and ruby-tk — Thufir Hawat <hawat.thufir@...>

which or where tcl and tk does arcadia require? Is this a gem which I

13 messages 2012/03/13

[#393952] What’s the best way to check if a feature/class has been loaded? — Nikolai Weibull <now@...>

Hi!

18 messages 2012/03/21
[#393953] Re: What’s the best way to check if a feature/class has been loaded? — Xavier Noria <fxn@...> 2012/03/21

Active Support has recently added qualified_const_* methods to Module

[#393954] Re: What’s the best way to check if a feature/class has been loaded? — Xavier Noria <fxn@...> 2012/03/21

Ah, that won't work in 1.8.

[#393959] Re: What’s the best way to check if a feature/class has been loaded? — Nikolai Weibull <now@...> 2012/03/21

On Wed, Mar 21, 2012 at 16:43, Xavier Noria <fxn@hashref.com> wrote:

[#393960] Re: What’s the best way to check if a feature/class has been loaded? — Xavier Noria <fxn@...> 2012/03/21

On Wed, Mar 21, 2012 at 8:17 PM, Nikolai Weibull <now@bitwi.se> wrote:

[#393961] Re: What’s the best way to check if a feature/class has been loaded? — Nikolai Weibull <now@...> 2012/03/21

On Wed, Mar 21, 2012 at 20:48, Xavier Noria <fxn@hashref.com> wrote:

[#393962] Re: What’s the best way to check if a feature/class has been loaded? — Xavier Noria <fxn@...> 2012/03/21

On Wed, Mar 21, 2012 at 9:51 PM, Nikolai Weibull <now@bitwi.se> wrote:

[#393967] Re: What’s the best way to check if a feature/class has been loaded? — Nikolai Weibull <now@...> 2012/03/22

On Wed, Mar 21, 2012 at 22:11, Xavier Noria <fxn@hashref.com> wrote:

[#393969] Re: What’s the best way to check if a feature/class has been loaded? — Xavier Noria <fxn@...> 2012/03/22

On Thu, Mar 22, 2012 at 6:15 AM, Nikolai Weibull <now@bitwi.se> wrote:

[#394154] uninitialized constant SOCKSSocket — Resident Moron <lists@...>

I am running ruby 1.9.3 on a linux box. I would like to use

10 messages 2012/03/29

[#394160] Why z = Complex(1,2) rather than z = Complex.new(1,2)? — Ori Ben-Dor <lists@...>

What's this syntax, z = Complex(1,2), as opposed to z =

14 messages 2012/03/29

[#394175] shoes no such file to load -- rubygems — Mr theperson <lists@...>

I have installed shoes to develop GUI applications but when I try and

13 messages 2012/03/29

[#394201] Can't open url with a subdomain with an underscore — Jeroen van Ingen <lists@...>

I try to open the following URL: http://auto_diversen.marktplaza.nl/

10 messages 2012/03/30

[#394222] Ruby openssl ECC help plz — no name <lists@...>

I am confused on how to properly export public ECC key. I can see it

13 messages 2012/03/31

Re: What’s the best way to check if a feature/class has been loaded?

From: Xavier Noria <fxn@...>
Date: 2012-03-22 05:56:16 UTC
List: ruby-talk #393969
On Thu, Mar 22, 2012 at 6:15 AM, Nikolai Weibull <now@bitwi.se> wrote:

I mean that if const_defined? returns true, then between that code
> being executed and the call to const_get, some other piece of code may
> remove the constant, resulting in an uncaught NameError.
>

That's true.

 > The problem with const_get is that it follows the ancestors, of course,
> and
> > you have no way around that in 1.8.
>
> Yes, we’ve already come to that conclusion.  You don’t need to keep
> repeating it.
>

Because the proposed solutions are based on const_get, and they fail for
some inputs (in my interpretation of failure, which may not be yours).

 I see that you completely cut out the part about const_defined? not

> calling const_missing, which is a rather big part of the problem with
> using const_defined? in the first place.
>

We are supposedly emulating defined? somehow but for constant paths and
without going up the ancestor chain in each step doesn't it? defined? does
not call const_missing.


 > Nikolai, I don't really understand what you need.

>
> Xavier, please don’t begin sentences with the person you’re responding
> to’s name like that.  It’s like your speaking to me as if I was a
> child and it feels very condescending.
>

Sorry, it was not my intention to sound like that.


> And you refuse to reuse much more simple and proven existing solutions.
>
> You’re making it sound like I’m being stubborn.  I just don’t think
> your proposed solution is better.
>

The problem is that you don't really want qualified_const_defined?, you
need something else but I don't see clearly what it is.


I want a way to tell if a class or module has been defined/loaded.
> The check would then be to see if X was loaded in your example above,
> not X::Y.
>

I don't follow, in order to see if X::Y is a defined constant I need first
to check if X is a defined constant? Constants have single names "X", and
"Y". X::Y is a constant path. "X::Y" as such does not exist.


An alternative is to check $LOADED_FEATURES.  This isn’t
> straightforward either, as it doesn’t contain the exact argument given
> to require.  There are internal functions like rb_provided that could
> have been exposed to make it easy to check if a feature had been
> loaded/is available.
>

File names and class objects, and module objects, and constants... you
cannot derive one from the other. They are decoupled in Ruby except for the
fact that the class/module keywords assign, and that if you assign an
anonymus class/module to a constant, then its name is set after the
constant.

But in Ruby file foo.rb can define the constant Bar, which may hold a
module whose name is "Wadus". They are quite orthogonal features.

In This Thread