Migraciones con Ruby On Rails 1.x y 2.x diferencias

0

Por admin | Para la categoría de Ruby | noticia del 23-07-2008

Para los no iniciados en ruby on rails, las migraciones permiten establecer el esqueleto de una base de datos, tablas y campos, al igual que hacemos con sentencias de sql, sin utilizar directamente sql. Además ruby on rails, nos permite tener un control de las versiones de migraciones a ejecutar.

Una vez que hemos hecho rails proyecto  (siendo proyecto el nombre del proyecto rails) y cd proyecto (para colocarnos dentro del proyecto de rails recien creado)  creamos nuestras migraciones.

Comentar para recordar,  un proyecto rails tiene tres tipos de entornos: desarrollo, pruebas y producción. El entorno Rails llamado “desarrollo” vuelve a cargar las clases cada vez que llame a una nueva acción, por lo que siempre tiene una copia actualizada de las clases incluyendo los cambios más recientes. Mientras que en el entorno de producción carga las clases una vez.

Cuando se crea un nuevo proyecto rails, se crea un archivo database.yml, con los tres entornos dasarrollo, pruebas y producción, dicho archivo se encuentra dentro de la carpeta config.

 

development:
  adapter: mysql
  encoding: utf8
  database: proyecto_development 
  username: root
  password:
  socket: /var/run/mysqld/mysqld.sock

Por defecto el nombre de la base de datos en cada uno de los entornos, es el del proyecto_entorno, en este caso proyecto_development para el proyecto en desarrollo.

Para la realización, de la migración escribimos por consola ruby script/generate migration nombremigración, también se genera migraciones al crear los modelos de rails  con ruby script/generate model nombremodelo.

Cada migración tiene un número ejemplo 001_create_nombremigracion.rb,  dicho archivo aparece en la carpeta “db”, que cuelga  del proyecto principal.

Toda migración tiene un método “up” donde se hace un cambio, y un método “down”, donde se deshace ese cambio. Si creo una tabla en “up”, la destruyo en el “down”, si añado un campo a la tabla en el “up”, lo elimino en el “down”.

Para ejecutar una migración, es necesario escribir rake db:migrate, si tenemos cinco migraciones y hacemos rake db:migrate se ejecutan las cinco. Si queremos volver a un estando anterior, a la segunda migración elminando las tres siguientes, solo tenemos que poner, rake db:migrate VERSION = 2, si queremos eliminar todo lo realizado, bastaría con poner rake db:migrate VERSION=0.

Versión 1

1
2
3
4
5
6
7
8
9
10
11
12
13
 
 
 class CreateProjects < ActiveRecord::Migration
  def self.up
    create_table :projects do |t|
      t.column :name, :string
    end
  end
 
  def self.down
    drop_table :projects
  end
end

  
Versión 2.0

1
2
3
4
5
6
7
8
9
10
11
12
13
class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string :nombre, :apellidos, :login, :email, :nombreblog, :fotografia
      t.boolean :inactiva, :default => false
      t.timestamps
    end
  end
 
  def self.down
    drop_table :users
  end
end

 
En la versión dos, se pueden declarar varios campos de las tablas al mismo tiempo siempre que sean del mismo tipo, con el ahorro de líneas de código que supone. Cambia la definición del tipo de dato t.tipo : lista de campos.

 

 

 

 

Comentarios cerrados automáticamente al pasar más de un año