Was beim Unit-Testing getestet werden sollte

Die zentrale Idee des Unit-Testings ist Isolation. Man testet einzelne Komponenten, Abhängigkeiten werden als gegeben und korrekt angesehen und ggf. gemockt. Dies macht das  Testen der einzelnen Komponente übersichtlicher, da nur ihre Pfade betrachtet werden müssen. In der Regel wird hierbei ein Blackbox-Ansatz verfolgt. Die zu testende Funktionalität (meist eine öffentliche Methode) wird nur von… Was beim Unit-Testing getestet werden sollte weiterlesen

Guard erkennt keine Sublime-3-Änderungen

Sublime Text 3 hat das Speichern von Dateien umgestellt, so dass Guard dieses nicht mehr als Änderung registriert. Abhilfe schafft hier eine Rückkehr zum alten Ansatz. Hierfür unter „Preferences“ > „Settings — User“ die folgende Option setzen: { … „atomic_save“: false, … }

CanCanCan ist kein CanCan 2.0

Außerhalb meiner Wahrnehmung gibt es auf Github seit einiger Zeit ein Projekt, dass CanCan für tot erklärt und dessen Nachfolge antreten will: CanCanCan. 17 Menschen haben zum Projekt der „CanCanCommunity“ bereits beigetragen. So wird das kleine Gem von Ryan Bates, der seit längerer Zeit aufgrund gesundheitlicher Probleme ausfällt, weitergeführt. Wichtige Fixes für Rails 4 finden… CanCanCan ist kein CanCan 2.0 weiterlesen

Rails 4 schützt Nutzer vor Regex-Schwachstellen

Rails 4 warnt seine Nutzer vor einer weit verbreiteten Sicherheitslücke, die durch falsche Anwendung von regulären Ausdrücken auftritt. So sind Validatoren wie der folgende nicht mehr erlaubt: validates :phone, format: { with: /^[0-9]+$/ } Dies wirft einen Argument-Error wie diesen: `check_options_validity‘: The provided regular expression is using multiline anchors (^ or $), which may present… Rails 4 schützt Nutzer vor Regex-Schwachstellen weiterlesen

Methoden-Ketten: Rubys Object#tap und Datenkapselung

Eine nette, mir bisher unbekannte Methode ist Rubys Object#tap, der man einen Block übergeben kann, in dem das Objekt als Argument zur Verfügung steht. Klingt im ersten Moment vielleicht unnötig, kann aber insbesondere in Views für etwas schöneren Code sorgen. Ein kleines Negativbeispiel in HAML: %table %tbody %tr %td= current_company.name %td= current_company.owner ? „#{current_company.owner.first_name} #{current_company.owner.last_name}“… Methoden-Ketten: Rubys Object#tap und Datenkapselung weiterlesen

Formtastics I18n-Cache abschalten

Formtastic ist ein wahrer Segen, da es die Erzeugung und Lokalisierungen von Formularen in Rails dramatisch vereinfacht. Nervig ist nur, dass Änderungen an der Lokalisierungsdatei während der Entwicklung nicht übernommen werden. Grund hierfür ist ein Cache, der die recht komplexen Suchanfragen nach passenden Übersetzungen minimieren soll. Um im Entwicklungsbetrieb nicht ständig den Server neustarten zu… Formtastics I18n-Cache abschalten weiterlesen

Ruby, Currying und Block-Vereinfachung

Der für mich faszinierendste Aspekt funktionaler Programmierung ist das Currying. Es erlaubt das Erzeugen neuer Funktionen, indem ein oder mehrere Argumente einer Ausgangsfunktion vorbelegt werden. Auch in der objektorientierten Entwicklung bieten sich solche Ansätze an. Mir fällt dies immer dann auf, wenn ich in Ruby bei einem Array#map einen Block angeben muss und das Gefühl… Ruby, Currying und Block-Vereinfachung weiterlesen

RSpec durch Parallelisierung beschleunigen

Mit der testgetriebenen Entwicklung gibt es vor allem ein großes Problem: Finished in 2 minutes 32.8 seconds 547 examples, 0 failures, 4 pending Schon in einem frühen Stadium läuft die Testsuite locker zwei Minuten. Parallel Tests will die Dauer verkürzen, indem es Tests auf mehreren Prozessorkernen gleichzeitig ausführt. Ein wesentlicher Aspekt bei der Parallelisierung ist… RSpec durch Parallelisierung beschleunigen weiterlesen