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
¿Necesita 1) archivos de piezas que se utilizan en la producción de contenido? – KobeJohn