Por lo que yo sé que hay dos cosas que pueden estar pasando aquí:
1) El directorio que guarda las imágenes de que no tiene privilegios de lectura/escritura para otros usuarios.
Fijar:
terminal de
$ cd [my_app]
$ chmod -R 666 tmp
$ chmod -R 666 public/uploads
o si va a guardar tus imágenes en un directorio privado:
$ chmod -R 666 private/uploads
estamos usando 666 sobre 777. 666 permite privilegios de lectura y escritura en un directorio, y carrierwave necesita escribir sus imágenes. 777 permite ejecutar los privilegios de lectura, escritura y . En otras palabras, un programa desagradable podría ser subido a su servidor disfrazada de una imagen si está utilizando 777. A pesar de que la extensión de la lista blanca carrierwave resuelve este problema, siempre se debe utilizar más de 666 777.
2) No está utilizando cadenas de comillas dobles en el método store_dir
.
Fijar:
app/example_uploader.rb
class BaseUploader < CarrierWave::Uploader::Base
# other methods removed for brevity
def store_dir
"#{Rails.root}/private/" # works perfectly. Many thanks to @RGB
end
end
Sólo quiero señalar cuán sutil es esto. ¡Usted necesita cadenas entre comillas dobles y Rails.root
! yo estaba haciendo esto:
def store_dir
Rails.root + '/private' # raises Errno::EACCES error
end
y no funcionaba en absoluto. Tan sutil La comunidad debe abordar esto.
es este heroku o un servicio diferente? –
es una aplicación que usa ActiveAdmin. Utiliza CarrierWave para subir archivos. Yo uso Apache y Passenger. – leonel
Obtenía 'Errno :: EACCESS' en'/uploads' .. mi solución era agregar '# {Rails.root}/public /' al método 'store_dir'. :) Espero que ayude a alguien! – RGB