2012-02-19 8 views
5

Tengo algunos archivos de plantilla que me gustaría usar en mi aplicación Rails. Me preguntaba dónde (en qué directorio) para ponerlos dan dos escenarios:¿Dónde colocar los documentos privados para usar en las aplicaciones de Rails?

  1. Son privado a mi solicitud (Sólo webmaster puede borrar, cambiar ellos)
  2. Son privado a mi solicitud, pero también pueden ser gestionado por los administradores (suprimido, modificado)
+0

¿Necesita 1) archivos de piezas que se utilizan en la producción de contenido? – KobeJohn

Respuesta

7

Update después de los comentarios

Puesto que usted quiere servir a los archivos de forma local, sólo hay que poner ellos fuera de/public/folder y fuera de cualquiera de/assets/folders y deberías estar bien. Puede leer más sobre el público y los activos carpetas aquí: Section 2 How to use the Asset Pipeline Digamos:

/private/ 

Creo Section 11 send_file también se utiliza en la cuestión de forma vinculada en mi respuesta original a continuación sigue siendo el camino para que proporcione acceso a archivos a través de un controlador en lugar de estáticamente. Adaptado de la documentación:

send_file("#{Rails.root}/private/#{filename}", 
      :filename => "#{filename}", 
      :type => "application/pdf", #for example if pdf 
      :disposition => 'inline') #send inline instead of attachment 

Respuesta original para servir a distancia junto con send_file continuación

En cuanto a 1) archivos privados a la aplicación Puede bloquear estos archivos privados en un sistema de como Amazon S3 que proporciona acceso autorizado como lo explica Callmeed en this SO question. Entonces, solo su aplicación podrá autorizar el acceso a un archivo.

Respecto 2) también se puede acceder a los administradores

El problema de usar sólo la parte 1) es que abre los archivos por un período de tiempo limitado durante el cual supongo que están disponibles al público. Entonces, si quiere evitar eso, creo que debe tomar la solución de Pavel Shved en realidad en la misma pregunta SO anterior.

En esa solución, los archivos se proporcionan a través de una ruta/controlador que proporciona los datos binarios del archivo en lugar de utilizar una URL que apunta al archivo.

solución combinada

Leer el archivo desde S3 con sólo su aplicación autorizada a hacer que el acceso (no abrirlo públicamente). A continuación, proporcione los datos directamente a través del controlador que puede autorizar a quien desee.

Advertencias

  • Proporcionar datos binarios directamente desde el controlador parece que mataría rendimiento de la aplicación si se utiliza a menudo, pero nunca he probado.
  • Si se puede encontrar una manera más simple de hacer parte 1), parte 2) seguirá funcionando con esa solución
+0

gracias por la respuesta rápida. Mi pregunta era sobre un directorio local, no un lugar externo. –

+1

Actualicé la respuesta para los archivos locales. Es eso lo que necesita? – KobeJohn

+0

Pipeline de activos es el mecanismo (Sprockets) utilizado por Rails para administrar activos (imágenes, archivos javascript y archivos de hojas de estilo), mi pregunta es más simple, trata sobre el manejo de archivos de plantillas privadas (documentos) dentro de una aplicación. Quiero decir, dónde colocarlos correctamente, ¿dónde está el mejor lugar para ubicarlos dentro de la estructura de directorios de los rieles? –

Cuestiones relacionadas