Ah.  I see the confusion.

I don't know if I'm going about this in the right way.  I
want to represent a machine.  Machines may be different
hardware types.  It gets a role for the hardware type that
supplies methods that might be able to powercycle it.  I am
applying the hardware-specific role using apply_all_roles to
the instance rather than consuming a role in the class.
(Since it gets a different role based on which type it is,
and each one of these roles supplies the same named method.)
I just wanted to double-check when I apply the role to the
object that it is the correct type.

But I really wouldn't apply the object to the wrong type,
since the base class has a method to figure all that out and
apply the right one.  So this probably isn't necessary, it
would just be a nice cross-check.

Mark

On Thu, 12 Jan 2012, Edward Allen wrote:

> Ok.  This doesn't really make sense.  Here is the problem:  A role is
> applied to a class, not an object (technically you can apply it to an
> object with Moose::Util::apply_all_roles, but this seems like a Bad
> Idea).  A class doesn't have attributes (well there's a module for
> that, but let's ignore that for the time being).  A class has methods.
> So you can test if a method exists, but not if that method returns a
> particular value.
>
> -Edward
>
> On Thu, Jan 12, 2012 at 2:57 PM, Mark Hedges <hed...@formdata.biz> wrote:
> >
> > Hi.  I'm trying to figure out how a role, when applied to an
> > object, can verify that the object already has a particular
> > attribute and that its conents equal some string.  Am I
> > missing something in the cookbook?  It is sort of backwards
> > from the usual way that an object requires the role can do
> > something or has an attribute.
> >
> > I want to cross check when the role gets applied that the
> > role has everything in the object that the methods it
> > supplies needs to work.
> >
> > I suppose I can just verify this when methods run and then
> > throw an error to say the role got applied to the wrong
> > object, but I'd rather throw that from the place that I
> > apply the role.
> >
> > Mark
> >
>

Reply via email to