Mokabyte

Dal 1996, architetture, metodologie, sviluppo software

  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Menu
  • Argomenti
    • Programmazione & Linguaggi
      • Java
      • DataBase & elaborazione dei dati
      • Frameworks & Tools
      • Processi di sviluppo
    • Architetture dei sistemi
      • Sicurezza informatica
      • DevOps
    • Project Management
      • Organizzazione aziendale
      • HR
      • Soft skills
    • Lean/Agile
      • Scrum
      • Teoria della complessità
      • Apprendimento & Serious Gaming
    • Internet & Digital
      • Cultura & Società
      • Conferenze & Reportage
      • Marketing & eCommerce
    • Hardware & Tecnologia
      • Intelligenza artificiale
      • UX design & Grafica
  • Ultimo numero
  • Archivio
    • Archivio dal 2006 ad oggi
    • Il primo sito web – 1996-2005
  • Chi siamo
  • Ventennale
  • Libri
  • Contatti
Cerca
Chiudi

Nel numero:

129 maggio
, anno 2008

Ruby in azione

III parte: Deployment di applicazioni Rails con JRuby

Avatar

Andrea Nucci

Laureato in Scienze Statistiche e particolarmente attento alle novità che lo circondano, dal 1998 lavora nel settore dell‘IT. Prevalentemente coinvolto in progetti legati a Java, da un paio d‘anni è interessato al mondo Open Source. Dopo aver accumulato una notevole esperienza presso vari clienti e con vari ruoli (da programmatore a coordinatore gruppo di sviluppo), attualmente lavora in Ancitel S.p.A.

MokaByte

Ruby in azione

III parte: Deployment di applicazioni Rails con JRuby

Andrea Nucci

Andrea Nucci

  • Questo articolo parla di: Frameworks & Tools, Programmazione & Linguaggi

Nei precedenti articoli ci siamo occupati di Ruby e Rails senza considerare alcun punto di contatto con il mondo Java.
Ora con JRuby forniamo il “bridge” tra le due piattaforme.

JRuby

Cosa è JRuby? JRuby è un’implementazione del linguaggio Ruby in Java. Molto semplicemente questo implica che il codice scritto in Ruby per essere utilizzato con MRI (Matz’ Ruby Implementation) può essere fruito in una piattaforma Java. Perchè questo?
Innanzitutto perchè ci sono milioni di righe di codice Java nel mondo con le quali un’applicazione Ruby, ricorrendo a JRuby, può interagire. Questo mantenendo la semplicità e velocità di sviluppo del linguaggio Ruby. Risulta in tal modo possibile sfruttare le potenzialità di un’interfaccia grafica utilizzabile sotto qualsiasi OS o accedere alle Math library Java. Inoltre, attraverso BSF (Bean Scripting Framework) si può invocare uno script Jruby dalla nostra applicazione Java.
Altro valido motivo (almeno finche’ non risulterà disponibile Ruby 2.0) è riconducibile al fatto che l’implementazione in C di Ruby usa “green threads”, non consentendo quindi, a differenza di quanto avviene in Java (e quindi con Jruby), di ricorrere ai thread nativi del sistema operativo.
Ora vediamo in che modo ottenere tutto questo.

Installiamo e configuriamo JRuby

Supponiamo di avere già installato sulla macchina un JRE 1.6 e di aver settato la variabile d’ambiente JAVA_HOME (e di aver aggiunto al PATH la JAVA_HOME/bin).
Andiamo sul sito http://dist.codehaus.org/jruby/ e facciamo il download della versione che ci interessa di JRuby. Nello specifico, abbiamo utilizzato 1.1. Esplodiamo il pacchetto e configuriamo la nostra JRUBY_HOME aggiungendo al PATH JRUBY_HOME/bin. A questo punto dovremmo senza difficoltà disporre di tutti i comandi jruby.
Come test proviamo

jruby -version

e dovremmo ottenere qualcosa del tipo

ruby 1.8.6 (2008-03-18 rev 6255) [i386-jruby1.1]

Utilizziamo classi Java da Ruby

Scriviamo qualche semplice riga di codice che consente di invocare codice Java da Ruby.
Creiamo un file testJava.rb con il seguente contenuto

require 'java'
include_class 'java.util.TreeSet'
myset = TreeSet.new
myset.add "Primo"
myset.add "Secondo"
myset.add "Terzo"
i=0
myset.each do |v|
    puts "value:#{i} #{v}"
i=i+1
end

Lanciamo jruby testJava.rb e dovremmo veder in output qualcosa del tipo:

value:0 Primo
value:1 Secondo
value:2 Terzo

Questo sta a significare che possiamo da codice Ruby utilizzare (quasi) qualsiasi libreria disponibile in ambiente Java.

Dove vogliamo andare a parare

Quello che a noi interessa è effettuare il deployment su di un application server Java di un’applicazione basata sul framework RoR.
Seguiamo passo passo tutte le operazioni necessarie a raggiungere il risultato che ci siamo preposti.
L’ambiente in cui abbiamo effettuato l’operazione è il seguente:

  • JRE 1.6.0
  • Tomcat 6
  • JRuby 1.1
  • RubyOnRails 2.0.2.
  • Supponiamo di utilizzare MySQL come DBMS.

Queste le operazioni da effettuare. Prima di tutto installiamo le “gemme” necessarie:

  1. mongrel, un web server (per lo sviluppo e per fare dei test intermedi)
  2. activerecord-jdbcmysql-adapter, l’adapter per consentire ad ActiveRecord di parlare con MySQL
  3. rails… e qui non diciamo altro.

In un’unico passaggio installiamole tutte.

jruby -S gem install mongrel activerecord-jdbcmysql-adapter rails

Attendiamo che l’operazione vada a buon fine e passiamo all’attività successiva.
Creiamo un applicazione Rails che parla con MySQL via JRuby e Jdbc Adapter

jruby -S rails mokaapp -d mysql

Entriamo nella nostra cartella mokaapp ed editiamo config/database.yml
Impostiamo i parametri corrispondenti alla nostra base dati specificando l’ adapter JDBC invece del default generato.

development:
    adapter: jdbcmysql
    encoding: utf8
    database: mokaapp
    username: moka
    password: moka

Chiaramente dobbiamo avere disponibile una base dati con le caratteristiche sopra riportate.

Creiamo la base dati

jruby -S rake db:create:all

quindi creiamo la nostra scaffold per la tabella testmoka

jruby script/generate scaffold testmoka title:string body:text

quindi eseguiamo le operazioni sul database

jruby -S rake db:migrate

A questo punto facciamo partire Mongrel

jruby script/server

Abbiamo la nostra applicazione Rails disponibile, ma questa volta stiamo girando su di un Runtime Environment Java. Via browser invochiamo http://localhost:3000 e andiamo a vedere “About your application’s environment”

 Figura 1 – L’ambiente della nostra applicazione

Andiamo a richiamare http://localhost:3000/testmokas e iniziamo a fruire della scaffold application RoR. A questo punto però avremmo piacere (o meglio dei vantaggi) nel rendere disponibile l’applicazione su di una piattaforma “tipica”, diciamo Apache Tomcat. Vediamo come  procedere.
Lo strumento più immediato che ci consente di effettuare l’operazione di creazione del .war con tutto il necessario si chiama Warbler.

Installiamo la gemma

jruby -S gem install -y rails warbler

 
Il comando per effettuare questa operazione, lanciato sempre dalla root dell’applicazione, è

jruby -S warble war

Prima di far questo creiamo il nostro file di configurazione config/warble.rb mediante

jruby -S warble config

Il default dovrebbe andare… magari mettendo

config.webxml.rails_env = 'development'

per puntare alla base dati di sviluppo.

Il file è ampiamente documentato quindi non ci dovrebbero essere ostacoli particolari nella modifica della configurazione.

Dobbiamo fare attenzione al fatto che, utilizzando Rails 2.0, è presente nell’application.rb un meccanismo di security… che al momento evitiamo.

protect_from_forgery # :secret

In questa fase eludiamo il problema e commentiamo l’istruzione prima di effettuare la creazione del nostro mokaapp.war. A questo punto dovremmo poterne effettuare il deployment sotto un qualsiasi Application Server Java. Così facendo ci apriamo alla possibilità di rendere disponibile la facilità di sviluppo del mondo Rails e della programmazione Ruby alla solidità di un’ambiente Java-based.

Conclusioni

Abbiamo messo le basi per consentire di utilizzare Ruby e soprattutto Ruby on Rails con una JRE attraverso JRuby. Il progetto (http://jruby.codehaus.org/) sembra evolversi piuttosto rapidamente ed il supporto di strumenti quali NetBeans o Eclipse completerà di fatto l’operazione di “bridging” tra i due mondi.

Riferimenti

[1] JRuby Home
http://jruby.codehaus.org/

[2] 120 seconds guide to JRuby on Rails, The Empty Way
http://blog.emptyway.com/2008/04/08/120-seconds-guide-to-jruby-on-rails/

[3] JRuby on Rails on Tomcat, JRuby Wiki
http://wiki.jruby.org/wiki/Jruby_on_Rails_on_Tomcat

[4] Warbler, JRuby Wiki
http://wiki.jruby.org/wiki/Warbler

[5] Goldspike, JRuby Wiki
http://wiki.jruby.org/wiki/Goldspike

[6] Riding the Rails with WebSphere: Part 1: Combine Ruby on Rails with WebSphere Application Server and get rapid development with security, scalability, and reliability
http://www.ibm.com/developerworks/websphere/techjournal/0801_shillington/0801_shillington.html

[7] JRuby and the Java Platform, SDN
http://java.sun.com/developer/technicalArticles/scripting/jruby/

Facebook
Twitter
LinkedIn
Avatar

Andrea Nucci

Laureato in Scienze Statistiche e particolarmente attento alle novità che lo circondano, dal 1998 lavora nel settore dell‘IT. Prevalentemente coinvolto in progetti legati a Java, da un paio d‘anni è interessato al mondo Open Source. Dopo aver accumulato una notevole esperienza presso vari clienti e con vari ruoli (da programmatore a coordinatore gruppo di sviluppo), attualmente lavora in Ancitel S.p.A.

Andrea Nucci

Andrea Nucci

Laureato in Scienze Statistiche e particolarmente attento alle novità che lo circondano, dal 1998 lavora nel settore dell‘IT. Prevalentemente coinvolto in progetti legati a Java, da un paio d‘anni è interessato al mondo Open Source. Dopo aver accumulato una notevole esperienza presso vari clienti e con vari ruoli (da programmatore a coordinatore gruppo di sviluppo), attualmente lavora in Ancitel S.p.A.
Tutti gli articoli
Nello stesso numero
Loading...

Stime e pianificazione agile

Il progetto in corso d‘opera

BPEL: Business Process Execution Language

III parte: Gestione di processi complessi

Processing e visualizzazione

II parte: Le primitive grafiche

Programmare con Ajax

IV parte: Ajax e Rails, integrazione e caratteristiche

Nella stessa serie
Loading...

Ruby in azione

II parte: Deployment di applicazioni Rails

Ruby in azione

I parte: Componente View e Templates in Rails

Mokabyte

MokaByte è una rivista online nata nel 1996, dedicata alla comunità degli sviluppatori java.
La rivista tratta di vari argomenti, tra cui architetture enterprise e integrazione, metodologie di sviluppo lean/agile e aspetti sociali e culturali del web.

Imola Informatica

MokaByte è un marchio registrato da:
Imola Informatica S.P.A.
Via Selice 66/a 40026 Imola (BO)
C.F. e Iscriz. Registro imprese BO 03351570373
P.I. 00614381200
Cap. Soc. euro 100.000,00 i.v.

Privacy | Cookie Policy

Contatti

Contattaci tramite la nostra pagina contatti, oppure scrivendo a redazione@mokabyte.it

Seguici sui social

Facebook Linkedin Rss
Imola Informatica
Mokabyte