Anmelden Registrieren

Badges

Follow Peter Bouda on Google Plus

Feeds

Neueste BlogeinträgeBlog

Statische Webseiten mit Ruby on Rails

Bearbeitet am Freitag, 04. März 2011, 10:17 Uhr von pbouda

Ruby on Rails weiß ich seit langem als eines der flexibelsten, einfachsten und trotzdem von den Einsatzmöglichkeiten umfangreichsten Webframeworks zu schätzen. Vor kurzem hatte ich nun die Idee, auch statische Webseiten mit Ruby on Rails zu erstellen. Die Webseiten waren für ein Projekt gedacht, dessen Server nur HTML unterstützte und dessen Webseiten deswegen alle statisch sein mussten. Trotzdem wollte ich die neue Lokalisierungsmöglichkeiten sowie ActiveRecords für einige Inhalte (wie Fotogallerien) verwenden. Nach etwas herumprobieren bin ich auf folgende routes.rb gekommen, die alle Links mit einem Präfix für die Lokalisierung (wie “/en/”) sowie einem Suffix (“.html”) versieht. Die Webseiten sind so auch ungeingeschränkt suchmaschinengeeignet :-). Hier also meine Lösung als routes.rb:

ActionController::Routing::Routes.draw do |map|
map.root :controller => "start", :locale => 'de'

# für einfache statische Seiten, wie die Startseite, Projektseiten, ...
map.connect ':locale/start/:action.html', :controller => 'start', :locale => 'de'
map.connect ':locale/project/:action.html', :controller => 'project', :locale => 'de'
map.connect ':locale/publications/:action.html', :controller => 'publications', :locale => 'de'

# für Seiten, die ActiveRecords verwenden, z.B. Fotogallerie
map.connect ':locale/town/photos/:action/:id.html', :controller => 'town/photos', :action => 'show', :locale => 'de'
map.connect ':locale/town/photos/:action.html', :controller => 'town/photos', :locale => 'de'

map.connect ':locale/:controller/:action.html', :locale => 'de'

map.connect ':controller/:action.html'
end

Die Seiten sind dann unter Links verfügbar wie “/de/start/index.html” oder “/de/town/photos/show/1.html”. Alles andere macht Rails für euch, erstellt einfach alle Links mit link_to. Z.B. ein Link auf eine der Fotoseiten:

link_to image_tag(photo.file.thumb.url, :border => 0), { :controller => 'town/photos', :action => 'show', :id => photo.id }

Um die Seiten zu veröffentlichen, hole ich mir einfach alles per wget:

wget -m -nH http://localhost:3000/

Rails macht Spaß!