From: Stefano Crocco Date: 2008-09-18T17:36:54+09:00 Subject: Re: The mystery of File::append Alle Thursday 18 September 2008, Nit Khair ha scritto: > Stefano Crocco wrote: > > It's part of the facets library. Unfortunately, ri doesn't show the name > > Aah, thanks. Yes, I used facets last year... > > However, would be grateful if you could tell me how to decide what to > use in the require statement for a facets class. Whenever i use facets, > i struggle to figure out the require statement. What is shown in the > examples often does not work. > > Some while back I came upon ProgressBar. It took me a while of trying to > figure out the require. > > Then Console::ANSICode gives an example: "include Console::ANSICode" > > irb(main):011:0> include Console::ANSICode > NameError: uninitialized constant Console > from (irb):11 > > I tried many combinations, finally "require 'facets/ansicode'" did not > give an error but still the "include Console::ANSICode" gives the error > above. > I can't remember if I managed to make the example run or not. > > (I have started with require rubygems and facets.) According to the facets documentation, a simple require 'facets' will require all the Core facets library. If you want to load only the Core methods for a single class (for example, the File class), you can do require 'facets/file' If you want only to load a specific method, you can find the file where it's defined by looking up the method you're interested to in the facets rdoc api (http://facets.rubyforge.org/doc/index.html), then clicking on the "show source" link. This will display the source code for the method. At the top of the source code, there's a comment with the name of the file where the method is defined. This is the file you need to require. Note, however, that that line starts with something like 'lib/core/facets/.../'. You should only put the part of the string starting with facets in your call to require. All what I said is valid for recent versions of facets, so if you have an old version, you may need to update it. Stefano Stefano