Seit Jahren verwende ich privat wie beruflich will_paginate. Da es stets gute Dienste leistete habe ich dies auch nie hinterfragt und bin nur durch die mangelnde Weiterentwicklung und Limitation-Warnung auf pagy gestoßen. Dieses punktet nicht mit Bescheidenheit, sondern mit den folgenden Aussagen: ~ 40x Faster!~ 36x Lighter!~ 35x Simpler!~ 1,410x More Efficient! Der Ansatz ist… Pagy-Gem für Paginierung weiterlesen
Kategorie: Software-Entwicklung
JSON-Warnungen in Rails-Projekten
Immer wieder tauchen bei mir folgende Warnungen auf: Eine schnelle (vermutlich nicht dauerhafte) Lösung ist bundle clean:
Vue-Code-Formatierung in VSCode
Mit .vue-Dateien und Visiual Studio Code hatte ich oft Probleme, nun aber endlich eine Konfiguration gefunden, die sowohl Javascript- wie auch HTML-Segmente automatisch überprüft und formatiert. Als Plugins kommen dabei ESLint und Vetur zum Einsatz, meine settings.json sieht folgendermaßen aus: Problem ist nun, dass das HTML nicht eingerückt wird, wenn ich die Vue-Standardeinstellungen verwende. Um… Vue-Code-Formatierung in VSCode weiterlesen
Vollständige Dependent-Einstellungen in Rails-Models testen
Ein selten, aber leider regelmäßig wiederkehrendes Problem sind Fremdschlüsselbeziehungen beim Löschen. In Rails muss auf Seite des Schlüsselziels definiert werden, ob ein Fremdschlüssel auf null gesetzt werden darf oder ob das ganze Model gelöscht werden muss. Vergisst man diese Konfiguration wirft die Datenbank beim Löschen einen Fehler. Um dies zu vermeiden möchte ich alle Fremdschlüssel,… Vollständige Dependent-Einstellungen in Rails-Models testen weiterlesen
Vue 2.6 mit neuer Syntax für Scope-Context
Die bisherige Syntax für Daten aus der Kindkomponente wirkte immer etwas gedoppelt, wenn der Scope einen Namen hatte: Mit Version 2.6 kann dies nun in einem Attribut vereint werden: Dank den neuen Dynamic Directive Arguments ist es auch kein Problem, wenn der Slot-Name dynamisch bestimmt werden muss:
Datenbeschaffung in Vue-Router-Views vereinfachen
created und watch Ein typisches Vue-Router-Szenario: Daten müssen initialisiert und bei Routen-Updates zurückgesetzt und geladen werden, da die Komponente nicht neu erzeugt sondern nur intern aktualisiert wird. Watchers und immediate: true Die Dopplung in created und watch kann durch einen Watcher mit der Eigenschaft immediate eliminiert werden: Neuladen statt Updaten Zudem kann man ein Neu-Rendern… Datenbeschaffung in Vue-Router-Views vereinfachen weiterlesen
Verwischte Font-Awesome-Icons in Phantom JS
Wir reichern unsere auf Capybara und Phantom JS basierenden Feature-Tests gerne mit Screenshots an. Hierbei kam es regelmäßig zu einem Problem mit Font Awesome, wodurch der automatische Abgleich fehl schlug. Bei einzelnen Specs tritt das Problem nicht auf, erst wenn mehrere Tests mit unterschiedlichen Seiten abgelichtet werden zeigte sich folgendes Phänomen: Alle Icons, wie hier das Such-Icon rechts,… Verwischte Font-Awesome-Icons in Phantom JS weiterlesen
Herausfinden, wo eine Methode definiert wurde
In manchen Situationen ist es alles andere als offensichtlich, welche Klasse oder welches Modul eine Methode bereitstellt. Wer implementiert die Get-Methode für Rspec-Controller-Tests? Gerade in solch zusammengewürfelten Umgebungen ist das nur schwer nachvollziehbar. Ruby hilft hierbei: Die Metamethode method gibt Auskunft, woher eine Methodendefinition stammt: require „rails_helper“ RSpec.describe MyController do it do puts method(:get) end end… Herausfinden, wo eine Methode definiert wurde weiterlesen
Factory-Girl-Daten im Development-Modus
Testdaten aus Factory-Girl lassen sich in einer Rails-Konsole auch für den Development-Modus (und entsprechend jeden anderen Modus) bereitstellen: require ‚factory_girl‘; FactoryGirl.find_definitions FactoryGirl.create :my_model
Rails-Konfiguration in Engine auslagern
Für die meisten Rails-Projekte verwende ich die gleichen Gems mit ähnlichen Konfigurationen. Um den Projektstart und den Update-Prozess zu vereinheitlichen, möchte ich eine Engine, die diese Abhängigkeiten und Konfigurationen übernimmt. Für den einfacheren Einstieg erzeuge ich innerhalb einer bestehenden Rails-App eine neue Engine: rails plugin new m3 –full Diese wird zu Testzwecken im Gemfile des Elternprojekts verlinkt: gem… Rails-Konfiguration in Engine auslagern weiterlesen