Peter Szinek wrote: > Hello, > > I guess the subject is silly - but since I need something like Java's > "package private" I have used a similar name. > > What I would need is an additional access modifier, something like this: > > Module Foo > class Bar > #public methods > baz() > fluff() > module_private > ork() > private > crap() > end > end > > baz() and fluff() are public as normally, crap() is private as normally. > ork() is "module private" which means it is visible to the caller only > if the caller is *also* in the module Foo - otherwise not. > > Can this behavior achieved somehow easily? "local methods". they've been discussed before, so for more details you can do a search for them. but ruby doesn't support them. I'm don't think it can be achieved from the "defining end" (w/o changien ruby itself) but something like it is possible from the calling end by using Facets' as(Foo).ork, eg. foo.instance_method(:ork).bind(self).call. Alternatively you could define a local lambda, but to call it you have to use define_method: ork = lambda { ... define_method(:foo) do ork[] end if state is not an issue (eg instance variable access) then you can always make a module method: def self.ork ... hth, t.