Apr
02
2008
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:
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:
-
def authorize
-
unless User.find_by_id(session[:user_id])
-
session[:referer] = request.path_parameters
-
flash[:notice] = "Please Log-In"
-
redirect_to(:controller => "/user", :action => "login")
-
end
-
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:
-
if session[:referer]
-
referer = session[:referer]
-
redirect_to(:controller => referer[:controller], :action => referer[:action] )
-
else
-
redirect_to(:controller => "/user", :action => "index")
-
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.
Mrz
23
2008

Hier ist ein gutes deutsches Buch zu Ruby. Ein Buch für alle, die gerade starten wollen mit Ruby, aber auch zum Nachschlagen. Man findet alle wichtigen Konzepte der Sprache Ruby, wie Opreationen, Schleifen, Bedingungen, Arrays, etc. Die Eigenheiten werden aufgedeckt und erklärt. Ich habs gerne gelesen, denn es war zudem auch noch verständlich! Was natürlich auch angesprochen wird ist Ruby on Rails, leider nur am Rande, daher eignet es sich kaum das Buch nur wegen Ruby on Rails zu kaufen.
Mehr Informationen findet Ihr hier über folgenden Link:
Praxiswissen Ruby. oreillys basics
Mrz
22
2008
Für alle die gerade keine Geld haben, Studenten sind und mehr als 60 Tage mal Flex mit einer richtig guten Entwicklungsumgebung testen wollen, die sollten mal auf die Adobe Webseite surfen und dann beim Flexbuilder schauen.
Denn es gibt jetzt den Flexbuilder 3 Professional für Studenten kostenlos! Man muss lediglich seine Immatrikulationsbescheinigung hochladen und dann ca. 1-2 Tage warten. Dann habt Ihr den Lizenzschlüssel und könnt loslegen.
Mrz
20
2008
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.
Jan
02
2008
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)
Jan
02
2008
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.
Dez
16
2007
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
Dez
01
2007
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.
Nov
30
2007
Ich erinnere mich noch an Versuche von Linux sich auf Mobiltelefonen auszubreiten. Leider hat das nie so richtig geklappt.
Jetzt mit Android bin ich gespannt, ob es sich durchsetzen kann. Sicher kann man sich schon im kommenden Jahr nach der Cebit die ersten Mobiltelefone mit Android zulegen und bis dahin existieren auch schon erste Programme für die Geräte. Man sucht sich einfach die Anwendungen, die man gerade braucht und schon kann es losgehen. Wer sich mehr Informationen holen will kann das direkt bei Google: http://code.google.com/android/
Nov
30
2007
Für alle, die sich noch nicht mit OpenSocial befasst haben, hier eine sehr kurz Zusammenfassung:
OpenSocial ist eine einheitlich Programmierschnittstelle. Es soll für Entwickler möglich sein mit wenig Aufwand z.B. Widgets für eine große Anzahl an Communities und andere Webanwendungen zu schreiben. D.h. ein Widget, das in Verbindung mit OpenSocial programmiert wurde funktioniert dann in allen Webanwendungen, die OpenSocial eingebunden haben.
Das ist sinnvoll, wenn das Widget Daten von der Webanwendung benötigt in der es sich gerade befindet. Beispielsweise stellt “installiert” ein Nutzer bei Facebook ein kleines Widget das als Partykalender dient. All seine Freunde können dann einen Partytermin über das Widget bestätigen, es wird angezeigt wer schon alle zugesagt hat und wer noch fehlt. Die Ergebnisse dürfen nur seine Freunde sehen. Durch die OpenSocial API kann das Widget auf Informationen der Freunde zugreifen und dadurch bestimmen, wer die Inhalte im Widget sehen darf und wer nicht.
OpenSocial wird in Zukunft interessante neue Funktion in Widgets ermöglichen und es speziell den Entwicklern einfacher machen eine große Anzahl von Nutzern zu erreichen.
OpenSocial Infos gibt es direkt bei google: http://code.google.com/apis/opensocial/