Hi Liste,
in der Liste doofer Ideen, die man nachmittags um 5 noch anfassen kann,
rangiert ein Umstieg von mri 1.8.7 auf 1.9.2 sehr weit oben. Man lernt
dabei vor allem eine Menge über rvm, aber irgendwie habe ich das Gefühl,
dass ich da ein paar Sachen noch nicht verstanden habe, vielleicht kann
mich da ja jemand erleuchten:
- 1.9.2 ist ein Alias für alle möglichen 1.9.2-Versionen: Ich hatte in
meiner rvm-Installation noch einige frühe Installationen, die zusammen
mit rails noch segfaults produzierten. Weil das so ist, greift er sich
beim rvm install 1.9.2 auch nicht eine aktuelle Version, sondern eine
der Versionen aus ~/.rvm/src - nur für den Fall, dass sich noch jemand
fragt, warum die segfaults immer noch nicht weg sind. Also am besten
immer die volle Version spezifizieren, wenn man einen Interpreter
installiert oder noch besser, das ~/.rvm/src-Verzeichnis regelmäßig
aufräumen ...
- nachdem also die richtige 1.9.2-Version (ich benutze momentan
ruby-1.9.2-p180) installiert ist, läuft die Anwendung aber immer noch
nicht. Keine segfaults mehr, aber dafür das ebenso wenig aussagekräftige:
[BUG] cross-thread violation on rb_gc()
(null)
Abort trap
Ein bisschen googlen bringt hier gems mit native Extensions als Ursache
zum Vorschein: Wenn die bereits gegen einen anderen Interpreter
kompiliert wurden, in diesem Fall also gegen 1.8.7, dann gibt es diese
Fehlermeldung. Der Spaß war dann, die entsprechenden gems zu finden, zu
uninstall'en und neu zu installieren. Dabei werden die native Extensions
neu gebaut, diesmal dann gegen 1.9.2.
Daraus ergeben sich mir einige Fragezeichen:
- verschiedene Intepreter mit rvm ja, aber wechseln zwischen 1.9.2 und
1.8.7 geht nicht? Eigentlich hatte ich 1.9.2 nur ausprobieren wollen,
aber jetzt sieht es so aus, als wäre mir der Rückweg abgeschnitten: Es
läuft jetzt unter 1.9.2, aber die cross-thread violation kriege ich
jetzt unter 1.8.7...
- gibt es eine Möglichkeit herauszufinden, welche gems native Extensions
haben? In diesem Fall habe ich es mit Trial-and-Error und informiertem
Raten versucht (hint: es sind mehr, als man meint und manchmal auch
andere, als man meint...)Neben den üblichen Verdächtigen wie mysql,
rmagick, bson_ext, nokogiri usw. war es am Ende json, das noch eine
native-extension hatte und neu installiert werden musste. bcrypt-ruby
hat keine native extension, wollte aber trotzdem neu installiert werden
- kein sehr wissenschaftliches Verfahren...
- wirklich verstanden habe ich die Struktur von rvm noch immer nicht
ganz: unter ~/.rvm/gems/ruby-1.9.2-p180/gems finden sich jetzt die gems
für 1.9.2 - keine Links, sondern echte Kopien, soweit ich das sehe. Aber
die native Extensions teilen sich trotzdem alle Interpreter?! Oder nur
die mri's oder sind auch jruby und macruby davon betroffen? Dann ist so
ein bisschen der Witz von rvm weg, aber vielleicht kann das ja noch
jemand aufklären...
Grüße
Stefan
_______________________________________________
rubyonrails-ug mailing list
rubyonrails-ug@headflash.com
http://mailman.headflash.com/listinfo/rubyonrails-ug