From: Robert Klemme Date: 2004-12-15T00:37:17+09:00 Subject: Re: Mixin questions "Kent Sibilev" schrieb im Newsbeitrag news:07703F80-4DE5-11D9-B79B-000A95C700E8@bellsouth.net... > By including a mixin module into a class you can add only instance > methods unless you implement Module#append_features(or > Module#included), if that's what you want to know. No. Note the fine difference between include and extend (see code below). But anyway thanks for calling. Also, with a little magic you can add class and instance methods either way (i.e. with include and extend). Kind regards robert > Cheers, > Kent. > > On Dec 14, 2004, at 7:52 AM, Johan Nilsson wrote: > > > > > "Robert Klemme" wrote in message > > news:327uc2F3j9j3eU1@individual.net... > >> > >> "Johan Nilsson" schrieb im > >> Newsbeitrag > >> news:1103018684.0021a1444d2417eb0d9c6eddf9e60f0d@teranews... > >>> Hi, > >>> > >>> some newbie questions: > >>> > >>> - How can/should I access a class constant from a mixin? The only > >>> thing > >> I've > >>> managed to get working is "const_get("name of const")". > >>> - Is it possible to access protected methods from mixins? I'm trying > >>> to > >>> create a mixin alike the following: > >>> > >>> --- > >>> module StaticCreateMixin > >>> def create_from(stuff) > >>> obj = self.new > >>> obj.my_stuff.!(stuff) > >>> obj > >>> end > >>> end > >>> > >>> class Foo > >>> extend StaticCreateMixin > >>> > >>> def my_stuff > >>> @stuff > >>> end > >>> > >>> protected :my_stuff > >>> end > >>> > >>> f = Foo.static_create("some stuff") > >> > >> Your example misses something, does it? It's not completely clear to > >> me > >> what you want to do. Or did you misspell create_from as > >> static_create? > > > > Oops. Yes, I'm a very bad speller (or it could be the > > "extract-a-minimal-sample-from-actual-code-but-don't-bother-to-test- > > it"-synd > > rome). > > > > In english, I want to create an instance of Foo from within the mixin's > > supplied class method. The first question still applies though. > > > > // Johan > > > > > > >