[Newbie] Presentazione e domanda

Buongiorno a tutti,
mi chiamo Jonathan e da pochi mesi mi sono affacciato al mondo di Ruby
on Rails. Armato di documentazione di cui ho letto ottime recensioni in
rete (Programming Ruby 1.9 - Agile Web D. with Rails) ho deciso
di approfondire questo linguaggio che trovo molto, molto potente
(provengo da PHP e da un lontano trascorso in Perl).

Arrivo al dunque chiedendovi info e/o consigli:
ho “ereditato” un progetto web costituito da due applicativi scritti in
RoR, rispettivamente in:

Ruby 1.8.6-p111

  • gem list -
    actionmailer (2.3.4)
    actionpack (2.3.4)
    activerecord (2.3.4)
    activeresource (2.3.4)
    authlogic (2.1.2)
    builder (2.1.2)
    cgi_multipart_eof_fix (2.5.0)
    fxri (0.3.6)
    fxruby (1.6.12)
    gem_plugin (0.2.3)
    hoe (2.3.3)
    hoe-seattlerb (1.2.1)
    hpricot (0.6)
    json_pure (1.1.9)
    log4r (1.0.5)
    minitest (1.4.2)
    mongrel (1.1.5)
    mysql (2.8.1)
    rack (1.0.0)
    rails (2.3.4)
    rake (0.8.7, 0.7.3)
    rubyforge (2.0.2)
    rubygems-update (1.3.5)
    session (2.4.0)
    sources (0.0.1)
    win32-api (1.0.4)
    win32-clipboard (0.4.3)
    win32-dir (0.3.2)
    win32-eventlog (0.4.6)
    win32-file (0.5.4)
    win32-fie-stat (1.2.7)
    win32-process (0.5.3)
    win32-sapi (0.1.4)
    win32-shortcut (0.2.3)
    windows-api (0.2.0)
    windows-pr (0.7.2)

Ruby 1.9.2-p136

  • gem list -
    abstract (1.0.0)
    actionmailer (3.0.3)
    actionpack (3.0.3)
    activemodel (3.0.3)
    activerecord (3.0.3)
    activeresource (3.0.3)
    activesupport (3.0.3)
    arel (2.0.7, 2.0.6)
    builder (2.1.2)
    bundler (1.0.9)
    cgi_multipart_eof_fix (2.5.0)
    erubis (2.6.6)
    gem_plugin (0.2.3)
    i18n (0.5.0)
    mail (2.2.15, 2.2.12)
    mime-types (1.16)
    minitest (1.6.0)
    mongrel (1.1.5 x86-mingw32)
    mysql2 (0.2.6 x86-mingw32)
    polyglot (0.3.1)
    rack (1.2.1)
    rack-mount (0.6.13)
    rack-test (0.5.7, 0.5.6)
    rails (3.0.3)
    railties (3.0.3)
    rake (0.8.7)
    rdoc (2.5.8)
    rubygems-update (1.4.2)
    sqlite3-ruby (1.3.2 x86-mingw32)
    thor (0.14.6)
    treetop (1.4.9)
    tzinfo (0.3.24, 0.3.23)

La mia esigenza attuale sarebbe quella di aggiornare i precedenti due
applicativi web all’ultima versione di Ruby on Rails.
Su Windows 7, seguendo le indicazioni del libro “Agile Web
Development…” ho scaricato l’installer da railsintaller.org ed
installato l’ultima versione di RoR (Ruby 1.9.3-p125
Rails 3.2). Ho a disposizione il database MySQL con il restore di
tabelle e dati aggiornati.

Penso, forse erroneamente, che il porting del progetto in 1.9.2 sia più
facile, mentre quello in 1.8.6 presenti diverse difficoltà, tali da
considerare forse il caso di riscrivere il codice da zero.

Potreste gentilmente indirizzarmi o consigliarmi, tenendo conto della
mia poca esperienza e quindi non dando nulla per scontato, sui passi da
effettuare per poter aggiornare i due progetti in modo da avere un’unica
installazione di RoR da manutenere ed aggiornare?

Ringrazio tutti in anticipo!

Jonathan

Ciao Jonathan,

ti faccio una domanda per capire meglio la situazione. Ci sono dei test
scritti per le applicazioni?

Sante

Ciao Sandro,
si, nelle cartelle test delle due rispettive app sono presenti files per
test. Decisamente più nutrita la sezione di test dell’app scritta in
1.8.6
Grazie per la prontissima risposta

Jonathan

2012/7/30 Jonathan L. [email protected]

Ciao Sandro,

Sante! :stuck_out_tongue:

si, nelle cartelle test delle due rispettive app sono presenti files per
test. Decisamente pi nutrita la sezione di test dell’app scritta in
1.8.6

Per l’app 3.0.3 potresti iniziare seguendo una guida nel passaggio da
rails
3.0.x a rails 3.1.0 perch c’ la variazione della cosiddetta Asset
Pipeline. Sul resto non dovresti avere grosse difficolt. Naturalmente ti
conviene creare un branch git (immagino il tutto usi gi git) di appoggio
in cui fare la prova di upgrade. Fai continuamente girare i test finch
non
passano tutti, quello dovrebbe essere un punto di arrivo intermedio.

Per l’altra app ti consiglio di cominciare a guardare se la test suite
attuale effettivamente funzionante o l perch generata in automatico
(consiglio valido in generale). Poi guarda se le gemme che utilizza sono
tutte supportate (eventualmente in una nuova versione) con ruby 1.9 e
rails
3.2.7. Molto probabilmente la risposta sar no, ma sperare gratis :slight_smile:

Sante

Sante R. wrote in post #1070680:

2012/7/30 Jonathan L. [email protected]

Ciao Sandro,

Sante! :stuck_out_tongue:

Ops! Perdono Sante :stuck_out_tongue:

si, nelle cartelle test delle due rispettive app sono presenti files per
test. Decisamente pi nutrita la sezione di test dell’app scritta in
1.8.6

Per l’app 3.0.3 potresti iniziare seguendo una guida nel passaggio da
rails
3.0.x a rails 3.1.0 perch c’ la variazione della cosiddetta Asset
Pipeline. Sul resto non dovresti avere grosse difficolt. Naturalmente ti
conviene creare un branch git (immagino il tutto usi gi git) di appoggio
in cui fare la prova di upgrade. Fai continuamente girare i test finch
non
passano tutti, quello dovrebbe essere un punto di arrivo intermedio.

Ok, mi puoi consigliare qualche link in particolare?

Per l’altra app ti consiglio di cominciare a guardare se la test suite
attuale effettivamente funzionante o l perch generata in automatico
(consiglio valido in generale). Poi guarda se le gemme che utilizza sono
tutte supportate (eventualmente in una nuova versione) con ruby 1.9 e
rails
3.2.7. Molto probabilmente la risposta sar no, ma sperare gratis :slight_smile:

Sante

Immaginavo presentasse complicazioni, vista anche la versione di RoR
utilizzata… in ogni caso seguirò il tuo consiglio!

Grazie ancora Sante : )

Paolo M. wrote in post #1070683:

Non dovresti avere troppi problemi a passare da 1.8.6 a 1.9.3. Non
preoccuparti, non dovrai riscrivere il codice da zero. Nel passaggio da
1.9.2 a 1.9.3 probabilmente non dovrai fare nulla e forse non dovrai far
nulla neppure nel passaggio dalla 1.8, ma buon per te che ti hanno
lasciato un progetto con i test. A me non capita mai…

Dove invece potrai avere dei problemi sarà con l’aggiornamento delle
gemme a versioni più moderne, perché in alcuni casi si è obbligati ad
usare versioni vecchie in quanto quelle nuove non sono compatibili con
la 1.8.

E non per essere snob, ma se il tuo server non è Windows programmando
con Ruby e con Rails conviene lavorare con OS derivati da Unix, Linux o
Mac. Non solo sono gli OS di riferimento per gli sviluppatori di Rails
ma di solito i server sono Linux e ho visto sviluppatori penare su
Windows cercando di tenersi compatibili. Non è tanto l’interprete ad
essere problematico quanto tutto quello che ci sta attorno, soprattutto
se hai script o servizi accessori in background. Tante volte ci sono
delle dipendenze dall’OS. Una virtual machine risolve il problema e
prima di andare in produzione ti serve comunque un server su cui provare
che le installazioni funzionino.

Dovresti trovare molto utile RVM o il suo equivalente Windows, PIK

http://watirmelon.com/2011/01/17/easily-manage-your-rubies-with-rvm-bundler-and-pik/

In pratica ti permettono di avere più interpreti sulla stessa macchina e
di passare dall’uno all’altro molto rapidamente. Sono l’ideale per te
che dovrai lavorare con due versioni. Dovrai anche tener separate le
gemme e a questo pensano bundler e/o i gemset di rvm. Pik non li ha ma
ci sono dei workaround Named Gem sets · Issue #16 · vertiginous/pik · GitHub

Paolo

Ciao Paolo,
ringrazio anche te per le preziose indicazioni di cui farò tesoro.
Purtroppo il server finale è effettivamente Windows 7, per cui ho dovuto
virtualizzarne un’installazione sul mio portatile e creare una
situazione di sviluppo/test ex novo. RVM l’ho provato, sempre sul mio
portatile, ed è
una bomba! PIK non credo di poterlo installare se non sulla mia macchina
di sviluppo… (purtroppo)

Grazie ancora :slight_smile:

Jonathan

A distanza di qualche tempo (complici anche le ferie sopraggiunte)
volevo informarvi che sono riuscito ad effettuare il porting delle due
app con successo e senza nemmeno tanti problemi come invece avevo temuto
in un primo momento :slight_smile:

Ringrazio ancora Sante e Paolo per il prezioso aiuto e per
l’interessamento!

Avrei ancora diverse domande da fare, ma aprirò relativo post

Buona giornata a tutti

Jonathan

Server Windows 7? Ma eun SO per desktop, cos'e una app che viene
utilizzata da pochi utenti? Se hai problemi con Windows puoi anche
Utilizzare JRuby

Ciao Paolo,
ringrazio anche te per le preziose indicazioni di cui farò tesoro.
Purtroppo il server finale è effettivamente Windows 7, per cui ho dovuto
virtualizzarne un’installazione sul mio portatile e creare una
situazione di sviluppo/test ex novo. RVM l’ho provato, sempre sul mio
portatile, ed è
una bomba! PIK non credo di poterlo installare se non sulla mia macchina
di sviluppo… (purtroppo)

Grazie ancora :slight_smile:

Jonathan

Ciao,
per curiosità l’applicazione rails 2.3.4 su che versione di ruby l’hai
portata? La 1.9.2 o la 1.9.3.

Ho visto che le versioni di rails 2.3 hanno dei problemi con il require
della 1.9.3, perchè è cambiato la modalità di caricamento dei file.

Non dovresti avere troppi problemi a passare da 1.8.6 a 1.9.3. Non
preoccuparti, non dovrai riscrivere il codice da zero. Nel passaggio da
1.9.2 a 1.9.3 probabilmente non dovrai fare nulla e forse non dovrai far
nulla neppure nel passaggio dalla 1.8, ma buon per te che ti hanno
lasciato un progetto con i test. A me non capita mai…

Dove invece potrai avere dei problemi sarà con l’aggiornamento delle
gemme a versioni più moderne, perché in alcuni casi si è obbligati ad
usare versioni vecchie in quanto quelle nuove non sono compatibili con
la 1.8.

E non per essere snob, ma se il tuo server non è Windows programmando
con Ruby e con Rails conviene lavorare con OS derivati da Unix, Linux o
Mac. Non solo sono gli OS di riferimento per gli sviluppatori di Rails
ma di solito i server sono Linux e ho visto sviluppatori penare su
Windows cercando di tenersi compatibili. Non è tanto l’interprete ad
essere problematico quanto tutto quello che ci sta attorno, soprattutto
se hai script o servizi accessori in background. Tante volte ci sono
delle dipendenze dall’OS. Una virtual machine risolve il problema e
prima di andare in produzione ti serve comunque un server su cui provare
che le installazioni funzionino.

Dovresti trovare molto utile RVM o il suo equivalente Windows, PIK
http://watirmelon.com/2011/01/17/easily-manage-your-rubies-with-rvm-bundler-and-pik/

In pratica ti permettono di avere più interpreti sulla stessa macchina e
di passare dall’uno all’altro molto rapidamente. Sono l’ideale per te
che dovrai lavorare con due versioni. Dovrai anche tener separate le
gemme e a questo pensano bundler e/o i gemset di rvm. Pik non li ha ma
ci sono dei workaround Named Gem sets · Issue #16 · vertiginous/pik · GitHub

Paolo

Penso abbia fatto il porting anche di rails alla 3.2

@Jonathan
Per quanto riguarda la 1.8.6 probabilmente sei stato fortunato o
l’applicazione era scritta in modalità lungimirante, quella versione di
ruby ha un differente scope delle variabili (ora non ricordo bene, non
esistevano solo nello scope dove erano create ma persistevano) e
potevano essere beghe anche solo passare alla 1.8.7

Con la 1.8.7 siamo agli sgoccioli, fin’ora ha funzionato tutto ma ho
trovato una gemma che non lo supportava più, teoricamente sarebbe
opportuno aspettare rails 4 prima di abbandonarlo.

Ruby 1.9.3 su windows, fino pochi mesi fa, non era rose e fiori e c’era
sempre qualche gemma che dava noie tipo linecache, gemma indispensabile
per il debug con gli ide.

Come app server thin od il più recente puma che ho trovato meno
prestazionale ma più stabile

Per utilizzare differenti versioni di ruby in produzione io me lo
gestisco a mano con le variabili di amb.iente e non mi trovo male, basta
poi usarla prima degli script:
set path=%RUBY_193%;%path%

Avevo creato una guida tempo fa, appena riesco ad aggiornarla la metterò
a disposizione

francesco agati wrote in post #1073018:

Ciao,
per curiosità l’applicazione rails 2.3.4 su che versione di ruby l’hai
portata? La 1.9.2 o la 1.9.3.

Ho visto che le versioni di rails 2.3 hanno dei problemi con il require
della 1.9.3, perchè è cambiato la modalità di caricamento dei file.

Ciao Francesco, Marco mi ha preceduto nella risposta!
Ho fatto il porting anche alla versione 3.2 di Rails

Su Windows anche io come Marco ho utilizzato il set path per il lancio
di eventuali script

@Riccardo
Si server con Windows 7 Professional.
La scelta del SO è stata una decisione aziendale a cui mi sono dovuto
adeguare, mentre le app in questione costituiscono la intranet
aziendale: il carico di lavoro/chiamate è piuttosto ridotto.

Grazie ancora a tutti e rimango in attesa della guida di Marco,
qualsiasi info mi è molto d’aiuto

Buona giornata

Jonathan

Ti posso inviare quella che ho: è un documento pdf che ho scritto ad
inizio 2011 e descrive come installare ruby 1.9.2, configurarlo per
un’architettura a 3 livelli, rails 3 su un server windows 2008 e
sqlserver. L’avevo fatto per documentare il lavoro di installazione
nella nostra intranet ma in maniera generica per cui credo possa
seguirla chiunque. E’ un pò che devo aggiornarla ma purtroppo non trovo
mai il tempo.

Ho aggiornato il link per poterla scaricare e la trovi sul mio blog,
cerca sqlserver. Naturalmente sono ben accetti consigli.

Grazie Marco per la guida,
l’ho già scaricata e la leggerò con attenzione

Jonathan