[ruby-it] [rails]aiuto su db migrate

Bonzo ilbonzo.org a gmail.com
Lun 27 Ago 2007 22:04:41 CEST


Ok, credo di aver capito.

Quindi conviene fare migration a piccoli passi, in modo da avere uno
sviluppo incrementale che va avanti poco alla volta, in modo da poter
tornare indietro facilmente.?

Il 27/08/07, David <david.palm a iperbole.bologna.it> ha scritto:
>
> On Mon, 27 Aug 2007 15:40:18 +0200, Bonzo wrote:
> > Bello, così ho tutto lo storico delle modifiche fatte al DB.
> > poi lo lancio sempre con rake db:migrate?
> >
> > Come fa il comando Rake a capire che file cosa cambiare? rilegge tutti i
> > file dentro migrate?
>
> Non penso sia necessario. Il tuo "add_column" si traduce in un SQL ALTER
> TABLE statement (con varianti per accogliere i differenti motori SQL) quindi
> ogni migrazione è autoconsistente. Legge solo la versione in schema_info e
> da lì sa quale file eseguire.
>
> Ci vuole un po' di disciplina a usare le migrazioni ed è facile perderci
> una paio di ore inutilmente se per caso uno si scorda di rimuovere delle
> robe in un qualche file. Ieri è successo a me e per venirne fuori ho dovuto
> fare un po' di salti mortali. In altre parole: migrations è ottimo per avere
> una traccia di quel che è successo al db e funziona davvero bene; potrebbe
> essere un po' più 'gentile' e dare una mano in più quando qualcosa va
> storto.
>
> Un consiglio che ti do è di non esitare di farne tante. A volte ti prende
> la mano e fai tre tabelle con dati di prova nella stessa migrazione. Quelle
> sono poi i più suscettibili a errori quando arriva il giorno che devi andare
> avanti e indietro nella "vita" del tuo schema.
>
> :-)
>
> >
> > class AddPriceToProducts < ActiveRecord::Migration
> >   def self.up
> >     add_column :products, :price, :string #eventuali opzioni
> >   end
> >
> > Questo aggiunge una colonna price alla tabella products?
> > Grazie
> > Bonzo
> >
> >
> > Il 27/08/07, Luca Guidi <guidi.luca a gmail.com> ha scritto:
> >>
> >> In teoria, se non hai aggiunto altre tabelle, puoi fare la rollback
> >> dello schema, portandolo alla versione zero, aggiungendo la colonna
> >> interessata e poi rieseguendo il task di migrazione.
> >> Ad ogni modo puoi sempre creare migrazioni con l'apposito script
> >> (consigliato):
> >> $ ruby script/generate migration AddPriceToProducts
> >>
> >> Questo ti creerà un file (db/migration/002_add_price_to_products.rb),
> >> nel quale scrivere:
> >>
> >> class AddPriceToProducts < ActiveRecord::Migration
> >>   def self.up
> >>     add_column :products, :price, :string #eventuali opzioni
> >>   end
> >>
> >>   def self.down
> >>     remove_column :products, price
> >>   end
> >> end
> >>
> >> --
> >> blog: www.lucaguidi.com
> >>
> >> Bringing Rails to Italy
> >> First italian Ruby On Rails conference:
> >> Oct, 26-27 2007 - Pisa
> >> www.railstoitaly.org
> >> _______________________________________________
> >> Ml mailing list
> >> Ml a lists.ruby-it.org
> >> http://lists.ruby-it.org/mailman/listinfo/ml
> _______________________________________________
> Ml mailing list
> Ml a lists.ruby-it.org
> http://lists.ruby-it.org/mailman/listinfo/ml
>



-- 
http://www.ilbonzo.org
Skype: ilbonzo.org


Maggiori informazioni sulla lista Ml