Singletons demystifiziert (Oder: Was beim Caching von Übersetzungen passieren kann)

Was sind eigentlich Singletons in Ruby und was hat es mit der Meldung "singleton can't be dumped" auf sich, auf die man als Rails-Entwickler hin und wieder stößt?

Zunächst einmal: Der Begriff Singleton, so wie ihn Ruby benutzt, hat nicht viel mit dem Design-Pattern zu tun, das man kennt. Es geht viel mehr um Klassen, die objektspezifisch sind. Also alle Klassen, die man mit dynamischen Methoden wie instance_eval verändert hat. Eine sehr gute Zusammenfassung auf englisch bietet dieser Artikel, auch wenn er schon etwas älter ist.

Rails in Dresden - regionaler Austausch?

Wir arbeiten nun schon einige Jahre in diversen Projekten in Dresden, aber auch überregional, mit Rails auf Basis von Ruby und JRuby und verfügen dadurch über einen großen Rails-Erfahrungsschatz. Wir sind uns sicher, dass das auch anderen Unternehmen im Raum Dresden so geht und möchten daher gerne einen Austausch initiieren, von dem alle profitieren können. In einem ersten Treffen laden wir am 29.03.2012 in den CoWorking-Space CoFab ein, um ergebnisoffen über mögliche Formen eines solchen Austauschs zu diskutieren. Denkbar ist dabei alles von "RailsUserGroup Dresden" bis hin zu einem Dresdner Rails-Stammtisch. Weitere Infos gibt es auf der Website der ObjectFab GmbH unter der Rubrik Aktuelles - Rails Dresden.

JRuby Deployment - skalierbare Anwendungen auf der JVM

In der Ruby on Rails Welt ist der Phusion Passenger mittlerweile das Mittel der Wahl. Damit wird das Deployment der Anwendung in einem Apache oder Nignx Server zum Kinderspiel. In der JRuby-Welt sieht das Deployment etwas anders aus. Man benötigt eine JVM, in der die Anwendung laufen kann.

JRuby bei der Java User Group Saxony

Beim Treffen der JUG Saxony werden wir am 15.03.2012 JRuby vorstellen. Die Vorteile der schlanken Ruby-Syntax werden dabei genauso beleuchtet wie die einfache Integration von Java-Bibliotheken. Und natürlich darf auch eine Vorstellung von Rails bei so einem Vortrag nicht fehlen. Das alles wird auch anhand von Code-Beispielen live demonstriert.
Hier gibt's mehr Infos und die Anmeldung.

UPDATE: Kaum angekündigt, ist der Raum schon voll. Wir freuen uns über das rege Interesse und bieten den Vortrag nocheinmal am 22.03.2012 an. Unter dem obigen Link findet man nun die Anmeldung für den neuen Termin.

UPDATE: Ursprünglich war im ersten Update ein falscher Termin genannt worden. Der 22.03.2012 ist nun aber richtig.

Continuous Upgrades - Rails und JRuby

Upgrade der ObjectTime von Rails 2.3.4 zu Rails 3.2.1,
sowie JRuby 1.4.0 zu JRuby 1.6.7

Nachdem Rails in der Version 3.2 erschienen ist, haben wir uns dazu entschlossen, auch unsere mit JRuby on Rails erstellte Zeiterfassung auf den neusten technischen Stand zu bringen. Denn nur durch regelmäßige Updates aller relevanten Bibliotheken kann man dauerhaft sicherstellen, dass Rails-Anwendungen zuverlässig funktionieren und technisch auf dem neuesten Stand sind.

Und da sich gerade beim Schritt von Rails 2 zu Rails 3 im Rails-Framework einiges unter der Haube verändert hat (Neuerungen im Rails 3), z.B.

dokumentieren wir hier kurz die beim Upgrade von uns vollzogenen Schritte sowie relevante Stolperfallen.

Laufen Eure JRuby Apps schon mit Ruby 1.9?

Die JRuby Entwicklung geht zügig voran. Das Hauptziel der 1.6.x Serie - der Ruby 1.9 Support - scheint fast vollständig erreicht zu sein. Laut Aussage des Entwicklerteams ist JRuby 1.6.6 das letzte Release der 1.6er-Reihe.

Ab Version 1.7 wird JRuby standardmäßig mit Ruby 1.9 ausgeführt. Also Grund genug, die Anwendungen schrittweise auf Ruby 1.9 umzustellen.
Wie sieht es bei Euch mit der Umstellung auf Ruby 1.9 aus?


Hier noch ein Tipp am Rande: Wer schon immer genauer wissen wollte, wie JRuby die Ruby Funktionalität intern umsetzt, sollte sich diesen Artikel ansehen. Journey to the center of JRuby
Beispielhaft wird die JRuby-Implementierung der String-Klasse, samt der Kompilierung der Java-Klasse gezeigt.

Update:
Laut Charles Nutter's Tweet gibt es nun doch noch ein JRuby 1.6.7.

Runder Geburtstag

10 Jahre ist es nun schon her, dass mit JRuby ein alternativer Interpreter bekannt wurde, der die Einfachheit von Ruby mit der Vielfalt von Java verknüpfte. Grund genug, um es zur Sprache des Monats zu küren, denn in diesen 10 Jahren hat sich viel getan.
Mittlerweile ist JRuby genauso leistungsfähig wie die MRI (oder sogar noch leistungsfähiger?), unterstützt alle Funktionen, die man als Rails-Entwickler benötigt und hält mit der Entwicklung schritt - JRuby 1.7 unterstützt unter Anderem "InvokeDynamik", welches mit Java 7 in die VM integriert wurde, um Scriptsprachen dynamische Typisierung zu ermöglichen. Dies steigert die Perfomance spürbar.

Am 15.03. stellen wir JRuby im Rahmen einer Veranstaltung der JUG Saxony vor. Dazu laden wir herzlich in unsere Räume der CoFab ein.

Java schneller als C

Ein kleiner Performancetest von Charles Oliver Nutter zeigt Java kann doch mehr als mancher erwartet.
Zitat: "Don't let anyone ever tell you Java is not or cannot be as fast or faster than C."

JRuby Jam Session

Für alle Interessierten hier die Links zu einem sehenswerten JRuby Vortrag von Charles Nutter und Nick Sieger - Video (ca. 1h) und die Vortragsfolien.

Und einen Blick in die Zukunft von JRuby mit Java 7 kann man hier bekommen JRuby and Java 7: What to Expect .

Reversible Migrations mit Rails 3.1

Wohl jeder Rails-Entwickler wird sich schon einmal darüber geärgert haben, bei Trivial-Migrationen neben dem up auch noch manuell ein down implementieren zu müssen - insbesondere dann, wenn das down nicht mehr macht als ein einfaches remove_column oder rename_table.

Rails 3.1 befreit uns von dieser Last.

Bookmark and Share

Sponsor

Gesponsort von ObjectFab GmbH

Letzte Kommentare

  • Stean Wienert: Cool :) Schreibe ich mir direkt mal in den Kalender. Mehr lesen
  • Dominik: Da in dem Benchmark auf Nokogiri zurückgegriffen wird (das in Mehr lesen
  • Andre: Schön, dass jetzt endlich die Classpath-bugs gefixt sind! Macht sich Mehr lesen
  • iGEL: Auf GitHub sind auch aktuelle Versionen verfügbar. Sucht euch hier Mehr lesen
  • David Cresces: Jaa stimmt ein ähnliches Problem hatte ich auch schonmal vor Mehr lesen