Das WordPress-Plugin WP Inject integriert eine Flicker-Suche in WordPress, mit der man Bilder nach festgelegter Lizenz suchen, auf den Server kopieren, einbinden und die Quelle referenzieren kann. Da ich in einem Staat mit dem Landgericht Köln lebe, habe ich den Spaß mal auf kommerzielle Nutzung ohne Zitatpflicht eingegrenzt. Leider bringt selbst die Suche nach „Wordpress“… WordPress-Plugin WP Inject: CC-Bilder einfügen 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
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
Git-Commit-Messages aus Redmine-Issues
Ein nerviges Prozedere ist das Suchen nach Issue-Nummern, wenn ich via Git eine Änderung commiten möchte. Git kann hier helfen und bietet mit seinen Hooks die Möglichkeit eigene Skripts in allen denkbaren Situationen auszulösen. Hierzu zählt auch die Modifikation der Commit-Message-Vorlage, die Git mit Status-Kommentaren füllt: # Please enter the commit message for your changes.… Git-Commit-Messages aus Redmine-Issues 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
Vim Surround, Zeilennummern, Coffeescript und Probleme mit dem Mausmodus
Teil 3 meiner Erfahrungen vom Umstieg von Sublime zu Vim. vim.surround cd ~/.vim/bundle git clone git://github.com/tpope/vim-surround.git Dieses Plugin erlaubt es (unter anderem), bestimmte umschließende Zeichen der aktuellen Position zu ersetzen. So lassen sich die umschließenden doppelten Anführungszeichen mittels cs“‚ („change surrounding double quotes to single quotes“) ersetzen. Surround unterstützt Anführungszeichen, Klammern und auch HTML.
Rspec: Arrayvergleich ohne Reihenfolge
Um zwei Arrays auf Gleichheit der Elemente zu testen, ohne dabei die Reihenfolge zu beachten, kann der Rspec-Matcher match_array verwendet werden: expect([1, 2, 3]).to match_array([1, 2, 3]) ✔ expect([1, 2, 3]).to match_array([3, 2, 1]) ✔ expect([1, 2, 3]).to match_array([1, 2, 4]) ✘
:s/sublime/vim/ – Mäuse, Speichern, Zeilenschieben und mehr
Nach den kosmetischen Details des ersten Artikels geht es heute um einige Standardaktionen, die mich als Entwickler begleiten.