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
Schlagwort: Ruby
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
„Rake aborted!“ durch abweichende Version
Stimmt die aktuell installierte Rake-Version nicht mit der im Gemfile.lock hinterlegten Version überein, bricht Rake mit einer Fehlermeldung ab: rake routes rake aborted! You have already activated rake 10.1.1, but your Gemfile requires rake 10.1.0. Using bundle exec may solve this.
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
RVM: Gemset erstellen und .versions.conf anlegen
Memo an mich selbst: Ein neues Gemset einrichten und mittels .versions.conf als Standard für das aktuelle Verzeichnis festlegen: rvm use –create –versions-conf ruby-2.1@gemset_name In aller Regel benötige ich auch Bundler: gem install bundler
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