James Hunt wrote:
> 
> I believe the primary different shows up when the module is included
> in another class. 
> 
> Using your explicit definition as such:
> 
> module MyExplicitModule
>   def MyExplicitModule.greet
>     puts "hello, explicitly!"
>   end
> end
> 
> class MyExplicitClass
>   include MyExplicitModule
> 
>   def hello
>     greet
>   end
> end
> 
> MyExplicitModule.greet
> MyExplicitClass.new.greet
> 
> The output of this code when run is
> hello
> module_function.rb:31:in `hello': undefined local variable or method
> `greet' for #<MyExplicitClass:0xb7cc7eac> (NameError)
>         from module_function.rb:36
> 

Using your last example with module_function, I get the same result:

module MyModule
    def greet
        puts "hello"
    end

    module_function :greet
end

class MyClass
    include MyModule
end

MyModule.greet
MyClass.new.greet


--output:--
hello
r1test.rb:13: private method `greet' called for #<MyClass:0x25490> 
(NoMethodError)

So, I'm not seeing any difference.
-- 
Posted via http://www.ruby-forum.com/.