Rails3 und MySQL

Und dann war da noch die Sache mit MySQL. Sollte beim Aufruf von rake db:create:all die schnöde Fehlermeldung uninitialized constant Mysql auftauchen, kann Folgendes weiterhelfen:

  • gem uninstall mysql (bei Verwendung von rvm kann auf sudo verzichtet werden)
  • env ARCHFLAGS="-arch i386" gem install mysql2 -- --with-mysql-config=/usr/local/mysql/bin/mysql_config

Entscheidend hierbei ist wohl die Verwendung des mysql2 gems.

CoffeeScript für die Hamler

Ich bin ja mehr Sassler, aber dennoch. Was Sass für CSS ist CoffeeScript wohl für JavaScript. Und damit durchaus einen zweiten Blick wert. Schön aufgeräumte Syntax –> schöner Code. Und das ist für uns Ästheten bekanntlich Alles.

Vor die Erleuchtung hat der Herr ja den Schweiß (sprich die Installation) gesetzt und deshalb hier die Anleitung für gern Schmerzbefreite:

  1. homebrew installieren: siehe hier
  2. Node.js via homebrew installieren: brew install node
  3. NODE_PATH ins Profil (.profile) aufnehmen: export NODE_PATH="/usr/local/lib/node/"
  4. Coffee-Script installieren: brew install coffee-script (hat bei mir trotz gegenteiliger Behauptungen V1.0.0 installiert; konnte somit auf npm verzichten)

Und hier noch der Verweis auf das obligatorische TextMate-Bundle. Der Rails-Entwickler sollte noch einen Blick auf das Bistro_Car Gem werfen.

Mac OS X and homebrew

Wie bei allen Dingen, die stark ins System eingreifen, funktionierte bei mir der empfohlene Weg der Installation von ‘homebrew’ mal wieder nicht. Google sei Dank fand ich (kurz bevor ich alle Haare verlor) diesen wertvollen Link zur einfachen Installation des neuen ‘macports’ oder ‘fink’. Ein Befehl in der console und es wuppt! 2 thumbs up to heaven!!! Und hier ist der wertvolle Link.

Kleiner Nachtrag: mkdir /usr/local/Cellar saves lifes!

GIT und TextMate

Einige TextMate-Bundle Commands verwenden git auf der Bash. Dies schlug bei mir (z.B. update Command des cucumber Bundles) mit dem Fehler ‘sh: line 4: git: command not found‘ fehl.

Um auch in den TextMate Bundles GIT verwenden zu können muss man nun unter preferences/advanced/shell variables die Path Variable an seinen Gegebenheiten anpassen (which git sollte dabei helfen). Ich habe einfach den Pfad um usr/local/bin: erweitert. Und siehe da, es lief!

Verschiedene Ruby Versionen parallel installieren

Was war das früher für ein Gefrickel! Aber jetzt ist Alles ganz einfach. Sich einfach hier schlau machen.

Rails unter Leopard installieren

Da kann ich nur auf folgende Seite verweisen, die das wirklich gut abdeckt:

Robby on Rails installiert Rails

Und zur Installation von memcached verweise ich auf:

http://rayvinly.com/articles/2007/11/29/setting-up-ruby-on-rails-with-mysql-on-mac-os-x-10-5-leopard/

Ich steige auf Mac um (ob das wohl gut geht)

Ja, es ist soweit. Heute kamen unsere MacBooks (MacBookPro) und wurden auch gleich aufgebaut und konfiguriert. Die nächsten Tage werden zeigen, ob es einem eingeschworenen Windows-User möglich ist, auch unter Leopard produktiv zu werden. Ich bin  offenen Geistes und willig. Nun zeige Leopard, ob Alles Gold ist, was an dir glänzt!

Ruby - Dinge, die ich mir einfach nicht merken kann

Hier sollen einfach ein paar Ruby Klassen und ihre Methoden stehen, die ich zwar oft brauche, mir aber einfach nicht merken kann.

  • language constructs
    • Loops
      • case:
        case xxx
        when y
        #do
        when z
        #do
        else
        #do
        end
  • Object
    • respond_to?: Returns true if obj responds to the given method. Private methods are included in the search only if the optional second parameter evaluates to true.
  • Array
    • delete:Deletes items from self that are equal to obj. If the item is not found, returns nil. If the optional code block is given, returns the result of block if the item is not found.
  • Enumerable
    • include?:Returns true if any member of enum equals obj. Equality is tested using ==.

Java 5.0 - Generics und ihre Tücken

Einmal mehr verschwand ich heute in den Untiefen der neuen Java Tiger Möglichkeiten und verbiss mich an einem Problem, das nicht nur meines sein dürfte.

Soll bei einer parametrisierten Klasse in einer Methode auf Typ-Information (also Parametriesierungs-Informationen; in diesem Fall der Typ-Parameter) zurückgegriffen werden, so ist das schlicht unmöglich, da diese Informationen ja vom Compiler gelöscht werden (type erasure). Etwas rumgoogeln hilft ja bekanntlich (fast) immer weiter und so fand ich diese sehr lehrreiche Seite.
Kurz zusammengefasst: Muss eine Methode einer parametrisierten Klasse auf Typ-Informationen zurückgreifen, so muss diese als Argument übergeben werden. Und hier noch ein Beispiel:


class Test<Typ> {
public String doSomething(Class<Typ> clazz) {
return Other.methodNeedsClass(clazz);
}
}

Anders kann man nicht an die Klasse des Typ-Parameters ‘Typ’ gelangen. Es wären vielleicht noch Umwege über Reflection möglich, aber davon vielleicht ein andermal.

DB4O 5.0 Developer Release ist raus

Heute kam’s per Newsletter, DB4O 5.0 Developer Release ist draussen. Nach einigen Erfahrungen mit DB4O in der letzten Zeit (speziell mit Standalone Server als Windows Service; ich werde darüber berichten) bin ich gespannt auf die Neuerungen. Es ist bereits runtergeladen und ich werd’s noch heute in eines der laufenden Projekte einbinden und auch über diese Erfahrungen schreiben. Bis dann….