2012-12-30 7 views
7

Attualmente sto ricevendo il seguente errore: Excon::Errors::SocketError - Broken pipe (Errno::EPIPE) durante il caricamento di immagini più grandi di circa 150kb. Immagini sotto 150kb funzionano correttamente. La ricerca indica che anche altri hanno avuto questo problema, ma devo ancora trovare una soluzione.Carrierwave + s3 + fog (Excon :: Errori :: SocketError)

Messaggio di errore

Excon::Errors::SocketError at /photos 

Message Broken pipe (Errno::EPIPE) 
File /Users/thmsmxwll/.rvm/rubies/ruby-1.9.3-p194/lib/ruby/1.9.1/openssl/buffering.rb 
Line 375 

image_uploader.rb

class ImageUploader < CarrierWave::Uploader::Base 
    include CarrierWave::RMagick 

    storage :fog 

    include CarrierWave::MimeTypes 
    process :set_content_type 

    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    version :large do 
    process :resize_to_limit => [800, 600] 
    end 
end 

carrierwave.rb

CarrierWave.configure do |config| 
    config.fog_credentials = { 
    :provider    => 'AWS', 
    aws_access_key_id: ENV['AWS_ACCESS_KEY_ID'],       
    aws_secret_access_key: ENV['AWS_SECRET_ACCESS_KEY'], 
    :region     => 'us-east-1' 
    } 
    config.fog_directory = 'abcd'     
    config.fog_public  = true         
    config.fog_attributes = {'Cache-Control'=>'max-age=315576000'} 
end 
+0

Penso che abbiamo a che fare con lo stesso problema. Hai trovato qualche soluzione contro questo problema? Thx – Bachet

+0

Purtroppo no. –

+1

Qualche giorno fa mi sono imbattuto in questo errore e ho scoperto che la mia directory_directory non era corretta (è un errore terribilmente generale per qualcosa di così specifico). Potrebbe essere utile verificare che il nome del bucket sia corretto e che le autorizzazioni siano impostate correttamente. – Wakeuphate

risposta

8

Per me, la soluzione mi ha richiesto di ricreare il secchio nella regione degli Stati Uniti. Originariamente, il bucket si trovava nella regione dell'Oregon e mentre non stavo specificando una regione nelle impostazioni del mio carrierwave, non riuscivo a completare un caricamento, anche con file molto piccoli.

+0

Ciao aveva lo stesso problema (non riuscivo nemmeno a caricare file di piccole dimensioni) e la tua soluzione (passando alla regione USA-Standard) ha funzionato anche per me. – Daan

+0

ha funzionato anche per me. Sembra che la norma USA non ci richieda di specificare una regione. Una soluzione alternativa è specificare la regione giusta per il tuo bucket: http://www.bucketexplorer.com/documentation/amazon-s3--amazon-s3-buckets-and-regions.html – rebagliatte

1

Sono ettari ving lo stesso problema, ho notato che accade solo quando carico file di grandi dimensioni (400kb), con un più piccolo (100kb) funziona bene.

+0

Ho scoperto che non potevo caricare qualcosa di più grande di 150kb - non ho ancora trovato una soluzione al problema oltre ad abbassare la dimensione del file immagine. –

+4

Il problema era nella mia regione del secchio. Quando ho creato il bucket, puntava a una posizione diversa da quella specificata nel file initializer/carrierwave.rb. Dopo aver corretto la mia regione, tutto ha funzionato !. –

+0

Ho ricontrollato questo ... triplicherò e vedrò se risolve il mio problema. Grazie. –

Problemi correlati