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:
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?
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
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
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
Sante
Immaginavo presentasse complicazioni, vista anche la versione di RoR
utilizzata… in ogni caso seguirò il tuo consiglio!
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
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)
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
Ringrazio ancora Sante e Paolo per il prezioso aiuto e per
l’interessamento!
Avrei ancora diverse domande da fare, ma aprirò relativo post
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)
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.
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
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
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
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.