JRuby e Rails

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.

  1. 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

  1. 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.

  1. 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.

  1. 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 :slight_smile:

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?

Paolo

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

----- Messaggio originale -----
Da: “Paolo M.” [email protected]
Inviato: ‎23/‎07/‎2015 18:03
A: “[email protected][email protected]
Oggetto: Re: [ruby-it] JRuby e Rails

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.


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml

2015-07-23 18:34 GMT+02:00 francesco agati
[email protected]:

Ciao Paolo,
Se non uso librerie particolari con ffi e binding c

Credo che FFI funzioni in JRuby. Il problema sono le C extensions che
invece chiamano direttamente funzioni MRI.

Avevo provato jruby-pg per prima ma non funzionava per via di questa
issue Can't use with ActiveRecord · Issue #11 · headius/jruby-pg · GitHub
Ecco perché sono passato all’altra.

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.

(scusate per il top posting e per la brevit)

per i punti 3) e 4) prova ad usare GitHub - headius/jruby-pg: A JRuby version of the "pg" gem.
dovresti poterlo usare come dropin replacement della gemma pg verso
0.17.1
On 23 Jul 2015 12:44, “Paolo M.” [email protected]
wrote:

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.

  1. 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

  1. 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.

  1. 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.

  1. 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 :slight_smile:

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?

Paolo


Posted via http://www.ruby-forum.com/.


Ml mailing list
[email protected]
http://lists.ruby-it.org/mailman/listinfo/ml