

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.
RailsConf 2010: David Heinemeier Hansson
Langsam wird es ernst: Rails 3 steht vor der Tür wie sonst nur der Nikolaus. David Heinemeier Hansson redet in diesem auf Youtube abgelegten Talk auf der Railsconf 2010 über seine Lieblingsfeatures und gibt am Ende, nach dem Release ist vor dem Release, sogar einen Ausblick auf die Version 3.1 ;).
Rails 2.3.3
Ganz frisch: Rails 2.3.3. Neben »Bug-Fixes« gibt es ein paar neue Features, besonders die neue touch-Methode sieht ausgesprochen nützlich aus.
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«
Noch mehr zu lesen: The Rubyist
Noch mehr Lesestoff für Ruby- und Rails-Interessierte: Die zweite Ausgabe von »The Rubyist«.
Wie beim RailsMagazine gilt: Ein auf tote Bäume gedrucktes Exemplar kann man kaufen, das PDF downloaden (auch noch die erste Ausgabe vom Sommer 2008). Ein erstes digitales Durchblättern versprach eine interessante Lektüre, schließlich muss man mal herausfinden, was sich wohl hinter »WigWug Debriefing« verbirgt
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 :)
Rails 2.3 nähert sich...
der offiziellen »fertigen« Version, eben erschien der RC2, »Final stop before release«, wie das offizielle Rails-Blog schreibt:
»We think weve ironed out all the major kinks now, but just to be sure, were running one last release candidate before it heads off to the presses. So please take some time to test out this release candidate. If we dont get any reports of major blockers, were going to call this final within a week or two.«
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
»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:
- Ankündigung im offiziellen Rails-Blog
- Ryan’ Scraps: »Rails 2.3 (RC1) Released – Summary of Features«
- Ruby on Rails 2.3 Release Notes
- Rails Inside: »Rails 2.3 Release Candidate 1 Released – What’s New?«
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 »Rubys 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 thats 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. Everyones tried to remove a screw without a screwdriver; a task quickly becomes impossible that otherwise would be trivial.«
Rails-Security-PDF
Der deutsche Security-Consultant Heiko Webers hat sein freies E-Book über die Security von Ruby-on-Rails-Anwendungen in Version 2 veröffentlicht. Das Buch steht unter einer CC-Lizenz, darf also verbreitet und ergänzt werden.
(Via Linux-Magazin)
RailsConfEurope ist tot, es lebe RailsDevConf
Trotz der Absage der RailsConfEurope braucht die europäische Rails-Community dieses Jahr nicht auf ein »Get-Together« zu verzichten: Wie in den diversen Mailinglisten bekannt wurde, wird es irgendwo in Spanien irgendwann im Herbst die RailsDevConf geben, »100% community-driven, from developers, for developers«, wie man auf der Website lesen kann. Nähere Informationen dazu wird »as soon as things move forward« geben.
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.
PDF übers Testen
Testen wird ja in Rails gut unterstützt, aber trotzdem schreibt nicht jeder Tests :) Vielleicht kann da das kostenlose PDF zum Thema Getting Started With Rails Testing Abhilfe leisten?
Kostenloses PDF über Kreditkarten-Handling
freckle time tracking ist ein neues Projekt von Thomas Fuchs (Mr. script.aculo.us) und ein paar anderen. Dort wurde auch eine Kreditkarten-Bezahlfunktion realisiert. Und da dies nicht wirklich eine triviale Aufgabe ist, haben die Entwickler ihre Erfahrungen in einem hübschen PDF zusammengefasst, und das gibts und kostenlos zum Download hier: http://jumpstartcc.com/.