From: Leslie Viljoen Date: 2008-02-19T16:43:34+09:00 Subject: Modules: The Secret H method Hello! I am having a hard time using modules. It seems that to successfully use one, you need to know all sorts of obscure things about the environment that the module expects. For example, I want to use Webby::Helpers::UrlHelper. This module refers to a @pages variable that I have to provide in the class that "include"s the module. That is not so hard, but I can only find that requirement via experimentation. If I provide the @pages variable in my class, I then find that the module refers to a method "h". I know rails has a helper method "h", but cannot otherwise find one, despite all my grep -ir "def h" on the entire standard library and all gems (well, "rack" has such a method too, but Webby never uses rack AFAIK). So is this how people normally use modules, or am I doing something stupid? How is anyone supposed to know the possibly highly complex requirements of a module - or does it fall to documentation again? There's a similar problem with calling *any* methods that take parameters in Ruby - how can you get a list of all the methods that will be applied to the object you passed in? Either the documentation says "pass in a string" and then you are expected to pass in something that responds to ALL of string's methods, or the documentation must list every method applied, along with its signature. All the documentation I have seen uses option A: it mentions the class to pass in. Which renders duck-typing shot, unless I descend from that class perhaps? BTW: where can I find the secret "h" method? Les