Probleme mit gem und rake Befehlen unter Windows 7 x64

Eigentlich sollte es ganz einfach sein Ruby und Ruby gems ordentlich zum Laufen zu bringen, schließlich habe ich das jetzt auch nicht zum ersten Mal gemacht. Windows 7 x64 hielt aber gerade eine neue Überraschung für mich bereit.

Nach erfolgreicher Installation wollte ich ein Update für gems über gem update --system -y vornehmen. Das führte zu folgender Fehlermeldung:

sh.exe": /c/Web/Ruby/bin/gem: D:/Users/Luis/projects/oss/installer2-trunk/ruby/bin/ruby.exe bad interpreter: no medium

» Den gesamten Beitrag Probleme mit gem und rake Befehlen unter Windows 7 x64 lesen


Zend Framework – Das zf Command Line Tool

Es ging mal wieder hoch her in der letzten Zeit, ein neues Projekt hat meine ganze Aufmerksamkeit gefordert. Seit langem habe ich wieder Zeit für etwas Web-Entwicklung und da wollte ich mir die neue Version vom Zend Framework angucken (1.10.2). Zuletzt habe ich mit der 1.5 gearbeitet, es gibt also viel Neues zu entdecken.

Doch gleich am Anfang hakte es. Das zf Command Line Tool wollte nicht so, wie ich es gerne hätte, bzw. wie es die Online-Hilfe suggerierte. Beim Anlegen eines neuen Projekts erhielt ich nur folgende Meldung:

PHP Warning: mkdir(): No such file or directory in C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Tool\Project\Provider\Project.php on line 55

Warning: mkdir(): No such file or directory in C:\Program Files\Zend\ZendServer\share\ZendFramework\library\Zend\Tool\Project\Provider\Project.php on line 55

An Error Has Occurred
Could not create requested project direcotry 'test'
[...]

» Den gesamten Beitrag Zend Framework – Das zf Command Line Tool lesen


<base href /> in Kombination mit HTML Ankern verwenden

Man stößt doch immer mal wieder auf Probleme, die auf den ersten Blick absurd sind und bei denen man sich wundert, dass man sie vorher noch nie bemerkt hat. Ein solches Problem ist mir heute untergekommen: Die Verwendung vom base-Tag und Anker-Links (also Verweise innerhalb einer einzelnen Seite).

Hier tritt das Problem auf, dass der Anker an die im base-Tag angegebene Adresse angehängt wird und man bei einem Klick zu dieser weitergeleitet wird – das ist ja nun wirklich nicht der Sinn und Zweck eines Ankers.

» Den gesamten Beitrag <base href /> in Kombination mit HTML Ankern verwenden lesen


Interessanter Vortrag zu JavaScript: “JavaScript: The Good Parts”

Erst kürzlich habe ich diesen Vortrag vom JavaScript Guru Douglas Crockford entdeckt, den er auf der im Rahmen der Google Tech Talks Web Exponents Serie am 27. Februar 2009 gehalten hat.


Google Chrome bekommt in der neusten Beta endlich Erweiterungen (extensions)

Es gibt ja mittlerweile schon eine – für die kurze Zeit beachtliche – Anzahl an Erweiterungen für Google Chrome, zumindest, wenn man die aktuelle Beta installiert hat.

Diese läuft bei mir bisher einwandfrei und ich bleibe zuversichtlich, dass das so bleibt. Ein paar Erweiterungen konnte ich auch schon identifizieren, auf die ich nach wenigen Tagen nicht mehr verzichten möchte.

» Den gesamten Beitrag Google Chrome bekommt in der neusten Beta endlich Erweiterungen (extensions) lesen


Rails-Modelle – die ersten Schritte mit ActiveRecord

Nachdem in meinem kleinen Railsprojekt die Migrationsskripte (definieren die Datenbankstruktur) ferti erstellt sind, wird es endlich Zeit, dass ich mich um die Model-Ebene (ActiveRecord) der MVC-Architektur kümmere.

Die Modelle beziehungsweise in Rails ActiveRecord steuern unabhängig von Controller und View den Zugriff auf – in diesem Fall – die Datenbank. ActiveRecord ist eine ORM-Schicht, die die Objekte der Anwendung direkt in der Datenbank vorhält. Dabei wird eine Klasse eines Models auf eine Datenbanktabelle sowie deren Attribute auf Datenbankspalten abgebildet. Damit ist eine Klasseninstanz gleichzusetzen mit einem Datensatz aus einer Tabelle. Sehr kurz gefasst könnte man sagen, dass ein Model alle Operationen enthält, die direkten Datenbankzugriff erfordern und mit der Datenbank in enger Beziehung stehen. Dazu zählen beispielsweise die Beziehungen zwischen den Modellen und Validierungen von Daten.

» Den gesamten Beitrag Rails-Modelle – die ersten Schritte mit ActiveRecord lesen


JavaScript komprimieren

Seit längerem musste ich heute mal wieder eine JavaScript Datei komprimieren, da die über 8000 Codezeilen stattliche 270 KB zur Folge hatten. Das ist nichts für eine Produktivumgebung.

Da ich mit dem letzten Tool nicht wirklich zu frieden war, habe ich mich mal wieder umgeschaut und bin dabei auf den YUI Compressor von Yahoo! gestoßen. Dieser hat mich sehr überzeugt und ist auch recht einfach zu bedienen.

» Den gesamten Beitrag JavaScript komprimieren lesen


Fremdschlüssel den Migrationen hinzufügen

Es hat mir ja doch keine Ruhe gelassen, dass ich über Migrationen mit der Standardfunktionalität von Rails keine Fremdschlüssel (foreign keys) der Datenbank hinzufügen kann.

Aus diesem Grund habe ich noch etwas Recherche betrieben und bin zunächst auf ein Plugin gestoßen, was allerorts im Internet referenziert wird, aber wohl leider nicht mehr verfügbar ist. Schade! Dann habe ich auf einen Codeschnippsel aus ‘Agile Web Development with Rails’ von Sam Ruby, Dave Thomas und David Heinemeier Hansson, zurückgegriffen. Dieser funktioniert – nach einer kleinen Ergänzung – bisher einwandfrei.

» Den gesamten Beitrag Fremdschlüssel den Migrationen hinzufügen lesen


Basiseinstellungen für Git

In letzter Zeit war viel los und ich musste beruflich auch mal wieder recht viel entwickeln, daher war meine Motivation für dieses Projekt nicht so groß. Ich hoffe aber, dass es jetzt mit neuem Schwung weitergehen kann.

Ich habe ja vor einiger Zeit schon von Git berichtet und wie man einen SSH Schlüssel mit msysGit erzeugen kann. Gerade wieder musste ich feststellen, dass ein paar ganz kleine Änderungen einem die Arbeit doch um einiges leichter machen können.

» Den gesamten Beitrag Basiseinstellungen für Git lesen


Problem mit Assoziationstabellen und Löschweitergaben

Es hätte eigentlich so einfach sein können/sollen, aber leider hat da jemand wohl noch nicht ganz zu Ende gedacht, als es darum ging Löschweitergaben (dependent destroy) in Bezug auf Assoziationstabellen (join tables) zu implementieren.

In der Regel benötigt eine Assoziationstabelle, hier zum Beispiel blogcategories_blogentries, kein id Feld als Primärschlüssel, sondern es reicht ein zusammengesetzter Primärschlüssel aus bogentry_id und category_id.
In Rails gibt es ein ansich nettes Konstrukt: Löschweitergaben. Diese sorgen dafür, sofern im Model definiert, dass bei der Löschung von Objekten, beispielsweise einer Kategorie, alle abhängigen Daten, hier in der Assoziationstabelle, automatisch mit gelöscht werden. Leider funktioniert das wohl nicht einwandfrei ohne eine explizite id Spalte. Schade! Es tritt folgender Fehler auf:

ActiveRecord::StatementInvalid in CategoriesController#destroy
Mysql::Error: Unknown column 'id' in 'where clause': DELETE FROM `blogcategories_blogentries` WHERE `id` = NULL

» Den gesamten Beitrag Problem mit Assoziationstabellen und Löschweitergaben lesen