Problems with FileUtils in Rake

Discussion in 'Ruby' started by Charles Comstock, Jun 19, 2004.

  1. Why is it that the following rakefile code works:

    task :examples do
    sh %{rm -rf ~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w bench/example.rb}
    sh %{rm -rf ~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w bench/example2.rb}
    sh %{rm -rf ~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w tutorial/example1.rb}
    sh %{rm -rf ~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w tutorial/example2.rb}
    end

    produces valid output of:

    [761 cc1@earwig ~/install/RubyInline-3.0.1]$ rake examples
    (in /.autofs/home/s/c/cc1/install/RubyInline-3.0.1)
    rm -rf ~/.ruby_inline
    ruby -Ilib/inline.rb -w bench/example.rb
    Type = Inline C , Iter = 1000000, T = 1.59424400 sec, 0.00000159 sec / iter
    rm -rf ~/.ruby_inline
    ruby -Ilib/inline.rb -w bench/example2.rb
    hello
    hello
    hello
    rm -rf ~/.ruby_inline
    ruby -Ilib/inline.rb -w tutorial/example1.rb
    ......
    rm -rf ~/.ruby_inline
    ruby -Ilib/inline.rb -w tutorial/example2.rb
    ......


    but

    task :examples do
    rm_rf %{~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w bench/example.rb}
    rm_rf %{~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w bench/example2.rb}
    rm_rf %{~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w tutorial/example1.rb}
    rm_rf %{~/.ruby_inline}
    ruby %{-Ilib/inline.rb -w tutorial/example2.rb}
    end

    produces:

    [762 cc1@earwig ~/install/RubyInline-3.0.1]$ rake examples
    (in /.autofs/home/s/c/cc1/install/RubyInline-3.0.1)
    rm -rf ~/.ruby_inline
    ruby -Ilib/inline.rb -w bench/example.rb
    Type = Inline C , Iter = 1000000, T = 1.83316400 sec, 0.00000183 sec / iter
    rm -rf ~/.ruby_inline
    ruby -Ilib/inline.rb -w bench/example2.rb
    bench/example2.rb:29: undefined method `hello' for #<MyTest:0x4007fa00>
    (NoMethodError)
    rake aborted!
    Command Failed: [ruby -Ilib/inline.rb -w bench/example2.rb]
    ../Rakefile:61

    both of these tests are using:

    ruby 1.8.2 (2004-06-04) [i686-linux]

    My assumption is that FileUtils.rm_rf is not actually doing it's job.
    This is validated by the fact that ~/.ruby_inline does not appear to be
    correctly deleted in the second example.

    So why is it FileUtils.rm_rf is not doing it's job when it should just
    call through to rm -rf?

    Charles Comstock
    Charles Comstock, Jun 19, 2004
    #1
    1. Advertising

  2. Charles Comstock

    Guest

    Hi,

    At Sat, 19 Jun 2004 17:38:20 +0900,
    Charles Comstock wrote in [ruby-talk:104116]:
    > task :examples do
    > rm_rf %{~/.ruby_inline}


    rm_rf File.expand_path(%{~/.ruby_inline})

    FileUtils itself doesn't do tilde-expansion.

    --
    Nobu Nakada
    , Jun 19, 2004
    #2
    1. Advertising

  3. wrote:

    > Hi,
    >
    > At Sat, 19 Jun 2004 17:38:20 +0900,
    > Charles Comstock wrote in [ruby-talk:104116]:
    >
    >>task :examples do
    >> rm_rf %{~/.ruby_inline}

    >
    >
    > rm_rf File.expand_path(%{~/.ruby_inline})
    >
    > FileUtils itself doesn't do tilde-expansion.
    >


    Ah. Hmm. Is there a way to force it to do tilde expansion if the
    functionality is available? The application won't work without posix
    support anyway, so isn't this something we could assume? Or is that an
    unfair assumption? What is the preferred way to deal with this?

    Charles Comstock
    Charles Comstock, Jun 19, 2004
    #3
  4. Charles Comstock

    Guest

    Hi,

    At Sat, 19 Jun 2004 19:03:20 +0900,
    Charles Comstock wrote in [ruby-talk:104118]:
    > >>task :examples do
    > >> rm_rf %{~/.ruby_inline}

    > >
    > >
    > > rm_rf File.expand_path(%{~/.ruby_inline})
    > >
    > > FileUtils itself doesn't do tilde-expansion.
    > >

    >
    > Ah. Hmm. Is there a way to force it to do tilde expansion if the
    > functionality is available? The application won't work without posix
    > support anyway, so isn't this something we could assume? Or is that an
    > unfair assumption? What is the preferred way to deal with this?


    Which application do you mention about, Rake?

    Including this module may work, instead of FileUtils:

    module Tilde
    module_function
    def rm_rf(*args)
    args.collect!{|n|File.expand_path(n) rescue break}
    FileUtils.rm_rf(*args)
    end
    end

    --
    Nobu Nakada
    , Jun 19, 2004
    #4
    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. Joe Van Dyk
    Replies:
    2
    Views:
    102
    Damphyr
    Jan 31, 2006
  2. peppermonkey
    Replies:
    1
    Views:
    238
    Gregory Brown
    Feb 10, 2007
  3. Ronald Fischer

    rake + FileUtils == warining

    Ronald Fischer, Aug 29, 2007, in forum: Ruby
    Replies:
    4
    Views:
    109
    Ronald Fischer
    Aug 31, 2007
  4. Adam Anderson
    Replies:
    1
    Views:
    129
    Adam Anderson
    Sep 19, 2007
  5. James Mead
    Replies:
    0
    Views:
    141
    James Mead
    Jan 15, 2008
Loading...

Share This Page