Ruby Tips

From EggeWiki
Jump to: navigation, search

Contents

Shuffle a word

The same technique to shuffle an array of numbers can be used to shuffle words. This is great if you want to scramble words, as in creating anagram puzzles.

'anagram'.split(//).shuffle.join
=> "gnaarma"

Shuffle a list of numbers

(1..14).to_a.sort {rand <=> 0.5}
=> [14, 8, 1, 9, 3, 10, 5, 11, 7, 12, 4, 13, 2, 6]
# or
(1..14).to_a.shuffle
=> [2, 5, 8, 12, 4, 3, 6, 13, 7, 11, 10, 1, 9, 14]

Rename files

for f in `ls`; do mv -u $f $(ruby -e "puts '$f'.gsub('14','13')"); done

Check CLASSPATH

#!/bin/env ruby
#
# Checks to make sure all the entries on the classpath are valid
 
# We only want to emit color codes if we're outputting to a terminal.  If this is getting piped into grep or less, we'll ignore these
red=STDOUT.isatty ? "\e[1;31m" :""
normal=STDOUT.isatty ? "\e[0;0m" : ""
 
cp = ENV['CLASSPATH']
 
if cp == nil then
  STDERR.puts "No CLASSPATH set"
  exit 1
else
  # We'll assume a Windows CP.  We could do something ticky, but we have to be very tricky, because we're probably in Cygwin
  cp.split(';').each do |file|
    if !File.readable?(file) then
      STDERR.puts "Warning: Classpath file #{red}#{file}#{normal} can't be read"
    end
  end
end

nextPrime

Short script to return the next prime number.

#!/bin/env ruby
 
def isPrime(n)
  prime = true
  3.step(Math::sqrt(n), 2) do |i|
    if (n % i == 0) then
      prime = false
      break
    end
  end
  if (( n%2 !=0 && prime && n > 2) || n == 2) then
    return true
  else
    return false
  end
end
 
i = ARGV[0].to_i
 
while !isPrime(i)
  i += 1
end
 
puts i

Colorize Glimpse

Tab Completion in IRb

Add this to your .irbrc.

 require 'irb/completion'
 ARGV.concat [ "--readline", "--prompt-mode", "simple" ]

Thanks [why].

Ruby Patch to Zip

A script to take an Eclipse generated patch file, and zip every file which is referenced in the patch.

Ruby gems on Cygwin

aka how to fix ruby: no such file to load -- ubygem (LoadError) or /usr/bin/ruby: no such file to load -- ubygems (LoadError)

$ unset RUBYOPT
$ cd /tmp/
$ wget http://rubyforge.org/frs/download.php/20989/rubygems-0.9.4.tgz
$ tar -zxf rubygems-0.9.4.tgz
$ cd rubygems-0.9.4
$ ruby setup.rb

Ruby detab

A script for removing tabs from source files

Ruby Sybase Solaris

Error Messages

irb

Setup tab completion and history here: http://wiki.rubygarden.org/Ruby/page/show/Irb/TipsAndTricks

Ruby Sybase Install

Escape invalid XML characters.

This is useful for running stuff through before posting it to the wiki.

echo "<a href=\"foo\">" | ruby -pe 'gsub!(/\&/, "&"); gsub!(/"/, """); gsub!(/</, "<"); gsub!(/>/, ">"); '
&lt;a href=&quot;foo&quot;&gt;
Personal tools