scripts/irbrc.rb in rvm-1.0.9 vs scripts/irbrc.rb in rvm-1.0.10

- old
+ new

@@ -1,22 +1,45 @@ # This is the common irbrc file used by all rvm ruby installations. # This file will be overriden every time you update rvm. # Turn on completion. begin -require "readline" + require "readline" + + require "irb/completion" rescue nil + + # Turn on history saving. + # require "irb/ext/save-history" + # IRB.conf[:HISTORY_FILE] = File.join(ENV["HOME"], ".irb-history") + + # Use an alternate way to on history saving until save-history is fixed. + # + # bug: http://redmine.ruby-lang.org/issues/show/1556 + # patch: http://pastie.org/513500 + # + # This technique was adopted from /etc/irbrc on OS X. + histfile = File.expand_path(".irb-history", ENV["HOME"]) + + if File.exists?(histfile) + lines = IO.readlines(histfile).collect { |line| line.chomp } + Readline::HISTORY.push(*lines) + end + + Kernel::at_exit do + maxhistsize = 100 + histfile = File::expand_path(".irb-history", ENV["HOME"]) + lines = Readline::HISTORY.to_a.reverse.uniq.reverse + lines = lines[-maxhistsize, maxhistsize] if lines.compact.length > maxhistsize + File::open(histfile, "w+") { |io| io.puts lines.join("\n") } + end + rescue puts "Readline was unable to be required, if you need completion or history install readline then reinstall the ruby.\nYou may follow 'rvm notes' for dependencies and/or read the docs page http://rvm.beginrescueend.com/packages/readline/ . Be sure you 'rvm remove X ; rvm install X' to re-compile your ruby with readline support after obtaining the readline libraries." end -require "irb/completion" rescue nil -# Turn on history saving. -require "irb/ext/save-history" -IRB.conf[:HISTORY_FILE] = File.join(ENV["HOME"], ".irb-history") - # Calculate the ruby string. -rvm_ruby_string = ENV["rvm_ruby_string"] || "#{RUBY_ENGINE rescue 'ruby'}-#{RUBY_VERSION}-#{(RUBY_PATCHLEVEL) ? "p#{RUBY_PATCHLEVEL}" : "r#{RUBY_REVISION}"}" +rvm_ruby_string = ENV["rvm_ruby_string"] || `rvm tools identifier`.strip.split("@", 2)[0] # Set up the prompt to be RVM specific. @prompt = { :PROMPT_I => "#{rvm_ruby_string} > ", # default prompt :PROMPT_S => "#{rvm_ruby_string}%l> ", # known continuation @@ -35,5 +58,6 @@ rescue LoadError => load_error puts load_error rescue => exception puts "Error : 'load #{ENV["HOME"]}/.irbrc' : #{exception.message}" end +