Per quanto so che ci sono due cose che possono essere succedendo qui:
1) La directory che stai salvare le immagini per non dispone di privilegi di lettura/scrittura per altri utenti.
Per fissare:
terminale
$ cd [my_app]
$ chmod -R 666 tmp
$ chmod -R 666 public/uploads
o se si sta salvando le immagini in una directory privata:
$ chmod -R 666 private/uploads
stiamo usando 666 su 777. 666 consente di leggere e scrivere i privilegi in una directory e l'esigenza del vettore di scrivere le sue immagini. 777 consente i privilegi di lettura, scrittura e per i file eseguibili da eseguire! In altre parole, un programma brutto potrebbe essere caricato sul server travestito da un'immagine se si sta utilizzando 777. Anche se di carrierwave estensione white-list risolve questo problema, è necessario utilizzare sempre 666 su 777.
2) Non stai usando le stringhe con doppia quotatura nel metodo store_dir
.
Per fissare:
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
Voglio solo sottolineare quanto sottile questo è. È necessario stringhe tra virgolette doppie e Rails.root
! stavo facendo questo:
def store_dir
Rails.root + '/private' # raises Errno::EACCES error
end
e non funzionava affatto. Così sottile La comunità dovrebbe affrontare questo.
è questo heroku o un servizio diverso? –
è un'app che utilizza ActiveAdmin. Utilizza CarrierWave per i caricamenti di file. Io uso Apache e Passenger. – leonel
Stavo ricevendo 'Errno :: EACCESS' su'/uploads '.. la mia correzione era di aggiungere '# {Rails.root}/public /' al metodo 'store_dir'. :) Spero che aiuti qualcuno! – RGB