Domanda

Ho fatto un paio di progetti che utilizzano Ruby on Rails. Ho intenzione di utilizzare JRuby on Rails e hosting su GAE. In tal caso, quali sono le cose che ho bisogno di sapere durante lo sviluppo di applicazioni JRuby. Ho letto che

  • JRuby ha la stessa sintassi
  • posso accedere alle librerie Java
  • JRuby non ha accesso ad alcune gemme / plugins
  • JRuby applicazione sarebbe voluto del tempo per caricare per la prima volta, quindi devo tenerlo in vita con l'invio richiedere ogni 5 minuti o giù di lì
  • Non riesco a usare ActiveRecord e invece mi deve DataMapper

Si prega di correggere se sbaglio su una qualsiasi delle dichiarazioni che ho fatto e c'è niente altro che devo sapere ?. Devo iniziare a leggere su JRuby da zero o posso andare in giro come al solito lo sviluppo di applicazioni Ruby?

È stato utile?

Soluzione

Io uso JRuby di tutti i giorni.

Vero:

  • JRuby ha la stessa sintassi
  • JRuby non ha accesso ad alcune gemme / plugins
  • posso accedere alle librerie Java

Alcune gemme / plugins dispongono di versioni JRuby-specifici, alcuni non lo fanno lavoro a tutti. In generale, ho trovato alcuni problemi e, come le librerie e le piattaforme hanno maturato un sacco di problemi sono andato via (JRuby è diventato molto meglio).

È possibile accedere a Java, ma, in generale, perché si vuole?

False:

  • JRuby applicazione sarebbe voluto del tempo per caricare per la prima volta, quindi devo tenerlo in vita con l'invio di richiesta ogni 5 minuti o giù di lì
  • Non riesco a usare ActiveRecord e invece mi deve DataMapper

Anche Credo che sia possibile immaginare una configurazione server in cui il costo di avvio / riscaldamento iniziale della JVM significa che è necessario eseguire il ping al server, non c'è nulla di inerente a JRuby che rende questo vero. Se è necessario per mantenere in vita il server, si dovrebbe guardare al vostro ambiente di distribuzione. Qualcosa di simile accade in hosting condiviso con passeggero, dove un app può uscire di memoria dopo un periodo di inattività.

Inoltre, usiamo ActiveRecord senza problemi a tutti.

Altri suggerimenti

Per quanto ne so, le rotaie 3 è compatibile al 100% con JRuby, quindi non ci dovrebbe essere nessun problema su quel percorso.

come ogni nuova piattaforma, si dovrebbe fare a vostro agio con esso giocando con JRuby. Mi consiglia di utilizzare RVM per farlo.

Per quanto si domande Go:

  • JRuby è solo un altro tempo di esecuzione, come la risonanza magnetica o rubinus
  • dal momento che JRuby è all'interno della JVM utilizzando Java è molto facile, ma si può anche utilizzare RJB da MRI
  • alcune gemme non sono compatibili, quando usano librerie C nativo, che non vengono eseguiti su JRuby
  • la JVM e il vostro contenitore di applicazioni tempo di avvio necessità e un po 'di tempo per caricare la vostra applicazione, ma questo è tutto, non v'è alcuna necessità di mantenere in vita, che è sbagliato
  • si può usare quello che vuoi, la maggior parte delle gemme vengono aggiornati per essere compatibili con JRuby

@TobyHede in gran parte coperto i problemi che si pensava di voi potrebbe avere quindi lascio a questo.

Per quanto riguarda le altre cose di avere in mente, è semplicemente un interprete diverso e discrepanze divertenti farà sorgere che avrà qualche adattamento.

  1. alcuni metodi sono implementati in modo diverso, come ad esempio sleep 10.seconds getterà eccezione (bisogna sleep 10.seconds.to_i) e mi ricordo sempre NoMethodError sulla classe Simbolo quando si passa da risonanza magnetica per JRuby (non ricordo quale metodo non è stato attuato), appena hanno in mente lievi variazioni saranno lì
  2. si sperimenterà si blocca e le eccezioni in gemme che altrimenti lavorato per voi (leva ad esempio quando si elencano più di una pagina)
  3. alcune gemme può funzionare in modo diverso, di leva (di nuovo) per uscire Se si preme CTRL + C per esempio, piuttosto fastidioso
  4. un po 'più lenti tempi di caricamento di tutto e non zeus
  5. si otterrà occasionali tracce di stack eccezione Java senza alcuna indicazione su quale linea di codice Ruby è successo
  6. Timeout.timeout spesso non funzionerà come previsto quando il suo avvolto il codice intorno rete e stelle allineare male (questo è stato in gran parte risolto in nucleo JRuby, ma sembra che ci sia ancora un problema con le gemme che fanno il loro netcode in puro Java)
  7. problemi nascosti con thread-sicurezza nel codice di terze parti Come si fa a scegliere gemme per un elevato throughput multithreaded applicazione Rails -? soggiorno lontano da EventMachine ad esempio
  8. discussioni sarà fantastico (a causa di nativeness e non gil) e le fibre succhierà (a causa di nessun supporto coroutine in JVM Sono discussioni normali), questo è il motivo per cui spesso non sarà possibile ottenere un incremento delle prestazioni con la celluloide rispetto a risonanza magnetica
  9. è stato utilizzato per eseguire le rotaie con la risonanza magnetica di Ruby come processi in un sistema operativo, si sapeva come monitorare i loro PID, gonfiare, i tempi di esecuzione, li uccidono, li ecc monitorare, questa parte non è evidente quando si passa a JRuby perché tutto è rivolta a fili in un unico processo. Mondo Java ha ottimi strumenti per gestire questi problemi, ma la sua qualcosa dovrete imparare
  10. killall -9 ruby non fare il trucco con JRuby quando si blocca il console (che lo fa più spesso di prima), si devono ps -ef e poi monitorare i processi corretti senza uccidere il vostro NetBeans ecc (minore, ma fastidioso)
  11. a causa del mio ultimo punto, conoscendo Java e la JVM vi aiuterà a uscire da punti stretti in determinate situazioni (a seconda di ciò che si intende fare questo può essere qualcosa che in realtà ha realmente bisogno ), scelta di server di distribuzione aumenterà o diminuirà a questa esigenza (Torquebox ad esempio è un po 'noto per questo, le altre opzioni di distribuzione potrebbe essere più semplice, vedere http://thenerdings.blogspot.com/2012/09/pulling-plug-on-torquebox-and-jruby-for.html )
  12. ...

Inoltre, vedere cosa dice JRuby squadra sulle differenze, https://github.com/jruby / JRuby / wiki / DifferencesBetweenMriAndJruby

Ma sì, altrimenti il ??suo "proprio come MRI Ruby":)

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top