|
|||
irb läuft von der Komandozeile aus.
irb [irb-options][ruby_script][options] |
Kommandozeilen-Optionen für irb
| |||||||||||||||||||||||||||||||||||||||||||||
~/.irbrc, .irbrc, irb.rc,
_irbrc und $irbrc.
Innerhalb der Initialisierungs-Datei kann man jeglichen Ruby-Code laufen lassen.
Man kann desweiteren jeden Konfigurierungs-Wert setzen, der in Tabelle B.2 auf Seite
524 angegeben ist.
irb Konfigurierung-Werte
| ||||||||||||||||||||||||||||||||||||
IRB.conf[:IRB_RC] auf ein Proc-Objekt zu setzen. Dann wird
diese Prozedur jedes Mal aufgerufen, wenn der irb-Kontext sich ändert und bekommt
den neuen Kontext als Parametr mit. Man kann das nutzen, um die Konfiguration
abhängig vom Kontext dynamisch zu ändern.
exit, quit, irb_exitcb
die Bindungen verändert hat (siehe unten), wird dieser Bindungs-Modus verlassen.
conf, irb_contextconf bewirken.
conf.back_trace_limit nconf.debug_level = Nconf.ignore_eof = true/falseconf.ignore_sigint= true/falseconf.inf_ruby_mode = true/falsetrue, ändert den Prompt und schaltet den Readline-Support aus,
womit Ruby im inf-ruby-mode arbeiten kann .
[Im inf-ruby-mode kann man im Emacs beim Editieren mit
Ruby interagieren. Siehe die Datei inf_ruby.el im
misc-Verzeichnis der Distribution.]
Der Default-Wert ist false.
conf.inspect_mode = true/false/niltrue |
Zeige Inspect an (default). |
false |
Zeige to_s an. |
nil |
Inspect-Modus für Nicht-Math-Modus, Nicht-Inspect-Modus für Math-Modus. |
conf.irb_levelcb).
conf.math_modeconf.use_loader = true/falseload/require.
conf.prompt_cconf.prompt_iconf.prompt_sconf.rc = true/false~/.irbrc benutzt werden soll.
conf.use_prompt = true/falseconf.use_readline = true/false/niltrue |
Benutze Readline. |
false |
Benutze Readline nicht. |
nil |
Benuzte Readline außer im inf-ruby-mode (default). |
conf.verbose=true/falsecb, irb_change_binding [obj]irb [obj]jobs, irb_jobsfg n, irb_fg n| irb-Unter-Session-Nummer |
| thread id |
| irb-Objekt |
| self (das obj, das eine spezeille Unter-Session gestartet hat) |
kill n, irb_kill nirb_fg beschriebenen
Werte sein.
IRB.conf[:PROMPT] |
.irbrc):
IRB.conf[:PROMPT][:MY_PROMPT] = { # name of prompt mode
:PROMPT_I => "...", # normal prompt
:PROMPT_S => "...", # prompt for continuing strings
:PROMPT_C => "...", # prompt for continuing statement
:RETURN => " ==>%s\n" # format to return value
}
|
% irb --prompt my-prompt
Oder man setzt den folgenden Konfigurations-Wert:
IRB.conf[:PROMPT_MODE] = :MY_PROMPT |
PROMPT_I, PROMPT_S und PROMPT_C
geben das Format für jeden dieser Prompt-Strings an. Innerhalb des Prompt-Formats
kann es die folgenden Flags geben, die den angegebenen Text erzeugen:
| Flag | Beschreibung | |||||||
%N |
Aktuelles Komando. | |||||||
%m |
to_s des Haupt-Objekts (self). |
|||||||
%M |
inspect des Haupt-Objekts (self). |
|||||||
%l |
Begrenzungs-Zeichen. In Strings, die über eine Zeile hinausgehen, zeigt
%l den Typ des Begrenzers am Anfang des Strings an, damit man
weiß, wie man ihn beenden soll. Der Begrenzer ist einer von
", ', /, ] oder `. |
|||||||
%ni |
Level der Einrückung. Die optionale Zahl n gibt die Breite für printf an,
wie beiprintf("%nd"). |
|||||||
%nn |
Aktuelle Zeilen-Nummer (n wie beim Level der Einrückung). | |||||||
%% |
Ein literales Prozent-Zeichen. | |||||||
IRB.conf[:PROMPT_MODE][:DEFAULT] = {
:PROMPT_I => "%N(%m):%03n:%i> ",
:PROMPT_S => "%N(%m):%03n:%i%l ",
:PROMPT_C => "%N(%m):%03n:%i* ",
:RETURN => "%s\n"
}
|
eval "a = 0" a |
prog.rb:2: undefined local variable or method `a' |
irb(main):001:0> eval "a = 0" 0 irb(main):002:0> a 0In irb wurde die Zuweisung ausgeführt, bevor die zweite Zeile betrachtet wird, deshalb wird ``a'' zutreffend als lokale Variable erkannt. Wenn man das Ruby-Verhalten genauer abbilden will, kann man diese Anweisungen in ein
begin/end-Paar setzen.
irb(main):001:0> begin irb(main):002:1* eval "a = 0" irb(main):003:1> a irb(main):004:1> end NameError: undefined local variable or method `a' (irb):3:in `irb_binding'
rtags ist ein Kommando, mit dem eine TAGS-Datei für entweder
den emacs- oder den vi-Editor erzeugt werden kann.
rtags [-vi][files]... |
TAGS-Datei passend für den emacs erzeugt (siehe
etags.el). Die -vi-Option erzeugt eine TAGS-Datei für den vi.
rtags muss genauso installiert werden wie irb (das heißt, man muss irb im
Bibliotheks-Pfad installieren und einen Link von
irb/rtags.rb nach bin/rtags setzen).
require "irb/xmp" xmp <<END artist = "Doc Severinsen" artist END |
artist = "Doc Severinsen" ==>"Doc Severinsen" artist ==>"Doc Severinsen" |
require "irb/xmp" x = XMP.new x.puts <<END artist = "Louis Prima" END x.puts <<END artist END |
artist = "Louis Prima" ==>"Louis Prima" artist ==>"Louis Prima" |
xmp code_string, abinding XMP.new(abinding) |
IRB::Frame-Klasse repräsentiert den Stack des Interpreters
und erlaubt den einfachen Zugriff auf die effektive
Bindungs-Umgebung auf verschiedenen Stack-Leveln.
IRB::Frame.top(n = 0) |
Liefert ein Binding
für den n-ten Kontext von oben. Der 0-te Kontext ist der oberste, zuletzt benutzte
Frame. |
|||||||
IRB::Frame.bottom(n = 0) |
Liefert ein Binding für den n-ten Kontext von unten.
Der 0-te Kontext ist der unterste, ursprünglich Frame. |
|||||||
IRB::Frame.sender |
Liefert das Objekt (den Absender), das die aktuelle Methode aufgerufen hat. | |||||||
require 'irb/frame' def outie b = IRB::Frame.top(1) eval "p my_local", b end def innie my_local = 102.7 outie end innie |
102.7 |