irb启动时能自动引入指定文件吗?

悬赏:10 发布时间:2008-08-06 提问人:sw2wolf (初级程序员)

在python中可以通过环境变量PYTHONSTARTUP指定python启动时自动引入的文件, ruby中如何实现类似功能呢?

采纳的答案

2008-08-06 rainux (中级程序员)

在 $HOME 目录里创建一个 .irbrc 文件,然后在里面写任意 Ruby 代码即可。例如这是我的 .irbrc

require 'rubygems'
require 'pp'
require 'irb/completion'
require 'irb/ext/save-history'

$KCODE = 'u'

IRB.conf[:SAVE_HISTORY] = 100
IRB.conf[:HISTORY_FILE] = "#{ENV['HOME']}/.irb-save-history" 
IRB.conf[:PROMPT_MODE]  = :SIMPLE

# Just for Rails...
if rails_env = ENV['RAILS_ENV']
  rails_root = File.basename(Dir.pwd)
  IRB.conf[:PROMPT] ||= {}
  IRB.conf[:PROMPT][:RAILS] = {
    :PROMPT_I => "#{rails_root}> ",
    :PROMPT_S => "#{rails_root}* ",
    :PROMPT_C => "#{rails_root}? ",
    :RETURN   => "=> %s\n" 
  }
  IRB.conf[:PROMPT_MODE] = :RAILS

  # Called after the irb session is initialized and Rails has
  # been loaded (props: Mike Clark).
  IRB.conf[:IRB_RC] = Proc.new do
    ActiveRecord::Base.logger = Logger.new(STDOUT)
    ActiveRecord::Base.instance_eval { alias :[] :find }
  end
end

def mp(message, color = nil)
  case color
  when 'red'    : color = '31;1'
  when 'green'  : color = '32;1'
  when 'yellow' : color = '33;1'
  when 'blue'   : color = '34;1'
  when 'purple' : color = '35;1'
  when 'sky'    : color = '36;1'
  else color = '36;1'
  end
  print "\e[#{color}m#{message}\e[0m\n" 
end

# vim: set ft=ruby:

提问者对于答案的评价:
非常好, 谢谢!

其他回答

ruby的irb是不行的,没有这个参数
我想问是的,你一定非得是在irb环境下吗???
如果是rails的话,默认情况下已经已经加载/lib还有/vendor/plugin等文件目录.
qichunren (资深程序员) 2008-08-06