Pourquoi le gem sqlite 1.2.3 s’installe-t-il correctement pour l’IRM mais pas pour JRuby?

Si j’appelle:

gem install sqlite3-ruby --v 1.2.3 

ça marche pour l’IRM

mais si j’appelle:

 jruby -S gem install sqlite3-ruby --v 1.2.3 

il dit qu’il essaie de construire une extension native (pour Windows) et échoue.

Pourquoi JRuby et l’IRM sont-ils différents dans la façon dont ils traitent les gemmes?

Parce que tout ce qui construit des extensions natives comstack quelque chose en C, et je crois que JRuby n’est pas compatible avec ces choses qui ont des parties écrites en C, bien que je ne connaisse pas les raisons techniques.

JRuby ajoute que le code C doit utiliser FFI. FFI est une nouveauté et la plupart des gemmes Ruby utilisant C ne l’utilisent pas (en fait, je n’en connais aucune).

http://blog.headius.com/2008/10/ffi-for-ruby-now-available.html

Quoi qu’il en soit, vous n’avez pas besoin de cela pour SQLite3 sous jruby – utilisez ceci:

 jruby -S gem install jdbc-sqlite3 

ou si rails de course:

 jruby -S gem install activerecord-jdbcsqlite3-adapter