今天運行 rails c 的時候提示我 no such file to load -- wirble 才想起來當年我有訂製過 ~/.irbrc 這個文件。
不知道大家現在還有這麼玩的麼?
# encoding: utf-8
# Making .irbrc posted at http://www.tech-angels.fr/post/963080350/improve-irb-and-fix-it-on-mac-os-x
# Work with rails3
require 'rubygems'
# Rails3: be sure to include wirble, hirb, pasteboaRb and awesome_print in your Gemfile
require 'wirble'
require 'hirb'
require 'pasteboaRb' # pasteboaRb is a Ruby interface to Mac OS X's Pasteboard.
require 'irb/completion' # You can discover what methods can be called on an object by Double-TAB.
require 'ap' # Pretty print your Ruby objects with style -- in full color and with proper indentation
# load wirble
Wirble.init
Wirble.colorize
# load hirb
# hirb (active record output format in table)
Hirb::View.enable
ANSI = {}
ANSI[:RESET] = "\e[0m"
ANSI[:BOLD] = "\e[1m"
ANSI[:UNDERLINE] = "\e[4m"
ANSI[:LGRAY] = "\e[0;37m"
ANSI[:GRAY] = "\e[1;30m"
ANSI[:RED] = "\e[31m"
ANSI[:GREEN] = "\e[32m"
ANSI[:YELLOW] = "\e[33m"
ANSI[:BLUE] = "\e[34m"
ANSI[:MAGENTA] = "\e[35m"
ANSI[:CYAN] = "\e[36m"
ANSI[:WHITE] = "\e[37m"
# IRB Options
IRB.conf[:AUTO_INDENT] = true
IRB.conf[:SAVE_HISTORY] = 1000
IRB.conf[:EVAL_HISTORY] = 200
if defined?(Rails)
  require 'logger'
  Rails.logger=Logger.new(STDOUT)
  #IRB.conf[:USE_READLINE] = true
  ActiveRecord::Base.logger = Rails.logger
  # Display the RAILS ENV in the prompt
  # ie : [Development]>>
  IRB.conf[:PROMPT][:CUSTOM] = {
   :PROMPT_N => "[#{Rails.env.capitalize}]>> ",
   :PROMPT_I => "[#{Rails.env.capitalize}]>> ",
   :PROMPT_S => nil,
   :PROMPT_C => "?> ",
   :RETURN => "=> %s\n"
   }
  # Set default prompt
  IRB.conf[:PROMPT_MODE] = :CUSTOM
end
# We can also define convenient methods (credits go to thoughtbot)
def sql(query)
  ActiveRecord::Base.connection.select_all(query)
end
# annotate column names of an AR model
def show(obj)
  y(obj.send("column_names"))
end
# Add a method pm that shows every method on an object
# Pass a regex to filter these
def pm(obj, *options)
  methods = obj.methods
  methods -= Object.methods unless options.include? :more
  filter = options.select {|opt| opt.kind_of? Regexp}.first
  methods = methods.select {|name| name =~ filter} if filter
  data = methods.sort.collect do |name|
    method = obj.method(name)
    if method.arity == 0
      args = "()"
    elsif method.arity > 0
      n = method.arity
      args = "(#{(1..n).collect {|i| "arg#{i}"}.join(", ")})"
    elsif method.arity < 0
      n = -method.arity
      args = "(#{(1..n).collect {|i| "arg#{i}"}.join(", ")}, ...)"
    end
    klass = $1 if method.inspect =~ /Method: (.*?)#/
    [name.to_s, args, klass]
  end
  max_name = data.collect {|item| item[0].size}.max
  max_args = data.collect {|item| item[1].size}.max
  data.each do |item|
    print " #{ANSI[:YELLOW]}#{item[0].to_s.rjust(max_name)}#{ANSI[:RESET]}"
    print "#{ANSI[:BLUE]}#{item[1].ljust(max_args)}#{ANSI[:RESET]}"
    print " #{ANSI[:WHITE]}#{item[2]}#{ANSI[:RESET]}\n"
  end
  data.size
end
class Object
  def local_methods
    (methods - Object.instance_methods).sort
  end
  def to_pboard(pboard=:general)
    %x[printf %s "#{self.to_s}" | pbcopy -pboard #{pboard.to_s}]
    paste pboard
  end
  alias :to_pb :to_pboard
end
puts "****************************************************************************"
puts "* All systems are go wirble/hirb/pasteboaRb/auto-completion/awesome_print. *"
puts "* You can discover what methods can be called on an object by Double-TAB.  *"
puts "* You have some useful methods:                                            *"
puts "* sql(query), show(class.name), obj.local_methods, obj.to_pb, ap(obj)      *"
puts "* pm(obj, *options)                                                        *"
puts "* pm object, :more - shows all methods including base Object methods       *"
puts "* pm object, :more, /to/ - shows all methods filtered by regexp            *"
puts "*                                                                          *"
puts "* Example:                                                                 *"
puts "* Annotate column names of an AR model.                                    *"
puts "* >> show Role                                                             *"
puts "*                                                                          *"
puts "* Print role methods and copy them into Mac OS X’s Pasteboard.             *"
puts "* >> ap Role.first.local_methods.to_pb                                     *"
puts "*                                                                          *"
puts "* Print all of the methods for the object filtered by regexp.              *"
puts "* >> ap pm Role.first, /user/                                              *"
puts "*                                                                          *"
puts "* Import table() and view().                                               *"
puts "* >> extend Hirb::Console                                                  *"
puts "* >> urls = Url.all :limit=>2, :order=>'id DESC'; table urls               *"
puts "* >> table urls, :fields=>[:id, :name, :description]                       *"
puts "*                                                                          *"
puts "* You can also define convenient methods in ~/.irbrc file.                 *"
puts "****************************************************************************"