railssprech-Logo
Diese Seite ist das Archiv der Artikel, die ursprünglich in einem kurzlebigen Rails-Weblog (2009 bis 2010) mit dem schönen Namen railssprech veröffentlicht wurden. Die Texte sind mittlerweile hoffnungslos veraltet und wurden hier archiviert, falls sie noch für irgendjemanden, der sie in Google findet, nützlich sein sollten…

Problem mit Mongrel und Rails 2.3.9

Wenn man in zweierlei Hinsicht ein wenig altmodisch ist, indem man zum einen noch die letzte Version von Rails 2, nämlich 2.3.9 verwendet, und zum anderen noch das Deployment der App mit dem guten alten mongrel_cluster implementiert hat, kommt es zu einem eigenartigen Phänomen:

Die Rails-Anwendung funktioniert einwandfrei, im Browser ist aber der von der Anwendung herausgerenderte HTML-Quelltext der Seite (oder gar nix) zu sehen. Schaut man dann in log/mongrel.PORT.log, so findet man die Ursache des Übels:

Error calling Dispatcher.dispatch 
#<NoMethodError: private method `split' called for nil:NilClass>

Oder ähnliches. Das Problem liegt irgendwo im Zusammenspiel von ActionPack und Mongrel (in der Cluster-Variante), das seit Rails 2.3.8 nicht mehr korrekt funktioniert.

Die Lösung für dieses Problem findet sich beim »P Coder«. Man benötigt einen Patch in einer Datei config/initializers/mongrel.rb. Damit funktioniert es dann wieder einwandfrei.

RedCloth, Rubygems und die »CamelCase-Falle«

Manchmal leben gem-Maintainer ihre Kreativität am Namen ihres digitalen Kleinods aus. So heißt das Rubygem für RedCloth eben »RedCloth«, in CamelCase. Unter bestimmten Umständen in bestimmten Ruby-Installationen (keine Ahnung, wann exakt) aber legt Rubygem es eben nicht unter dem CamelCase-Namen ab, sondern in Kleinbuchstaben. Das Problem dabei: Das Gem funktioniert nicht, man rauft sich die Haare weil es nicht läuft, obwohl man doch das richtige Gem installiert hat!

Lösung: Man lege einen Symlink mit der korrekten Schreibweise an, wenn sich in /usr/lib/ruby/gems/1.8/gems/RedCloth-3.0.3/lib nur ein »redcloth.rb« statt des gewünschten »RedCloth.rb« befindet:

cd /usr/lib/ruby/gems/1.8/gems/RedCloth-3.0.3/lib
ln -s redcloth.rb RedCloth.rb

Die einzig richtig nutzbare RedCloth-Version ist übrigens 3.0.3. Wenn man sich nicht in die Geheimnisse des anders funktionierenden RedCloth 4 einarbeiten möchte, sollte man diese installieren:

gem install RedCloth -v 3.0.3

Lieber RedCloth-gem-Maintainer, wie wäre es damit, die Kreativität im Ruby-Code auszutoben und den Namen des Gem ganz schnöde in Kleinbuchstaben zu halten? ;)

sortable_element und :hoverclass

Kleine Falle beim Scriptaculous-Helper sortable_element: Möchte man dem kleinen Helper eine CSS-Klasse als :hoverclass mitgeben, so muss man diese zweifach in Anführungszeichen packen, man achte beim folgenden Beispiel genau auf :hoverclass:

<%= sortable_element("nicethings", 
:url => sort_nicethings_path, 
:ghosting => true,
:hoverclass => "'niceclass'") %>

Edelsteinsammlung VI

Kaum wurde Rails 2.3 final veröffentlicht, gibt es auch ein Update für das Ruby on Rails.tmbundle von Dr. Nic für des Rails-Entwicklers uneingeschränkten Lieblingseditor TextMate.

Apropos TextMate, Ruby Inside hat eine kleine Sammlung von neuen und alten Screencasts für Rails-programmierende TextMate-Benutzer zusammengestellt. Neu ist vor allem die TextMate-Reihe von Derek Neighbors.

Auch Rails gibt es schon lang genug, um in seiner Anwendung Altlasten zu haben. RailsMagazin (das Blog, nicht eines der gleichnamigen Hefte) gibt hilfreiche Tipps zum Refactoring einer Anwendung.

»the Rails way« liefert in »Storing Your Files« Ideen für den Umgang mit dem Dateisystem in einer Rails-Anwendung.

Die Ergebnisse der »Rails Hosting 2009«-Umfrage sind da, ohne größere Überraschungen.

Und noch etwas Ruby ohne Rails:

Crawler, Indexer und Suchmaschine in 200 Zeilen Ruby-Code? Jawoll: »Write an Internet search engine with 200 lines of Ruby code«.

Und wer schon immer mal die Twitter-Umwelt mit einem Bot beglücken wollte, bekommt nun das passende Ruby-Framework dazu: »Twibot: A microframework for Twitter bots in Ruby«

Englischsprachiges RailsMagazin als Download

Vor einigen Wochen startete das Rails Magazine – fine articles on Ruby & Rails, ein englischsprachiges Magazin natürlich zu Rails-Themen. Es versteht sich als „the first and only free magazine dedicated to the Ruby on Rails community”. Die Besonderheit daran ist, dass es das Magazin gedruckt zu kaufen gibt, allerdings kann man es auch 30 Tage nach Erscheinen auch kostenlos als PDF runterladen. Nun ist die erste Ausgabe verfügbar, 36 Seiten stark, zu Themen wie Delegation, E-Mails empfangen und vieles mehr. Herausgegeben wird es von Olimpiu Metiu aus Toronto, derzeit noch als One-Man-Show, was sich aber schnell ändern kann, wenn alle fleißig Werbung dafür machen. Hiermit gemacht :)

Diakonos statt vi!

vi, emacs oder nano benutzen sie ja alle. Besonders ersterer hat den Vorteil, auf ziemlich jedem unixoiden System dieser Welt installiert zu sein. Aber manchmal haben die Exoten auch ihren Charme, wie z.B. Diakonos. Das ist kein Philosoph oder Schnell-Imbiss, sondern ein Kommandozeilen-Texteditor in Ruby, der in der Absicht geschrieben wurde, in anderen (Gui-)Editoren erlernte Erwartungen und Verhaltensweisen eines Editors auch in einem Terminal wieder zu finden, Zitat von der Website:

»Frustrated by those other console editors? You already know what keys to press in your GUI applications to open, save, copy, cut, paste and undo. Why should your console text editor behave differently? Answer: it shouldn’t.«

Hm, ESC:wq irgendwer? ;)

Diakonos ist in Ruby geschrieben und in Ruby erweiter- und skriptbar. Es gibt Pakete für diverse Plattformen und Distributionen, Diakonos kann aber auch auf jedem System mit laufenden Rubygems mit gem install diakonos installiert werden.

Ich habe ihn mir mal installiert, mal schauen wie man damit arbeiten kann.

Via »Step Three: Profit!«, dessen Blogeintrag es wirklich versteht, dem Leser das kleine Progrämmchen schmackhaft zu machen, Zitat:

»My apologies for insulting your favorite text editors and programming languages, my Internet friends. I meant no harm. Just check out Diakonos for a bit and see what you think. It has a feel which is both fresh and yet somehow also classic. A “modern classic” if you will. And it’s fun. In a way I can’t really articulate, it’s just enjoyable to use.«

Edelsteinsammlung V

Im Rails-Lager ist es derzeit ein bisschen ruhig nach all’ dem Stress zum Release von 2.3. Ein paar Edelsteine fanden sich trotzdem auf dem digitalen Samtkissen:

Im Hause Google machen sie nicht nur die komische Sprache mit der Schlange, sondern auch Ruby. Und haben zu diesem Zwecke einen »Unofficial Ruby Usage Guide« verfasst, der auch außerhalb der Google-Mauern verfügbar ist.

Wer sich ein wenig für Rubys Innereien interessiert, könnte in dem Artikel »The Ruby Object Model – Structure and Semantics« eine lohnende Lektüre finden. Damit wir das Geheimnis der »Eigenclasses« kennen…

Mehr für die praktische Seite des Rubyisten-Daseins: »How To Install A Ruby 1.8 Stack on Ubuntu 8.10 From Scratch«.

Twitter ist unser aller Lieblings, wir lieben Twitter. Deshalb lesen wir »5 Tips for Using Twitter With Ruby. Writing Twitter Clients in Ruby«.

Und Juicer ist ein kleines Werkzeug zum Zusammenpacken der in einer Rails-Anwendung notwendigen CSS- und Javascript-Dateien.

Edelsteinsammlung IV

Wer Paperclip zur Dateiverwaltung einsetzt, und das mit Gravatar kombinieren will: hier wird euch geholfen Graceful degredation: Using Gravatar as a fallback avatar with Paperclip

Railscasts kennt sicher jeder, aber ASCIIcasts ist relativ neu, und quasi ein Railscasts.videos.to_s, also eine durchsuchbare Version der Videos. (Danke an Werner für den Hinweis in der dt. Rails-UG)

Mal wieder was zu Caching in Rails gibt es bei acts_as_ferric.

Kleiner Tipp für den Umgang mit Datei-Downloads: »File Downloads Done Right«.

Aus dem Nähkästchen geplaudert: »Building and Scaling a Startup on Rails: 12 Things We Learned the Hard Way.«

timeline_fu ist ein gem für die Erzeugung von »Activity Feeds« in einer Rails-Anwendung.

Eine rubygems-Liste von einer Installation auf eine andere übernehmen

Mitunter steht man vor dem Problem, die Liste der in einer Ruby-Installation installierten rubygems in ein anderes System zu übernehmen. Dazu kann man sich z.B. Narnach-Gems herunterladen und benutzen, es geht aber auch recht umkompliziert mit den »Bordmitteln« eines unizoiden Systems.

Im ersten Schritt erstellt man auf dem Ausgangssystem eine Liste der installierten Gems. Da gem list die Versionsnummern mit ausgibt, muss die Ausgabe mit Hilfe von sed bereinigt werden und in einer Textdatei aufgefangen werden:

sudo gem list|sed 's/(.*)//' > alle_meine_gems.txt</notextile>

Diese Textdatei alle_meine_gems.txt kopiert man auf das Zielsystem und lässt die darin aufgelisteten gems mit einem kleinen Shell-Skript installieren:

#!/bin/bash
GEMS=`cat alle_meine_gems.txt`
for g in $GEMS ;
do
 echo "Installiere $g"
 echo ""
 gem install $g
 echo ""
done

Es kann sein, dass man das Skript zweimal laufen lassen muss, wenn gems ihre Abhängigkeiten nicht automatisch installieren, wie z.B. bei Rails 2.3 und rack. Und noch ein Nachteil soll nicht verschwiegen werden: Dieser Weg installiert nur die aktuellste Version der gems aus der Liste. Aber z.B. zur Installation älterer Rails-Versionen wäre dann nur noch ein wenig Handarbeit nötig, oder s.o., Narnach-gems.

Logfiles aufbereiten mit Spike

Spike ist ein Programm für den Mac, das die Logfiles einer Rails-Anwendung hübsch übersichtlich aufbereitet und in einem separaten Fenster auf »Klick« die Details jedes Request ausgibt.

Der Entwickler sucht übrigens noch jemanden, der ihm ein schönes Icon für Spike macht. ;)

Edelsteinsammlung III

Wer statt selbst zu programmieren lieber etwas Fertiges einsetzen möchte, kann einmal die »23 Amazing And Open Source Ruby On Rails Applications« durchgucken. Listenbloggen galore, aber wenigstens sind es nicht 10, sondern 23 »amazing« Anwendungen…

Einen kleinen aber wirkungsvollen Tipp für das Verschönern des eigenen Codes hält »softies on rails« bereit.

»Overstimulate« gibt auch Tipps: »Shipping with Rails«. Nach dem Motto: »If you haven’t shipped it you haven’t done anything.«

Robby on Rails’ »Switch to Passenger (mod_rails) in development on OSX in less than 7 minutes or your money back!« zeigt, wie man seinen Entwicklungs-Mac in 7 Minuten auf Passenger statt script/server umstellt.

»The Rails Way« kündigt eine Serie über den mitunter unschönen Akt des Dateimanagement in Web-Anwendungen an, das behalten wir mal im Auge.

Und wer gerne »Meta-Meta« liest, wird an »Rails versus Django« seine helle Freude haben. ;)

Rails 2.3

Wer die Rails-Szene ein wenig beobachtet, dem wird nicht entgangen sein, dass Rails 2.3 so dicht vor der Tür steht, dass schon vor ein paar Tagen der »Release Candidate« erschienen ist. Diese neue Version bringt so umfangreiche Neuerungen mit, dass in den Guides eine eigene Seite mit umfangreichen Release Notes veröffentlich wurde. Von Templates für die Erstellung einer Anwendung über lokalisierten View-Templates bis hin zu im Rails-Kontext bisher nicht verwendetem Server-Gedöns wie »Rack« oder »Metal« – es gibt eine Menge zu lernen und auszuprobieren.

Wir möchten in den nächsten Tagen einige unserer Ansicht nach bemerkenswerte neue Features einzeln vorstellen, hier erst einmal ein paar Links für den ersten Überblick:

Und am Horizont wartet auch schon Rails 3.0 mit dem überraschendem Zusammenschluss von Rails und Merb. Rails bleibt agil und dynamisch!

Edelsteinsammlung II

Das da oben ist »Rails Logo, A fresh, copyright-free logo for the Ruby on Rails Framework.« Denn bekanntlich darf man das offizielle Logo von RoR nicht benutzen, also beschloss Kevin Milden dass wir ein freies unter CC-BY-ND-Lizenz brauchen.

Schon mal redo benutzt? Peter widmet sich auf rubyrailways.com »Ruby’s Most Underused Keyword«

»Rails on Edge« präsentiert »Flash Video Tutorial with Rails, ffmpeg, FlowPlayer, and attachment_fu«. Ein Tutorial, um Videoinhalte mit dem populären Flowplayer in seine Rails-Anwendung zu bekommen.

Ähnliche Ansinnen unterstützt acts_as_unvlogable, allerdings sammelt dieses Plugin trickreich Videos von populären Video-Sites ein und stellt sie in der eigenen Site dar.

feedzirra ist eine Alternative zu den FeedTools zum Lesen von RSS in eigenen Anwendungen. Allerdings: Ich benutze FeedTools in meinem Panta Rei und habe bisher damit keinerlei Probleme gehabt.

Und RubyInside präsentiert »23 Useful Ruby 1.9 Links and Resources«, der Umstieg auf 1.9 steht uns ja in näherer Zukunft auch ins Haus.

Screencasts über Rails-Anwendungen, die skalieren

Gregg Pollack von Rails Envy ist sicher nicht ganz unbekannt in der Rails-Szene, vor allem seit den ‘Rails vs’-Videos. Nun hat er eine kleine Screencast-Serie gestartet, in der er zeigt, wie man skalierende Rails-Anwendungen baut. Die ersten Folgen drehen sich um das richtige Anwenden von Caching. Am besten gleich den Feed in Miro abonnieren, dann ist auch der Pflicht-Feed für alle Rails-Entwickler, Railscasts nicht so alleine :)

Rails- und Ruby-Doku für das Mac-Lexikon

Das Mac-Lexikon hat eigentlich nur ein Wörterbuch und einen Thesaurus eingebaut, und das auch nur für englische Begriffe, daher haben es sicher viele Mac-User noch nicht so ausgiebig eingesetzt (Dabei schließt sich die Schreiberin dieser Zeilen mit ein ;)) Aber das kann sich jetzt ändern, denn Priit Haamer hat in seinem Blog seine zwei Erweiterungen für das Lexikon vorgestellt:

Einmal für Ruby 1.9.1 und für Rails 2.2. Beides funktioniert auch mit Spotlight, was es noch bequemer macht, aber Mac OS X Leopard voraussetzt.

Update:

Und wenn man dann Apfel + Control + D drückt, wenn die Maus über einem Wort in Textmate liegt, erscheint die Hilfe:

Und wo wir schonmal dabei sind: Es soll ja auch Leute geben, die jQuery mit Rails verwenden, und denen kann auch geholfen werden: Search jQuery API Docs from Spotlight.

Edelsteinsammlung I

Neues aus der Ruby- und Rails-Welt, kurz notiert.

»Ruby Graphic Designers« ist eine neue Goggel-Gruppe welche »is targeted for designers using Ruby and want to share tips, help each other or help the community by creating design material usable by all«.

Ruby 1.9.1 wurde »released«, das ist die erste Ausgabe der 1.9-Reihe für Produktionseinsatz. Man sollte noch nicht drauf umsteigen, das Blog der Passenger-Entwickler gibt einen kleinen Überblick.

Manchmal will man einfach programmieren und keine HTML-Templates erstellen, andererseits aber auch nicht ständig den prosaischen Anblick ungestylter weißer Seiten genießen. Für solche Situationen gibt es jetzt ein »Web-App-Theme« auf github, dass Templates in typischer zwonulliger Basecamp-Lookalike-Optik zur Verfügung stellt.

Und noch eine »Rails in freier Wildbahn«-Story, erzählt von Luke Crawford, Entwickler von muxtape:

»The thing that’s so wonderful about using beautiful, appropriate tools is that they become an extension of you, your body, you fingertips, and your mind. They get out of the way and let you directly interact with the problem you are solving. Everyone’s tried to remove a screw without a screwdriver; a task quickly becomes impossible that otherwise would be trivial.«

Ruby lernen

Die größte Hürde bei routinierten »Web-Fricklern« vor dem Einsatz von Rails ist die für sie neue Programmiersprache Ruby. Viele bleiben lieber beim bewährten PHP, weil sie darin jahrelange Erfahrung und Know-How haben und setzen auf schlechte Rails-Klone. PHP-MVC-Frameworks, die von sich selbst behaupten, »wie Rails nur in PHP« zu sein und jedem, der Rails wirklich kennt, nur ein müdes Lächeln entlocken. Da gibt es zum Beispiel PHP-Frameworks, die nennen eine simple Kapselung von Datenbankabfragen tatsächlich »Active Record«…

Geistige Flexibilität sowie Bereitschaft für Neues zeigen und Ruby lernen ist angesagt. Der Autor dieser Zeilen (Ralf in dem Fall) arbeitet mit PHP seit etwa 1997, als es noch »PHP/FI« hieß. Das war aber kein Grund, nicht mal mit Ruby und Rails in eine neue Programmiersprache und -Konzepte einzutauchen und sich davon überzeugen zu lassen.

Ruby lernen also. Um den Einstieg zu finden, lohnt sich eine Reihe von Interviews mit Heroen aus der Ruby- und Rails-Szene, die das RubyLearning-Blog geführt hat. In der letzten Ausgabe war Ryan Bates, bekannt durch seine Rails-Screencasts unter dem folgerichtigen Namen »Railscasts«, an der Reihe. Unten auf der Seite unter dem Artikel findet man die Links zu den anderen Interviews der Reihe »The Path to Ruby Mastery«, wie man so sagt: »Highly Recommended!«

Ruby on Rails - Die Installation

Die erste Hürde, um einmal Rails auszuprobieren, ist manchmal schon die Installation von Rails. Diese ist für den Einsteiger etwas unübersichtlich. Unser Artikel, einst aus dem Bedürfnis entstanden, nicht alle Schritte jedem immer wieder neu aufschreiben zu müssen, gibt einen Überblick über die Installation auf verschiedenen Betriebssystemen. Da die Zeit nie stehen bleibt, wird er bei neuen Entwicklungen (hoffentlich) zeitnah aktualisiert.

Weiter lesen…