In Files

  • rake/file_utils.rb

FileUtils

Constants

LN_SUPPORTED
RUBY

Path to the currently running Ruby program

Public Instance Methods

ruby(*args, &block) click to toggle source

Run a Ruby interpreter with the given arguments.

Example:

ruby %{-pe '$_.upcase!' <README}
 
               # File rake/file_utils.rb, line 79
def ruby(*args, &block)
  options = (Hash === args.last) ? args.pop : {}
  if args.length > 1
    sh(*([RUBY] + args + [options]), &block)
  else
    sh("#{RUBY} #{args.first}", options, &block)
  end
end
            
safe_ln(*args) click to toggle source

Attempt to do a normal file link, but fall back to a copy if the link fails.

 
               # File rake/file_utils.rb, line 92
def safe_ln(*args)
  if ! LN_SUPPORTED[0]
    cp(*args)
  else
    begin
      ln(*args)
    rescue StandardError, NotImplementedError
      LN_SUPPORTED[0] = false
      cp(*args)
    end
  end
end
            
sh(*cmd, &block) click to toggle source

Run the system command cmd. If multiple arguments are given the command is not run with the shell (same semantics as Kernel::exec and Kernel::system).

Example:

sh %Q{ls -ltr}

sh 'ls', 'file with spaces'

# check exit status after command runs
sh %Q{grep pattern file} do |ok, res|
  if ! ok
    puts "pattern not found (status = #{res.exitstatus})"
  end
end
 
               # File rake/file_utils.rb, line 33
def sh(*cmd, &block)
  options = (Hash === cmd.last) ? cmd.pop : {}
  shell_runner = block_given? ? block : create_shell_runner(cmd)
  set_verbose_option(options)
  options[:noop] ||= Rake::FileUtilsExt.nowrite_flag
  Rake.rake_check_options options, :noop, :verbose
  Rake.rake_output_message cmd.join(" ") if options[:verbose]

  unless options[:noop]
    res = rake_system(*cmd)
    status = $?
    status = Rake::PseudoStatus.new(1) if !res && status.nil?
    shell_runner.call(res, status)
  end
end
            
split_all(path) click to toggle source

Split a file path into individual directory names.

Example:

split_all("a/b/c") =>  ['a', 'b', 'c']
 
               # File rake/file_utils.rb, line 110
def split_all(path)
  head, tail = File.split(path)
  return [tail] if head == '.' || tail == '/'
  return [head, tail] if head == '/'
  return split_all(head) + [tail]
end
            

Commenting is here to help enhance the documentation. For example, code samples, or clarification of the documentation.

If you have questions about Ruby or the documentation, please post to one of the Ruby mailing lists. You will get better, faster, help that way.

If you wish to post a correction of the docs, please do so, but also file bug report so that it can be corrected for the next release. Thank you.

If you want to help improve the Ruby documentation, please visit Documenting-ruby.org.

blog comments powered by Disqus