The mystery of File::append

Discussion in 'Ruby' started by Nit Khair, Sep 18, 2008.

  1. Nit Khair

    Nit Khair Guest

    $ 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-forum.com/.
    Nit Khair, Sep 18, 2008
    #1
    1. Advertising

  2. 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
    Stefano Crocco, Sep 18, 2008
    #2
    1. Advertising

  3. Nit Khair

    Nit Khair Guest

    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-forum.com/.
    Nit Khair, Sep 18, 2008
    #3
  4. 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
    Stefano Crocco, Sep 18, 2008
    #4
  5. Nit Khair

    Trans Guest

    On Sep 18, 3:27=A0am, Nit Khair <> 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.
    Trans, Sep 18, 2008
    #5
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. David Laub

    Resource File mystery entries

    David Laub, Feb 19, 2004, in forum: ASP .Net
    Replies:
    2
    Views:
    501
    David Laub
    Feb 23, 2004
  2. HYRY
    Replies:
    10
    Views:
    605
    Bruno Desthuilliers
    Sep 26, 2007
  3. David Laub

    resx Resource File mystery entries

    David Laub, Feb 20, 2004, in forum: ASP .Net Web Controls
    Replies:
    0
    Views:
    128
    David Laub
    Feb 20, 2004
  4. Astra

    Include file mystery

    Astra, Mar 8, 2006, in forum: ASP General
    Replies:
    2
    Views:
    103
  5. PerlFAQ Server
    Replies:
    0
    Views:
    388
    PerlFAQ Server
    Feb 24, 2011
Loading...

Share This Page