The documentation is very straight forward and the mentioned example
also cleared all the lines except the one mentioned inside **.
http://ruby-doc.org/core-2.0.0/Module.html#method-...
Creates module functions for the named methods. These functions may be
called with the module as a receiver, and also become available as
instance methods to classes that mix in the module. Module functions are
copies of the original, and so may be changed independently. The
instance-method versions are made private. *If used with no arguments,
subsequently defined methods become module functions.*
module Mod
def one
"This is one"
end
module_function :one
end
class Cls
include Mod
def call_one
one
end
end
Mod.one #=> "This is one"
c = Cls.new
c.call_one #=> "This is one"
module Mod
def one
"This is the new one"
end
end
Mod.one #=> "This is one"
c.call_one #=> "This is the new one"
Please help me to understand what does mean by "If used with no
arguments, subsequently defined methods become module functions."?

On Aug 29, 2013, at 2:16 PM, Love U Ruby <lists@ruby-forum.com> wrote:
> Please help me to understand what does mean by "If used with no> arguments, subsequently defined methods become module functions."?
That means you can use it as a means of saying "All the methods defined
below are module functions":
Module M
def foo
end
module_function
def bar
end
def baz
end
end
and so you can then call M.bar and M.baz, but not M.foo.
This is identical to:
Module M
def foo;end
def bar;end
def baz;end
module_function :bar, :baz
end
It is *also* identical to:
Module M
def foo;end
def self.bar; end
def self.baz; end
end