Ruby on Rails: statische Webseiten

Aus Wikibooks

Ich weiß nicht wie es Euch geht, ich habe oft statische Webseiten. Die Rahmenbedingungen können sehr unterschiedlich sein und dementsprechend gibt es auch sehr unterschiedliche Lösungsansätze.

Das sind für mich die wichtigsten Fälle:

  1. Einige statische Webseiten in einer Rails/Webapplikation.
  2. Eine weitgehend statischer Webauftritt, mit einigen wenigen dynamischen Inhalten. Beispiel: includes, dynamische Bildwechsel, ..
  3. Ein rein statischer Webauftritt, bei dem die Texte häufig geändert werden.
  4. Ein rein statischer Webauftritt, bei dem die Texte selten oder nie geändert werden.

Und die das die wichtigsten Lösungsansätze:

  1. Ein Controller für statische Seiten. Der Text liegt im View (xxx.html.erb).
  2. Ein Controller für statische Seiten. Der Text liegt in der Datenbank. Im Grunde ein einfaches railsbasiertes CMS.
  3. Ein Contentmanagement System.
  4. Ein Generator für statische Webseiten.
  5. Handgeschriebene statische Seiten.

Controller[Bearbeiten]

Für statische Webseiten in einer Rails/Webapplikation eignen sich die ersten beiden Ansätze, die beide einen Controller für statische Steiten benutzen. Wenn es nur um wenige Seiten geht kann man den Text im View, d.h. in einer html.erb Seite pflegen und die Routen in routes.rb. Wenn es mehr Seiten werden, oder wenn die Seiten von einem Redakteur (d.h. nicht vom Softwareentwickler) ist es besser den Text in der Datenbank zu pflegen, weil dann die "routes" fest bleiben und man die Editoroberfläche auf den Nutzer zuschneiden kann.

Beide Ansätze werden in Ryan Bates Railscast http://media.railscasts.com/videos/117_semi_static_pages.mov (englisch!) besprochen.

Contentmanagementsyseme[Bearbeiten]

Den Controller kann man zum CMS erweitern. Oder ein fremdes CMS verwenden und es ggf. erweitern. Obwohl ein CMS in Rails leicht zu schreiben ist, gibt es nur wenige:

Contentmanagementsysteme (in Rails)

  • http://radiantcms.org/ Radiant is a no-fluff, open source content management system designed for small teams.
  • http://adva-cms.org/ adva-cms is an open source cms plattform based on Ruby on Rails and Rails Engines and Rails I18n / Globalize2. Das Team von adva-cms stammt aus Berlin, weshalb auch ein eine deutsche Übersetzung existiert.
  • http://code.google.com/p/palani/ Palani is a CMS Component for Ruby on Rails. Its aim is to offer a CMS Component for your Ruby on Rails Projects. Die Initiatoren des Palani-Projekts sitzen in Frankfurt am Main, also hier in Deutschland.
  • http://www.toghq.com/ Tog is a non-intrusive, extensible open source platform that helps you to add social network features to your Ruby on Rails apps. It contains a CMS
  • http://mephistoblog.com/ Mephisto is a blogging engine written in Ruby on Rails
  • http://typosphere.org/projects/show/typo Typo is a blogging engine developped with the Ruby on Rails framework.
  • http://slateinfo.blogs.wvu.edu/ slate is a content management system (CMS) developed using Ruby on Rails focused on rapid production of traditional websites

Contentmanagementsyseme einen sich vor allem für weitgehend statischer Webauftritte, bei dem die Texte häufig geändert werden. Und wenn die Seiten von einem Redakteur (d.h. nicht vom Softwareentwickler)gepflegtwerden. Wenn die statische Webseiten zu einer Rails/Webapplikation gehören, muß man das CMS erweitern bzw. CMS und Webapplikaion integrieren.

Generatoren[Bearbeiten]

Generatoren für Webseiten eignen sich für größere statische Webauftritte und für statische Webauftritte, mit einigen wenigen dynamischen Inhalten. Solche Generatoren kann man auch von einer RailsApplikation aus steuern, wenn dies die API zulässt. Das wollen wir uns an einem Beispiel, der

näher anschauen.

Es gbt übrigens erstaunlich viele Genaratoren für Webseiten in Ruby, und die meisten sind aktuell und die Projekte sind gut gepflegt:

Bei sehr kleinen statischen Webauftritten machen auch handgeschriebene statische Seiten Sinn. Handgeschriebene und generierte statische Steite lassen sich meist sehr gut optimieren, z.B.: für Suchmaschinen.