MyHolidays.com. Seminararbeit mit Ruby on Rails. Author: Fabian Merki

Ähnliche Dokumente
PHP - Projekt Personalverwaltung. Erstellt von James Schüpbach

Universal Dashboard auf ewon Alarmübersicht auf ewon eigener HTML Seite.

Anleitung über den Umgang mit Schildern

Website freiburg-bahai.de

Professionelle Seminare im Bereich MS-Office

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

Anleitung für die Registrierung und das Einstellen von Angeboten

Fotostammtisch-Schaumburg

GITS Steckbriefe Tutorial

Mit der Maus im Menü links auf den Menüpunkt 'Seiten' gehen und auf 'Erstellen klicken.

Internationales Altkatholisches Laienforum

FTP-Server einrichten mit automatischem Datenupload für

Beispiel Shop-Eintrag Ladenlokal & Online-Shop im Verzeichnis 1

Kleines Handbuch zur Fotogalerie der Pixel AG

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

MailUtilities: Remote Deployment - Einführung

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

Leichte-Sprache-Bilder

Installation der Konfigurationsdateien für alle Windows-Versionen bis einschließlich Microsoft Windows 7

Internetauftritt von Lotta Karotta Anleitung zur Pflege. 2 Bearbeiten eines Menüpunktes am Beispiel Test

Drupal Kurzanleitung. Wie ändere ich den Inhalt meiner Seite?

WordPress installieren mit Webhosting

SANDBOXIE konfigurieren

4 Aufzählungen und Listen erstellen

Anleitung: Sammel-Rechnungen für Lizenzen bei Swiss Basketball

Persönliches Adressbuch

MARCANT - File Delivery System

Online Newsletter III

SEMINAR Modifikation für die Nutzung des Community Builders

Kostenstellen verwalten. Tipps & Tricks

Das sogenannte Beamen ist auch in EEP möglich ohne das Zusatzprogramm Beamer. Zwar etwas umständlicher aber es funktioniert

Step by Step durch den Büromaterial-Online-Shop

Ihr CMS für die eigene Facebook Page - 1

ecaros2 - Accountmanager

Installationsanleitungen

Bedienungsanleitung für den SecureCourier

Handbuch zur Anlage von Turnieren auf der NÖEV-Homepage

Dolphin Handbuch von SERVAS Austria

OP-LOG

Rechenzentrum der Ruhr-Universität Bochum. Integration von egroupware an der RUB in Outlook 2010 mit Funambol

Alle alltäglichen Aufgaben können auch über das Frontend durchgeführt werden, das in den anderen Anleitungen erläutert wird.

HTW-Aalen. OpenVPN - Anleitung. Eine Installations- und Nutzungsanleitung zu OpenVPN

Internet Explorer Version 6

Um zu prüfen welche Version auf dem betroffenen Client enthalten ist, gehen Sie bitte wie folgt vor:

Bauteilattribute als Sachdaten anzeigen

Tevalo Handbuch v 1.1 vom

Kurzeinführung Excel2App. Version 1.0.0

Facebook I-Frame Tabs mit Papoo Plugin erstellen und verwalten

Sie finden im Folgenden drei Anleitungen, wie Sie sich mit dem Server der Schule verbinden können:

Anwendungsbeispiele. Neuerungen in den s. Webling ist ein Produkt der Firma:

Daten-Synchronisation zwischen dem ZDV-Webmailer und Outlook ( ) Zentrum für Datenverarbeitung der Universität Tübingen

teischl.com Software Design & Services e.u. office@teischl.com

L10N-Manager 3. Netzwerktreffen der Hochschulübersetzer/i nnen Mannheim 10. Mai 2016

Anleitung zum Anlegen und Bearbeiten einer News in TYPO3 für

Zur Bestätigung wird je nach Anmeldung (Benutzer oder Administrator) eine Meldung angezeigt:

Umzug der Datenbank Firebird auf MS SQL Server

Kapsch Carrier Solutions GmbH Service & Support Helpdesk

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Anleitung zum Erstellen eines Freihaltetermins

Übersicht... 2 Dateiupload... 3 Administratorfunktionen... 4

Installation/Einrichtung einer Datenbank für smalldms

Der Kalender im ipad

Reporting Services und SharePoint 2010 Teil 1

Anleitung zum Login. über die Mediteam- Homepage und zur Pflege von Praxisnachrichten

a.i.o. control AIO GATEWAY Einrichtung

Hilfedatei der Oden$-Börse Stand Juni 2014

- Frontend

Oracle APEX Installer

TeamSpeak3 Einrichten

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Tutorial -

Wie benutzt man TortoiseSVN

Migration NVC 5.x auf NEM/NPro (Migration eines bestehenden, produktiven NVC Verteilservers auf NEM/NPro)

BSV Software Support Mobile Portal (SMP) Stand

Leitfaden für den Zugriff auf die SEB-Webseite. Anmelden, Kennwort ändern, mit- arbeiten und gestalten ;-)

EVENTO-WEB. Handbuch für Dozierende. Version: 1.2 Datum: 20. Dezember 2010 Autoren: BA Schuladministration

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Installation Microsoft Lync 2010 auf Linux

FrogSure Installation und Konfiguration

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Umstellung News-System auf cms.sn.schule.de

Benutzer Anleitung Manegger Tourenbuch

Lizenzen auschecken. Was ist zu tun?

Stellvertretenden Genehmiger verwalten. Tipps & Tricks

Erstellen einer Collage. Zuerst ein leeres Dokument erzeugen, auf dem alle anderen Bilder zusammengefügt werden sollen (über [Datei] > [Neu])

Persönliche Daten bearbeiten

Kurzanweisung für Google Analytics

Erklärung zu den Internet-Seiten von

Einführung in TexMaker

Erste Schritte mit WordPress Anleitung WordPress Version 2.8.X

Anleitung für den Zugriff auf Mitgliederdateien der AG-KiM

CMS für Kleingartenvereine Version Andreas Sabisch Deverlopment

SSH Authentifizierung über Public Key

Inhaltsverzeichnis U M S T E L L U N G A U F O F F I C E 3 6 5

Clientkonfiguration für Hosted Exchange 2010

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Kurzanleitung RACE APP

Grafstat Checkliste Internetbefragung

Anleitung. So erstellen Sie eine Familienkarte für Ihre Gemeinde. 1. Google-Konto eröffnen

Transkript:

MyHolidays.com Seminararbeit mit Ruby on Rails Author: Fabian Merki

Inhaltsverzeichnis Idee...3 Implementierung...4 Tipps & Tricks...5 Combobox...5 Passwörter...5 Kein 'show'...5 Layouts...6 Problem: HTML-Tags in Formular-Input...6 Plugins & Co...7 Google-Maps Plugin...7 Login Generator...7 Where Plugin...8 Fazit...9 Fabian Merki 05.11.2006 2 von 9

Idee Wer erinnert sich noch nach 20 Jahren an all seine Feriendestinationen? Dank MyHolidays.com vergisst man diese nie mehr! So etwa könnte der Werbeslogan für mein Ruby Projekt lauten. Dank dem öffentlichen API von Google Maps lassen sich diverse Applikationen mit Landkarten realisieren. Mit einer Datenbank, welche Benutzer, Feriendestinationen und Ferien beinhaltet, lassen sich Karten mit Markers erweitern. So könnte zum Beispiel eine Ferienkarte aussehen: Fabian Merki 05.11.2006 3 von 9

Implementierung Die Implementation dieses Projekts erfolgte in Ruby on Rails. Die Datenbank enthält die Entitäten Users, Holidays, Locations und LocationTypes. Das Grundgerüst konnte ich generieren lassen. Jedoch waren dann einige Änderungen notwendig, bis die Applikation folgendes unterstütze: Der Benutzer muss sich anmelden (signup & login) und kann dann seine Holidays und Locations editieren. Der Benutzer kann seine und die Ferienübersicht von anderen anschauen. Nur der Administrator (zur Zeit user.login == merkisoft) kann die Benutzerdaten und LocationTypes editieren. Zusätzlich musste ich zum Beispiel das Suchen der Adressen und das Setzten der Markers in der Karte in JavaScript lösen. Ich habe die Applikation nur unter Internet Explorer 6 getestet Probleme mit andern Browsern sind leider (fast) zu erwarten... Fabian Merki 05.11.2006 4 von 9

Tipps & Tricks Rails und Scaffold sind recht genial. Aus der Datenbank lassen sich innert wenigen Schritten ganze Applikationen entwickeln. Danach muss man 'nur' noch ein paar Änderungen vornehmen welche durchaus ein paar Stunden in Anspruch nehmen können, falls man sich nicht so gut auskennt. Folgende Tipps und Tricks sollen helfen diese Zeit zu verkürzen. Combobox Leider erstellt Scaffold nicht automatisch Comboboxen für Fremdschlüsselfelder. Eine Combobox ist aber sehr schnell in _form.rhtml programmiert: <p><label for="holiday_location_id">location</label><br> <%= select("holiday", "location_id", @locations.collect { lt [ "#{lt.name}, #{lt.address}", lt.id ] })%> Passwörter Scaffold hat automatisch das Passwort als Passwortfeld in 'edit' dargestellt. In 'list' und 'show' wurde dies jedoch als normaler Text angezeigt. Folgender Code <%=h @user.send(column.name) %> habe ich mit diesem Code ersetzt: <%=h @user.send(column.name) if column.name!= "password" %> <%=h "********" if column.name == "password" %> Somit ist das Passwort nur noch als ******** ersichtlich. Kein 'show' Ich persönlich finds schöner, wenn man nach dem Editieren direkt wieder auf der Übersichtsliste landet. In der 'update' Methode im Controller findet man folgende Zeile: redirect_to :action => 'show', :id => @location Diese ersetzt man durch redirect_to :action => 'list' und schon ist die Applikation etwas einfacher und schneller zu bedienen. Wer will kann auch noch in list.rhtml und edit.rhtml die 'Show'-Links entfernen sowie die show.rhtml Dateien löschen. Fabian Merki 05.11.2006 5 von 9

Layouts Damit man immer das gleiche Layout hat, sollte man in den Controllern das Layout fix angeben: layout 'scaffold' Damit wird die Datei views/layouts/scaffold.rhtml auf allen Seiten verwendet. Problem: HTML-Tags in Formular-Input Ein häufiges Problem bei Web-Seiten ist, dass man HTML-Tags in Formularen und somit in die Datenbank speichern kann. Zwar unterstützt uns Rails mit dem Befehl: <%=h @holiday.description%> Hiermit wird der HTML-Code dargestellt; das heisst, dass <b> als Text <b> angezeigt wird und nicht die Zeichenformatierung auf fett gesetzt wird. Leider werden '\n' nicht automatisch durch <br> ersetzt. Für das Feld 'description' in Holiday habe ich dies folgendermassen gelöst: # class Holiday before_create :descupdate before_update :descupdate def descupdate write_attribute("description", description.split("<").join("[")) end Und erst bei der Anzeige in HTML werden die '\n' durch <br> (HTML-Tag für Zeilenumbruch) ersetzt. Somit ist die Datenbasis immer noch für Reports etc. benutzbar. # show.rhtml <%=@holiday.description.split("\n").join(" <br>")%> Fabian Merki 05.11.2006 6 von 9

Plugins & Co. Google-Maps Plugin Bei der Installation des Plugins hatte ich mit einigen Schwierigkeiten zu kämpfen. Der Secure-Download schlug immer mit einem SSLError fehl. Nachdem ich die Plugins google_maps und unbacked_dom_id (nötig für google_maps) direkt mittels Subversion ins Verzeichnis 'vendor/plugins/' heruntergeladen habe, musste ich das init.rb von google_maps folgendermassen anpassen: require 'google_map' require File.dirname( FILE ) + '/lib/google_map' Zudem gabs noch Dependency-Probleme mit unbacked_dom_id beim Starten des Servers. Um nicht noch mehr Zeit damit zu verlieren habe ich die Datei unbacked_dom_id.rb einfach ins google_maps/lib Verzeichnis kopiert. Für die Konfiguration war lediglich der Eintrag des Keys im environment.rb nötig: GOOGLE_APPLICATION_ID = "ABQIAAAA3HdfrnxFAPWyYaiJUxmqRTJQa0g3IQ9GZqIMmInSLzwtGDKaBQ0KYLwBEKSM7F9gCevcsIf6WPuIQ" Dieser erhält man bei Google. Der oben verwendete ist für localhost gültig. Login Generator Auf folgenden Seiten ist der Login-Generator bestens beschrieben: http://wiki.rubyonrails.org/rails/pages/howtoquicklydoauthenticationwithlogingenerator http://wiki.rubyonrails.com/rails/pages/logingenerator http://wiki.rubyonrails.com/rails/pages/readme_login User-Authorisation kann man zum Beispiel mit folgendem Code in den Controller-Klassen erreichen: def authorize?(user) user.name!= "merkisoft" end Fabian Merki 05.11.2006 7 von 9

Where Plugin Dieses Plugin konnte ich ohne Mühe installieren, da ich nun Subversion richtig installiert hatte und es ohne https erreichbar ist. ruby script/plugin install http://invisible.ch/svn/projects/plugins/where Nun kann man sehr einfach SQL-Abfragen für 'list' schreiben. Anstatt alle Datensätze anzuzeigen @holiday_pages, @holidays = paginate :holidays, :per_page => 10 schreibt man nun: @holiday_pages = Paginator.new self, Holiday.count, 15, params[:page] id = @session['user'].id @holidays = Holiday.find_with_conditions(:all, :order => 'start', :limit => @holiday_pages.items_per_page, :offset => @holiday_pages.current.offset) do user_id id end Der Paginator ist für das Paging verantwortlich, find_with_conditions erhält einen Block in welchen man das Query schreibt. 'user_id id' bedeutet, dass 'user_id' gleich 'id' sein muss. Fabian Merki 05.11.2006 8 von 9

Fazit Mit Ruby on Rails lassen sich super schnell Web-Applikationen entwickeln. Aber auch hier versteckt sich der Teufel im Detail. So war es ohne Buch über Rails nicht immer ganz einfach herauszufinden, wie man zum Beispiel das Login, das 'Includen' von rhtml, das Erweitern von Formularen umsetzt. Dank Google und vielen guten Seiten ist es mir dennoch gelungen. Auch der Einsatz von Google-Maps war nicht mühelos, hat sich aber auf jeden Fall gelohnt. Mit Hilfe meiner Erfahrung und dieses Dokumentes wäre ich nun sicherlich in der Lage weitere Web-Applikationen mit Ruby on Rails ohne grossen Zeitaufwand zu schreiben. Es ist einfach genial, wie häufig man sich auf Ruby und Ruby on Rails verlassen kann. Vermutlich würde ich das nächste Mal versuchen Rails Templates von Beginn an auf meine Bedürfnisse anzupassen, damit ich danach noch schneller entwickeln kann und nicht ständig den rhtml- und Ruby-Code anpassen muss. Fabian Merki 05.11.2006 9 von 9