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
+