History der Rails-Console reaktiviert
November 19th, 2009
Irgendwann, vermutlich nach einem Update von Ruby und/oder Rails, stand die History meiner Rails Console nicht mehr zur Verfügung.
Nachdem ich damit eine gewisse Zeit leben konnte, wollte ich heute dem Grund auf die Schliche kommen.
Nach einigem Probieren kam ich darauf, dass die Konsole und deren History unter ~/.irb_history schon funktioniert. Sie wird allerdings durch die Datei ~/.rdebug_hist erweitert.
Ein Durchlaufen der einzelnen Einträge durch "Pfeil-Taste hoch" lief erst durch die Einträge des Debuggers und fand dann irgendwann auch die Einträge aus ~/.irb_history. Man musste nur oft genug Tippen :).
Ein Löschen der Datei ~/.rdebug_hist führte dazu, dass die letzten Einträge in der Konsole beim nächsten Aufruf sofort zur Verfügung standen.
Die Datei ~/.rdebug_hist wird durch ruby-debug (genauer ruby-debug-0.10.3/cli/ruby-debug/interface.rb) eingelesen und geschrieben. Ich habe den Code noch nicht ganz durchschaut, aber die Datei wurde trotz des Einsatzes des Debuggers bisher nicht wieder erzeugt. Sicherheitshalber habe ich die Datei selbst schreibgeschützt angelegt, um eine erneute Erzeugung zu vermeiden.
touch ~/.rdebug_hist
chmod 400 ~/.rdebug_hist
Logging in der Rails-Console reaktiviert
Darüber hinaus habe ich das Aktivieren und Deaktivieren der Logausgaben
in der Rails-Konsole wieder hinbekommen. Meine ~/.irbrc sieht wie folgt aus:
1 2 3 4 5 Wirble.init 6 Wirble.colorize 7 8 9 system(%{ri }) 10 end 11 12 if ENV.include?('RAILS_ENV') 13 14 15 ActiveRecord::Base.connection.select_all(query) 16 end 17 18 19 set_logger Logger.new(STDOUT) 20 end 21 22 23 set_logger @logger 24 end 25 26 27 ActiveRecord::Base.connection.instance_variable_get("@logger") 28 end 29 30 31 @logger ||= get_logger 32 ActiveRecord::Base.connection.instance_variable_set("@logger", logger) 33 end 34 35 end 36
Update: Ich nutze Rails 2.3.4 und Ruby ruby 1.8.7
