2010-04-14 12 views
6

¿Hay alguna manera fácil de ver el SQL real generado por una migración de rieles?Forma de ver los rieles Salida de migración

Tengo una situación en la que una migración para cambiar un tipo de columna funcionó en mi máquina de desarrollo local al fallar parcialmente en el servidor de producción.

Mis versiones de postgreSQL son diferentes entre locales y de producción (7 en producción, 8 en locales) así que espero ver el SQL generado en la migración exitosa localmente Puedo elaborar una instrucción SQL para ejecutar en producción arreglar cosas ....

Respuesta

3

hice algo de investigación y encontré otra forma esto se puede lograr también ... (De esta manera sólo le da el SQL, así que fue un poco más fácil para mí leer)

PostgreSQL log todas las consultas ejecutadas si se pone esta línea en el fichero de configuración: (hay un ejemplo que se ha comentado en la sección "Qué registrar" del archivo de configuración)

log_statement = 'all' 

Entonces me di la vuelta atrás y volver pasé la migración a nivel local para encontrar el SQL que estaba buscando.

Este método también le proporciona el SQL en un formato en el que puede pegarlo fácilmente en algo parecido al generador de consultas de PGAdmin y perderlo.

+0

Gracias por esto. Me sorprende que no haya una manera nativa de hacer esto. –

6

Mira los archivos de registro: log/development.log localmente vs log/production.log en tu servidor.

+0

Gracias Francois! Su sugerencia funcionó bien, pero tuve algunos problemas ya que mi archivo de registro era ENORME y un poco difícil de analizar ... Sin embargo, me recordó algo que había leído hace un rato sobre el archivo de registro propio de PostgreSQL y terminé encontrando una solución que lo hizo lo que estaba buscando +1 –

0

Puede establecer el registrador en STDOUT en la parte superior de los métodos change, o down de su migración. Ejemplo:

class SomMigration < ActiveRecord::Migration 
    def change 
    ActiveRecord::Base.logger = Logger.new(STDOUT) 

    # ... 
    end 
end 

O ver this answer para añadir el registro de SQL para todas las tareas de desprendimiento

Cuestiones relacionadas