2012-03-14 12 views
10

Estoy tratando de tener un gancho pre-commit de git realizar una verificación de sintaxis en todo el código de Ruby; hay uno en GitHub al https://github.com/cypher/git-ruby-syntax-check.¿Cómo puedo verificar la sintaxis (no procesar) un archivo de plantilla ERB de Rails 3?

Intenta comprobar los archivos .erb por erb -x para traducirlos al código de Ruby y luego pasa la salida a ruby -c para verificar la sintaxis. Desafortunadamente, Rails 3 introdujo un analizador ERB personalizado que es incompatible con ERB estándar de Ruby, por lo que el enlace de precompilación encuentra errores cuando no los hay.

¿Hay algún equivalente a erb -x que genere el código de Ruby de un archivo ERB de Rails 3?

+1

Si prueba toda su vista, no necesita esta validación de verificación. – shingara

+0

@shingara No estoy de acuerdo. Esta * es * una forma de probar su vista, de una manera que otras pruebas no pueden. El marcado inválido puede pasar sus pruebas funcionales porque el navegador lo "arregla" por usted, pero aún deja errores sutiles, o causa problemas en el futuro, ya que ninguna prueba es 100% exhaustiva. – antinome

+0

@shingara ¿O tal vez estaba diciendo "validar después de la representación, no antes" en lugar de "no validar nada"? En ese caso veo tu punto (y podría ver una discusión de cualquier manera :-) – antinome

Respuesta

10

No he profundizado mucho en ninguno de estos, pero puede probar rails-erb-check (Git project) o este blog entry. Estoy de acuerdo con shingara pero la publicación del blog describe una situación en la que esto es útil y me pregunto si estás en una posición similar:

Diaspora es bastante fluido en este momento. Esto significa que tenemos algunas pruebas verdes , algunas pruebas faltantes y otras pruebas que comprueban la intención (no la implementación ). En un mundo ideal, supongo que los casos de prueba cubrirían todas nuestras bases ...

Hasta entonces, he agregado una nueva tarea a mi fork, check_syntax: all. se desglosa en las subtareas check_syntax: erb, check_syntax: haml, check_syntax: haml_ruby, check_syntax: sass y check_syntax: yaml.

2

Si obtiene un "error de lista de argumentos demasiado largo" para rails-erb-check, puede probar rails-erb-lint que escanea su carpeta de vistas actual.

+1

esta herramienta tiene mucho sentido en comparación con las respuestas aceptadas, ya que proporciona una funcionalidad para escanear una carpeta completa en lugar de escanear un solo archivo a la vez . – Swaps

+0

Está bien mantenido. Hay al menos dos de nosotros administrando el proyecto. No importa cuán pequeño sea, siempre funcionará. – kgpdeveloper

Cuestiones relacionadas