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 23 2008

Praxiswissen Ruby

Published by Daniel Boekhoff under Bücher, Fachliteratur

Praxiswissen Ruby

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

No responses yet

Mrz 22 2008

FlexBuilder 3 Professional für Studenten kostenlos

Published by Daniel Boekhoff under Flex

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.

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

Nov 30 2007

Mit Android das Telefon zusammenklicken

Published by Daniel Boekhoff under Android

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/

No responses yet

Nov 30 2007

Google und OpenSocial

Published by Daniel Boekhoff under OpenSocial

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/ 

No responses yet