From: Ntys Dd on
it's like this
.........................
module Bar
def foo
puts 'hello'
end
def bye
puts 'bye'
end
end

def Bar.foo
#Do something
#I want to call foo now
#And call bye
#...
end
.........................

is there anything i can to to solve the problem
--
Posted via http://www.ruby-forum.com/.

From: Josh Cheek on
[Note: parts of this message were removed to make it a legal post.]

On Sat, Jun 12, 2010 at 12:33 AM, Ntys Dd <ntysdd(a)gmail.com> wrote:

> it's like this
> .........................
> module Bar
> def foo
> puts 'hello'
> end
> def bye
> puts 'bye'
> end
> end
>
> def Bar.foo
> #Do something
> #I want to call foo now
> #And call bye
> #...
> end
> .........................
>
> is there anything i can to to solve the problem
> --
> Posted via http://www.ruby-forum.com/.
>
>

I won't advocate this as a solution, but it does seem to meet your
criterion.


module Bar
def foo
puts 'hello'
end
def bye
puts 'bye'
end
end



# Extends Bar's singleton class with its own instance methods
p (class << Bar ; self ; end).ancestors
Bar.extend Bar
p (class << Bar ; self ; end).ancestors


# since Bar is now an ancestor of itself, we can call super from within
class methods
def Bar.foo
puts "doing something"
super
bye
end

Bar.foo

From: Robert Klemme on
On 06/12/2010 07:33 AM, Ntys Dd wrote:
> it's like this
> ........................
> module Bar
> def foo
> puts 'hello'
> end
> def bye
> puts 'bye'
> end
> end
>
> def Bar.foo
> #Do something
> #I want to call foo now
> #And call bye
> #...
> end
> ........................
>
> is there anything i can to to solve the problem

It does not really make sense since the first #foo you define is an
instance method while the latter is a class method. When you have a
class you do not have an instance available so on what instance would
you intend to invoke #foo on? It can only work the other way round: you
have the instance method invoking the class (module) method.

module Bar
def self.foo
puts "module method"
end

def foo
puts "instance method"
Bar.foo
end
end

irb(main):011:0> o = Object.new.extend Bar
=> #<Object:0x910a418>
irb(main):012:0> o.foo
instance method
module method
=> nil

Of course you can also do

module Bar
def uber_foo
foo
bye
end
end

Kind regards

robert

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/