Archive for the 'Ruby on Rails' Category

Apr 02 2008

In Rails einen einfachen Referer erstellen

Wer in seiner Ruby on Rails Anwendung einen Loginbereich hat kennt sicher das Problem: Wer nicht eingeloggt ist wird auf die Loginseite weitergeleitet. Wenn sich dann der User erfolgreich angemeldet hat kommt er aber nicht mehr zu der Seite, die er ursprünglich direkt aufrufen wollte.

Das lässt sich sehr einfach über einen referer lösen und über das Objekt / die Variable request kann man den kompletten HTTP Request auslesen, d.h. wenn der User auf die Seite /users/editieren wollte, dann erhält man über folgenden Aufruf die notwendigen Informationen:

  1. request.referer

Referer gibt hier folgenden Wert zurück: http://localhost:3000/user/editieren

Das ist schon zu viel, wir brauchen für einen schönen redirect nach dem erfolgreichen Login eigentlich nur den Controller und die Action, die angesprochen wurde. Das lässt sich super mit request.path_parameters bewerkstelligen. Das kann man dann in ein Methode einbauen, die prüft, ob ein User eingeloggt ist. Diese steht in der application.rb und könnte so aussehen:

  1. def authorize
  2.  unless User.find_by_id(session[:user_id])
  3.   session[:referer] = request.path_parameters
  4.   flash[:notice] = "Please Log-In"
  5.   redirect_to(:controller => "/user", :action => "login")
  6.   end
  7. end

Es wird versucht die ID des Users aus der Session auszulesen(Zeile 2), wenn das nicht klappt wird die Url, die er aufrufen wollte in die Session gelegt (Zeile 3) und der User wird erst mal zum Login (Zeile 5) geschickt. In eurer Login Methode braucht Ihr nur noch nach erfolgreichem Login folgendes einzutragen:

  1. if session[:referer]
  2.  referer = session[:referer]
  3.  redirect_to(:controller => referer[:controller], :action => referer[:action] )
  4. else
  5.  redirect_to(:controller => "/user", :action => "index")
  6. end

Wenn der User wirklich woanders her kommt dann ist der referer hash nicht leer (Zeile 1) und wir können in Zeile 3 mit dem redirect dafür sorgen, dass der User ganz angenehm auf die ursptüngliche URL weitergeleitet wird. Wenn kein referer existiert wird der User ganz normal auf eine default Seite geleitet (Zeile 5)

Ich freue mich über Kommentare, Verbesserungsvorschläge, etc.

No responses yet

Mrz 20 2008

Charts zusammen mit Ruby on Rails nutzen

Für alle, die es einfach haben wollen gibt es betreffend Charts ein super Lösung. Auf www.amcharts.com gibt es ein extrem mächtiges Flash Charting, dass man sehr einfach nutzen kann, um z.B. Balkendiagramme, Graphen und ähnliches auf einer Zeitachse im Web darzustellen.

No responses yet

Jan 02 2008

Rails 2.0.2 mit Mongrel zum Laufen kriegen

Ich hatte das Problem, das nach meinem Update auf Rails 2.0.2 und RubyGems 1.0.1 Mongrel mit einem Fehler aufgab und unter Windows nicht starten wollte.

Jetzt habe ich mir Mongrel 1.1.3 geladen und mit folgendem Befehl alle alten Mongrel Version entfernt:

gem uninstall mongrel (danach kommt ein Auswahl der Mongrel Versionen, die man dann nach und nach löschen kann)

No responses yet

Jan 02 2008

Rails 2.0 und RubyGems

Für Rails 2.0 sollte man auch daran denken RubyGems in der aktuellen Version parat zu haben. Das update lässt sich denkbar einfach durchführen:

gem update –system

Damit wird rubygems ziemlich schnell auf einen neuen Stand gebracht.

No responses yet

Dez 16 2007

Rails 2.0 interessante Neuerungen

Published by Daniel Boekhoff under Ruby on Rails

Rails 2.0 ist draußen, dieser Nachricht lief mir vor ein paar Tagen über den Weg. Auf rubyonrails.org stehen im Blog einpaar Highlights, was es alles so neues geben wird mit diesem Release. Ein paar davon fand ich besonders interessant:

  • Sessions lassen sich jetzt auf die Clientseite auslagern in einem Cookie: D.h. diese müssen nicht mehr in einer Datenbank oder im Filesystem vorgehalten werden. Sessions die abgelaufen sind müssen nicht durch einen Cron Job entfernt werden. Das spart viel Energie auf dem Server. Wichtig wird da aber ein gutes Sicherheitsmanagement und es sollten nur möglichst wenige Informationen in der Session abgelegt werden.
  • Die Datenbankdefinitionen sind jetzt noch kürzer geworden. Mit t.integer, :eineSpalte lässt sich schon eine Spalte in einer Tabelle erzeugen.
  • Eine für alle: Javascriptdateien lassen sich jetzt elegant für die Produktivumgebung in eine Datei zusammenfassen. Damit wird bei jedem Client nur noch eine Datei geladen. Das beschleunigt Javascript clientseitig. Ein weiterer Vorteil ist, dass dies nur für die produktiv Version passiert. In der Entwicklung bleiben die Dateien einzeln und können dort ganz normal weiterverwendet werden.

Mehr Änderungen an Rails findet sich auf dem Blog: rubyonrails.org

No responses yet

Dez 01 2007

Netbeans 6 RC2 mit Ruby

Netbeans 6 RC2 ist mittlerweile schon seit ein paar Tagen draussen, also Zeit für ein kurzes Fazit. Ich habe Netbeans 6 jetzt nur für das Programmieren mit Ruby on Rails eingesetzt. Es läuft sehr zügig und ich freue mich immer wieder über die verbesserte Code Completion. Ich hoffe, dass ich darauf bald verzichten kann, aber ab und an ein kleiner Blick in die Docs kann nie schaden. Wer Netbeans mal eine Chance geben will kann sich das RC2 auf netbeans.org runterladen, in den nächsten Tagen wird aber auch die finale Version erscheinen. Unter Tools -> Plugins lassen sich dann noch 3 weitere Plugins für Ruby aktivieren. Einer ist ein Assistent, der einem Tipps zum eigenen Code gibt.

No responses yet