![show/hide quicksearch [+]](./images/find.png)
Path to the currently running Ruby program
Run a Ruby interpreter with the given arguments.
Example:
ruby %{-pe '$_.upcase!' <README}
 
               # File rake/file_utils.rb, line 91
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
             
            Attempt to do a normal file link, but fall back to a copy if the link fails.
 
               # File rake/file_utils.rb, line 104
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
             
            Run the system command cmd.  If multiple arguments are given
the command is run directly (without the shell, same semantics as
Kernel::exec and Kernel::system).
It is recommended you use the multiple argument form over interpolating
user input for both usability and security reasons.  With the multiple
argument form you can easily process files with spaces or other shell
reserved characters in them.  With the multiple argument form your rake
tasks are not vulnerable to users providing an argument like ; rm #
-rf /.
If a block is given, upon command completion the block is called with an OK flag (true on a zero exit status) and a Process::Status object. Without a block a RuntimeError is raised when the command exits non-zero.
Examples:
sh 'ls -ltr' sh 'ls', 'file with spaces' # check exit status after command runs sh %{grep pattern file} do |ok, res| if ! ok puts "pattern not found (status = #{res.exitstatus})" end end
 
               # File rake/file_utils.rb, line 45
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 a file path into individual directory names.
Example:
split_all("a/b/c") =>  ['a', 'b', 'c']
            
            
             
               # File rake/file_utils.rb, line 122
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