Problems with FileUtils in Rake

C

Charles Comstock

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
 
N

nobu.nokada

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.
 
C

Charles Comstock

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
 
N

nobu.nokada

Hi,

At Sat, 19 Jun 2004 19:03:20 +0900,
Charles Comstock wrote in [ruby-talk:104118]:
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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Similar Threads

Problem with test:units:rcov 1
[ANN] dirwatch-0.9.0 4

Members online

Forum statistics

Threads
473,754
Messages
2,569,522
Members
44,995
Latest member
PinupduzSap

Latest Threads

Top