Errata


SeiteÄnderung/Anmerkungen
0Im vorderen Einband fehlt die schließende Klammer von collection_select
15/16Für die Installation unter Mac OS sind root-Rechte notwendig, weshalb man entweder root ist oder überall sudo … verwenden muss (sudo ruby setup.rb und sudo gem install mysql).
24Es ist von Vorteil zunächst die Datenbank-Tabelle aus Listing 3.2 zu erzeugen und im Anschluss den Generator per „ruby script/generate scaffold project project“ aufzurufen.
26Listing 3.3: statt „app/model/iteration.rb“ muss es „app/models/iteration.rb“
26statt „rails script…“ muss es heissen: „ruby script/generate model iteration“
30Im Listing 3.8 fehlen die führenden <p>
33Im Listing 3.12 fehlt das schließende </tr>
Listing Überschrift 3.12 muss „app/views/project/show.rhtml“ heissen
40Im Listing 3.28 fehlt das schließende </tr>
47Im Listing 3.37 fehlt die schließende Klammer bei errors.add()
51Im Listing 3.44 muss es iterations(id) heissen
59Im Listing muss es statt user.mobile.to_s user.mobile_no.to_s heissen
68Es muss ruby_lead = Person.find … heissen.
74Feld name fehlt in Tabelle schedules: „name varchar(255) not null“ einfügen. Beide Definitionen haben eine schließende Klammer zu viel.
81Felder begin und end in Tabelle iterations sollten not null erzeugt werden.
81Tabelle iterations: Der Fremdschlüssel sollte statt fk_schedule_project fk_iteration_project heissen.
90city und street sind im Konstruktor vertauscht.
91Ausdruck :mapping => %w(street, city) ohne Komma, also :mapping => %w(street city)
92Tabelle people um Feld firstname erweitern: „firstname varchar(100) not null“ einfügen
98Tabelle tasks: Das Feld priotity muss priority heissen.
101In errors.add(„name“,…) echte Hochkommata verwenden, nicht ´
103Der Aufruf project.save schlägt fehl, da das Projekt (wie auf Seite 102 gefordert) keine description hat und nicht wegen dem fehlenden Namen in der Iteration.
104Im Aufruf validates_format_of der Klasse User muss der reguläre Ausdruck um ein i erweitert werden: …{2,})$/i,
104Fehler im Text: Statt „Der Parameter :width…“ muss es heissen: „Der Parameter :with…“
116In der Abbildung 5.2 ist die Datei protocol_controller.rb zu sehen. Es müsste hier die Datei project_controller.rb sein.
126Klasse ApplicationController: Statt „session_options = ::ActionController…“ muss es heissen: „session_options = ActionController…“
128Statt unless … false end besser einfach session[:person].role == Role::ADMIN, da der Ausdruck false oder true zurückliefert
129Statt after_filter: d muss es after_filter :d heissen (gleiches gilt für c)
132/133Der Code läßt sich zu session[:person] ||= Persion.new :firstname => ‚Ralf‘ vereinfachen.
147number_with_delimiter hat das Komma als Default, daher ist die erste gezeigte Ausgabe falsch.
150Statt :disabled => :true besser :disabled => „true“, da true hier ein HTML-Element darstellt und kein Ruby-Symbol.
151Das Attribut value=“Rails“ wird nicht erzeugt.
153Hinter <%= select_tag %> muss das </select> entfernt werden.
161Der Partial View verwendet genau genommen die Methoden aus dem Helper-Modul des Controllers. Zum vorherigen Codeausschnitt passend, muss der Controller MemberController statt ProjectController heissen und der Befehl helper :member.
178Genau genommen erscheint die Warnung wegen der Neudefinition einer Konstante und nicht wegen der Neudefinition des Arrays.
200Abschnitt 9.2, Zeile 8: Statt „Die WS-API-Klasse ServiceApi…“ muss es heissen: „Die WS-API-Klasse TaskApi…“
203Unteres Listing: Die Klasse ServiceController muss von ApplicationController::Base erben.
205Unteres Listing: Die Klasse DelegatedController muss von ApplicationController::Base erben.
208Statt false unless key_valid? params[0] else true einfach key_valid? params[0]
209Statt projects << Project.new … muss es projects << ProjectDto.new … heissen.
218Statt @iteration besser iteration und statt task besser @task. Es reicht render :partial => ‚task‘, da das Objekt automatisch übergeben wird und Partials ohne Layout gerendert werden.
219:field_id bezeichnet hier den ersten Parameter der Methode und nicht einen Schlüssel in der Optionen-Hash.
224session[:cart][book_id] = … kann vereinfacht werden: session[:cart][book_id] = (session[:cart][book_id] || 0) + 1
225Mitte: Statt „Zusätzlich akzeptiert sortable_elemen(t)…“ muss es heissen „Zusätzlich akzeptiert sortable_element…“
231Effect.Fade und Effect.Appear setzen nicht nur die Deckkraft, sondern auch die display-Eigenschaft.
259Es muss consider_all_requests_local = false heissen.
265Statt /ontack/public muss es /ontrack/public heissen.
265/266Es muss apache2ctl statt apach2ctl heissen.
290assigns ist ein Hash und keine Collection und es wird hier die Methode assigns verwendet und nicht der Hash selbst.
294assert_equal no_of_bookings … sollte nur einmal vorkommen.
300Es gibt in Ruby keine statischen/i> Methoden, es ist die Klassenmethode gemeint.
301„Eine Möglichkeit, dieses Problem zu umgehen“ … Diese Möglichkeit ist sehr schlecht, da die Tests dann stark von der echten Umgebung abweichen können. Besser: Die Fixtures in umgekehrter Reihenfolge im Teardown runterreißen, und die Fixtures in der Reihenfolge, in der sie angelegt werden können, importieren.
301Unter Rails 1.0 steht @accounts standardmäßig nicht zur Verfügung.
312/313assigns, flash, session und cookies sind Hashes, keine Collection
317Statt „nicht korrekt initialisiert“ sollte es besser „nicht initialisiert“ heissen, denn die Korrektheit wird hier nicht geprüft.
 
Dickes Dankeschön für die vielen Korrekturen an:Tammo Freese (business(at)tammofreese(dot)de)

Dank an:

  • Markus Fink (mail(at)finq(dot)net)
  • Ingo Paulsen (paulseni(at)uni-duesseldorf(dot)de)
  • Dirk V. Schesmer (dirk(dot)schesmer(at)mac(dot)com)
  • Stefan Schuster (st(dot)schuster(at)gmail(dot)com)
  • Peter-Hinrich Krogmann (peter-hinrich(dot)krogmann(at)gmx(dot)de)
  • Marco Kratzenberg (marco(dot)kratzenberg(at)gmx(dot)de)
  • Korrekturen Ruby-Pdf: Axel Rose (rose(at)sj(dot)com)
  • Thorsten Brückner (tb(at)bruto(dot)de)
  • Reiner Pittinger (reiner(at)pittinger(dot)de)
  • Paul Führing (paul(dot)fuehring(at)gmx(dot)net)
  • Vico Klump (vico(dot)klump(at)planet-interkom(dot)de)
  • Johannes Held (mail(at)hehejo(dot)de)
  • Ronald Sacher (sacher(at)manetmail(dot)de