Az a jó, hogy a Ruby egy ilyen kis buzibár szleng nyelve. A RubyGems egy szeméttelep, állandóan tenyészik. Lassú és gagyi. A Rails meg buta.
Első körben jó ötletnek tűnik, hogy lehet ubuntu repositoryn keresztül ruby gemeket telepíteni. De a tutorialok, manualok, guide-ek tömkelegében előbb utóbb kiad az egyszerű programozó egy "gem install rails" parancsot, és kész a baj. Főleg, hogy kérdés nélkül installálja a user home directoryjába. Viszont, ha sudo-val követjük el ezt a sort, akkor a
/var/lib/gems/-be pakol. (Ezt se volt egyszerű kideríteni.)
Utó-mellékszál előre betűzve, az ubuntu csomag karbantartókról - akik szintén cigányok - basznak rendesen karbantartani. A
rails csomag elavult. Nem kicsit. Akkor vegyék szépen ki a repóbol. Jah, hogy nem is figyel rá senki? Áh, sebaj. Másik WTF, hogy nem használják a RubyGem könyvtárakat; teljesen más helyre installálgatnak dolgokat.
A Ruby on Rails fejlesztői meg persze cigányok. Nah. Mert az actionpack-2.3.5-ben van egy fájl, ami specifikálja, hogy rack ~> 1.0.0 gemre van szüksége az actionpacknak. Ami azért jó, mert a thin szerver szépen felvarázsolja a legújabb rack-et, ami jelenleg az 1.1.0.
Amikor a thin indul, betölti a racket, majd betöltené a rails környezetet. Rails betöltené a rack-et. Bamm. Azért, mert a Rails csak 1.0.x verziókat fogad el. (Ezt jelenti a ~>) A thin viszont alapból a legújabbat kapta. Viszont erről nem kapok értelmes hibaüzenetet, csak annyit, hogy "Missing Rails gem", blablabla.
És Ruby kódot olvasni, olyan, mint mikor pornófilmben valamiért épp belóg a centerbe egy pár here. Instant nyomnád az alt-f4-et, de inkább kicsit tovább nézed, hátha megint pina jön. Feltúrtam egy csomó .gemspec fájlt (/var/lib/gems/1.8/specifications) ezekben átírtam a függőségeket (dependency, >= 1.1.0), az gems/1.8/gems/actionpack-2.3.5/Rakefile-t, majd végül a /var/lib/gems/1.8/gems/actionpack-2.3.5/lib/action_controller.rb -ben a következő változtatásokat kellett eszközölni:
- gem 'rack', '~> 1.0.0'
+ gem 'rack', '>= 1.1.0'
És máris ment a thin. Hát. És én még amiatt aggódtam, hogy a mySQL 5.1 nem fog neki tetszeni, amit a Lucid Lynx (development) feltett.