[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

The mystery of File::append

Nit Khair

9/18/2008 2:51:00 AM

$ ri File::append
gives me:

File::append( file, str )
------------------------------------------------------------------------
Append to a file.

CREDIT: George Moschovitis

`$ri File` also shows me append as a class method.

However, my html documentation does not give this (1.8.6). Trying to use
`File::append` in irb or ruby fails (no such method). Even google has no
entry for this class method.

What mistake am I making ?
--
Posted via http://www.ruby-....

4 Answers

Stefano Crocco

9/18/2008 7:01:00 AM

0

Alle Thursday 18 September 2008, Nit Khair ha scritto:
> $ ri File::append
> gives me:
>
> File::append( file, str )
> ------------------------------------------------------------------------
> Append to a file.
>
> CREDIT: George Moschovitis
>
> `$ri File` also shows me append as a class method.
>
> However, my html documentation does not give this (1.8.6). Trying to use
> `File::append` in irb or ruby fails (no such method). Even google has no
> entry for this class method.
>
> What mistake am I making ?

It's part of the facets library. Unfortunately, ri doesn't show the name of
the file where a method or class is defined or the library or gem it comes
from. To use that method, since it seems you already have facets installed,
you need to do this:

require 'rubygems' #unless it's already defined in the RUBYOPT environment
#variable
require 'facets/file/write'
File.append(file, str)

I hope this helps

Stefano


Nit Khair

9/18/2008 7:28:00 AM

0

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.)
--
Posted via http://www.ruby-....

Stefano Crocco

9/18/2008 8:37:00 AM

0

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/...), 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



Trans

9/18/2008 1:01:00 PM

0



On Sep 18, 3:27=A0am, Nit Khair <sentinel.2...@gmx.com> wrote:
> Stefano Crocco wrote:
> > It's part of the facets library. Unfortunately, ri doesn't show the nam=
e
>
> 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.

It is:

require 'facets/{class|module}/{method_name}'

There are some exceptions where one method is in the same file as
another (eg. write/append), but these are being worked out and should
be almost not existent in another release or two. Even so, require
'facets' hides all that.

> 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> =A0 include Console::ANSICode
> NameError: uninitialized constant Console
> =A0 from (irb):11

It's just

require 'facets/ansicode'

ANSICode

The Console:: namespace has been deprecated. The docs just need to be
fixed.

T.