Pregunta

Esta pregunta se debió a que las células joya especifica directorios de plantillas utilizando File.join ( 'app', 'células'). Eso funciona bien hasta que se ejecute Carriles como un demonio (scripts / -d servidor). El demonio cambia los directorios a / que deja los caminos plantilla células que apunta a la ruta absoluta mal.

Mi solución fue establecer las rutas predeterminadas a File.join (RAILS_ROOT, 'aplicación', 'células'). Esto funciona en Rails, pero las pruebas unitarias para el plugin fallar porque RAILS_ROOT no está definido. Usando File.join(File.dirname(__FILE__),'..' ... también funciona, pero requiere alrededor de 6 niveles de '..', que parece un error.

Así que mi pregunta es ¿cuál es la forma correcta para especificar la ruta a un directorio bajo 'app' en un plugin de rieles? ¿O hay algo más mal que causaría daemonizing rieles a fallar para encontrar las rutas relativas?

¿Fue útil?

Solución

Sugiero mover los cambios fuera del plugin y en un inicializador. En el inicializador reemplazar el método que utiliza File.join ( 'aplicación', 'células'). Esto tiene varias ventajas.

  1. No está modificando el código de terceros directamente, por lo que tienen más probabilidades de no tener que preocuparse por los cambios de volver a aplicar sobre una actualización.
  2. Al no modificar el propio plugin plugin de las pruebas unitarias todavía pasará.
  3. Usted es capaz de utilizar RAILS_ROOT que creo que es la solución correcta.

Otros consejos

Para los que tenían problemas para descifrar esta respuesta, aquí es lo que funcionó para mí:

Crear un archivo de configuración / inicializadores / cells.rb

ponga en él:

Cell::Base.view_paths=[
  File.join(RAILS_ROOT, 'app', 'cells'),
  File.join(RAILS_ROOT, 'app', 'cells', 'layouts')
]

Espero que esto ayude

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top