Probleme mit dem Tidy Gem unter Ubuntu 8.04 LTS

In einem unserer Ruby on Rails Projekte wird benutzergeneriertes HTML ausgegeben. Um dabei (leider nicht seltene) Fehler im HTML zu reparieren, setzen wir Tidy ein. Auf unseren Entwicklungssystemen (Mac OS X 10.5) hatten wir damit keine Probleme. Leider gab es aber beim ersten Deploy auf unserem Staging Server (Ubuntu 8.04, Passenger und Enterprise Ruby) keine Exception, sondern direkt eine weiße Seite.

Eine weiße Seite spricht immer für ein tieferliegendes Problem, so war auch im production.log nichts zu finden, dafür aber im error.log des Apache.

/opt/ruby-enterprise/lib/ruby/gems/1.8/gems/tidy-1.1.2/lib/tidy/tidybuf.rb:40: 
  [BUG] Segmentation fault

Im ersten Moment hatte ich Enterprise Ruby im Verdacht, da es offensichtlich ein Ruby Problem war. Umschalten auf das Default-Ruby der Ubuntu Installation brachte aber keine Veränderung.

In Google wurde ich dann fündig, wie man auf RubyForge nachlesen kann.

Kurz und Knapp, das aktuellste Tidy Gem hinkt leider noch hinter der unter Ubuntu installierten Tidy-Version (nicht gem) hinterher. Seit Tidy 0.99 gibt es eine Änderung in der Tidy Buffer-Structure, durch Hinzufügen einer Zeile in der tidybuf.rb lässt sich das Problem beheben.

Vorher:
TidyBuffer = struct [
    "byte* bp",
    "uint size",
    "uint allocated",
    "uint next" 
]
Nachher:
TidyBuffer = struct [
    "int* allocator",
    "byte* bp",
    "uint size",
    "uint allocated",
    "uint next" 
  ]

Beim Updaten der Gems muss nun nur darauf geachtet werden, dass falls eine neue Version des Tidy Gems released wird, dort gegebenenfalls wieder gepatcht werden muss.

Schlüsselwörter: ruby, server, tidy

Von Stefan Haubold vor 567 Tagen hinzugefügt (0 Kommentare)

Auch abrufbar als: Atom

Twitter

Uns auf Twitter verfolgen: