Ho visto l’annuncio di JRuby 9.0.0.0 e visto che è compatibile con Ruby
2.2 ho finalmente deciso di provarlo con un’applicazione Rails 4.2. Non
sono ancora arrivato ad eseguire i test ma ecco alcune impressioni e
consigli.
Serve qualche modifica al Gemfile perché alcune gemme non possono
funzionare dentro la JVM. Nel mio caso
if RUBY_PLATFORM == “java”
gem “activerecord-jdbcpostgresql-adapter”
else
gem “unicorn”
gem “escape_utils” # 10 to 100 times faster than CGI.escape_html and
ERB::Util.html_escape
gem “pg”
end
E’ molto più lento a partire. rails c ci mette 25 secondi per
arrivare al prompt contro i 10 di Ruby 2.2.2 e i quasi 0 dopo che spring
è partito. Mi è stato suggerito di usare
$ JRUBY_OPTS=“–dev” rails c
e in effetti così scende a 12 secondi. Meglio ma sempre tanti. Googlando
il suggerimento ho trovato Improving startup time · jruby/jruby Wiki · GitHub e forse ci
sono degli equivalenti di spring (Theine e Drip). Li devo ancora
provare.
L’adapter PostgreSQL dà un warning inquietante
NOTE: ActiveRecord 4.2 is not (yet) fully supported by AR-JDBC, please
help us finish 4.2 support - …
Non so se lo voglio usare in produzione anche se tutti i test dovessero
passare. Probabilmente no e quindi probabilmente non lavorerei con JRuby
su un’applicazione Rails se non per provare com’è. Poi però tornerei a
MRI.
L’adapter JDBC non si collega a PostgreSQL con la socket unix domain.
In sviluppo ho sia PostgreSQL che MySQL configurati per accettare
connessioni solo su quella. E’ di facile risoluzione ma oltre a
riconfigurare il database dovrei riconfigurare tutti gli altri
database.yml per andare su 127.0.0.1:5432. Una scocciatura e infatti per
ora mi sono fermato qui. Prima o poi completerò il test, ma non vorrei
che prima arrivasse il prossimo luglio
La sensazione è che l’ecosistema JRuby stia ancora rincorrendo e forse è
inevitabile. Mi pare che qui ci sia qualcuno che lo usa in produzione,
che sensazioni avete?
Mi fa piacere leggere di aggiornamenti di JRuby che torna utile in
alcune circostanze.
Io l’ho usato in produzione ma un bel pò di anni fa, circa 5. Dovevo
utilizzare una libreria java per la scansione di barcode ed avevo fatto
un app rails 2 che girava sotto glassfish. Ricordo che la documentazione
JRuby on Rails era ottima, allora marchiata sun.
Io però preferisco MRI, anzi più in generale tutto ciò che è sviluppato
in C++, Java = lentezza esasperante.
Java è lento a partire ma poi è ragionevolmente veloce se si dà tempo
all’ottimizzatore just in time di fare il suo lavoro. Tanti usano Java
persino per giocare (Minecraft). Le mie preoccupazioni, pare fondate,
invece riguardavano i programmi che girano per poco (i test), l’ampiezza
dell’ecosistema e il ritardo rispetto al mondo che gira attorno a MRI.
Ciao Paolo,
Se non uso librerie particolari con ffi e binding c non ci dovrebbe
essere nessun problema con jruby. Le librerie scritte in ruby dovrebbero
girare bene con jruby.
Generalmente cambiando le dipendenze un’app rails gira mediamente bene
su jruby
Java è lento a partire ma poi è ragionevolmente veloce se si dà tempo
all’ottimizzatore just in time di fare il suo lavoro. Tanti usano Java
persino per giocare (Minecraft). Le mie preoccupazioni, pare fondate,
invece riguardavano i programmi che girano per poco (i test), l’ampiezza
dell’ecosistema e il ritardo rispetto al mondo che gira attorno a MRI.
Comunque ho fatto progressi perché mi sono reso conto che postgres può
ascoltare sia sulla porta ip che sulla socket unix. I test passano quasi
tutti ma quelli di integrazione falliscono perché non riescono a far
partire il browser Can't run Chrome webdriver · Issue #3170 · jruby/jruby · GitHub
C’è anche qualche test sui modelli che fallisce ma non ho avuto tempo di
investigare. Potrebbe non dipendere da JRuby.
Ho visto l’annuncio di JRuby 9.0.0.0 e visto che compatibile con Ruby
2.2 ho finalmente deciso di provarlo con un’applicazione Rails 4.2. Non
sono ancora arrivato ad eseguire i test ma ecco alcune impressioni e
consigli.
Serve qualche modifica al Gemfile perch alcune gemme non possono
funzionare dentro la JVM. Nel mio caso
if RUBY_PLATFORM == “java”
gem “activerecord-jdbcpostgresql-adapter”
else
gem “unicorn”
gem “escape_utils” # 10 to 100 times faster than CGI.escape_html and
ERB::Util.html_escape
gem “pg”
end
E’ molto pi lento a partire. rails c ci mette 25 secondi per
arrivare al prompt contro i 10 di Ruby 2.2.2 e i quasi 0 dopo che spring
partito. Mi stato suggerito di usare
$ JRUBY_OPTS=“–dev” rails c
e in effetti cos scende a 12 secondi. Meglio ma sempre tanti. Googlando
il suggerimento ho trovato Improving startup time · jruby/jruby Wiki · GitHub e forse ci
sono degli equivalenti di spring (Theine e Drip). Li devo ancora
provare.
L’adapter PostgreSQL d un warning inquietante
NOTE: ActiveRecord 4.2 is not (yet) fully supported by AR-JDBC, please
help us finish 4.2 support - …
Non so se lo voglio usare in produzione anche se tutti i test dovessero
passare. Probabilmente no e quindi probabilmente non lavorerei con JRuby
su un’applicazione Rails se non per provare com’. Poi per tornerei a
MRI.
L’adapter JDBC non si collega a PostgreSQL con la socket unix domain.
In sviluppo ho sia PostgreSQL che MySQL configurati per accettare
connessioni solo su quella. E’ di facile risoluzione ma oltre a
riconfigurare il database dovrei riconfigurare tutti gli altri
database.yml per andare su 127.0.0.1:5432. Una scocciatura e infatti per
ora mi sono fermato qui. Prima o poi completer il test, ma non vorrei
che prima arrivasse il prossimo luglio
La sensazione che l’ecosistema JRuby stia ancora rincorrendo e forse
inevitabile. Mi pare che qui ci sia qualcuno che lo usa in produzione,
che sensazioni avete?