2015-02-13 8 views
13

Ich konnte Dateien in der Vergangenheit hochladen, aber für den letzten Tag konnte ich keine Dateien auf meine S3 hochladenMit Fog in Rails können keine Fotos in S3 hochgeladen werden: !! # <Excon :: Errors :: SocketError: Schlechte Adresse>

Wenn ich versuche, eine Datei von der Konsole wie

Document.create(remote_file_url: 'http://www.pdf995.com/samples/pdf.pdf') 

ich

Document.create(remote_file_url: 'http://www.pdf995.com/samples/pdf.pdf') 
    (0.1ms) BEGIN 
    SQL (0.7ms) INSERT INTO "documents" ("created_at", "file", "updated_at") VALUES ($1, $2, $3) RETURNING "id" [["created_at", Thu, 12 Feb 2015 22:33:59 EST -05:00], ["file", "pdf.pdf"], ["updated_at", Thu, 12 Feb 2015 22:33:59 EST -05:00]] 
    (0.2ms) ROLLBACK 
Excon::Errors::SocketError: Bad address 
    from /Users/xxxx/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/openssl/buffering.rb:375:in `syswrite_nonblock' 
    from /Users/xxxx/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/openssl/buffering.rb:375:in `write_nonblock' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/excon-0.13.4/lib/excon/socket.rb:113:in `write' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/excon-0.13.4/lib/excon/connection.rb:243:in `request_kernel' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/excon-0.13.4/lib/excon/connection.rb:97:in `request' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/fog-1.3.1/lib/fog/core/connection.rb:20:in `request' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/fog-1.3.1/lib/fog/aws/storage.rb:359:in `request' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/fog-1.3.1/lib/fog/aws/requests/storage/put_object.rb:35:in `put_object' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/fog-1.3.1/lib/fog/aws/models/storage/file.rb:133:in `save' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/fog-1.3.1/lib/fog/core/collection.rb:50:in `create' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:261:in `store' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/carrierwave-0.10.0/lib/carrierwave/storage/fog.rb:80:in `store!' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:59:in `block in store!' 
    from /Users/xxxx/.rvm/gems/ruby-2.0.0-p247sites/gems/carrierwave-0.10.0/lib/carrierwave/uploader/callbacks.rb:17:in `with_callbacks' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/carrierwave-0.10.0/lib/carrierwave/uploader/store.rb:58:in `store!' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/carrierwave-0.10.0/lib/carrierwave/mount.rb:375:in `store!' 
... 8 levels... 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:326:in `block in with_transaction_returning_status' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `block in transaction' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:210:in `within_new_transaction' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/connection_adapters/abstract/database_statements.rb:202:in `transaction' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:209:in `transaction' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:323:in `with_transaction_returning_status' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:270:in `block in save' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:281:in `rollback_active_record_state!' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/transactions.rb:269:in `save' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/activerecord-4.0.2/lib/active_record/persistence.rb:37:in `create' 
    from (irb):11 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/railties-4.0.2/lib/rails/commands/console.rb:90:in `start' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/railties-4.0.2/lib/rails/commands/console.rb:9:in `start' 
    from /Users/xxxx/.rvm/gems/[email protected]/gems/railties-4.0.2/lib/rails/commands.rb:62:in `<top (required)>' 
    from /Users/xxxx/Sites/site/bin/rails:4:in `require' 
    from /Users/xxxx/Sites/site/bin/rails:4:in `<main>'2.0.0-p247 :012 > 

meine hochgeladene Datei

# encoding: utf-8 
class FileUploader < CarrierWave::Uploader::Base 
    def store_dir 
    "uploads/#{model.class.to_s.underscore}/#{mounted_as}/#{model.id}" 
    end 

    def extension_white_list 
    %w(pdf) 
    end  
end 

My Model

class Document < ActiveRecord::Base 
    mount_uploader :file, FileUploader 
end 

Antwort

14

Herabstufung von OpenSSL-Version auf OS X für mich gearbeitet.

brew switch openssl 1.0.1l 

Dies ist ein bekanntes Problem mit dem Excon Juwel. Hier ist das Problem in Zusammenhang:

https://github.com/excon/excon/issues/467

+0

Dank hatte ich nicht 'l' aber ich hatte' e'. Nochmals vielen Dank für die Hilfe – MZaragoza

+0

Danke dafür. Ich hatte ein ähnliches Problem in einem Python-Projekt und löste es, indem ich openssl von Version 1.0.2 auf 1.0.1k mit MacPorts herabstufte. – Rafa

5

Wie @eypatis erwähnt, ist es ein issue with the excon gem. Downgrade auf Version 1.0.1 als Workaround.

Wenn Sie nicht bereits OpenSSL 1.0.1 via Homebrew heruntergeladen haben, können Sie die homebrew-versions Version verwenden:

brew install homebrew/versions/openssl101 

Dann können Sie entweder kraft Link es /usr/local:

brew link --force openssl101 

Um Konflikte mit anderen Anwendungen zu vermeiden, die möglicherweise von OpenSSL 1.0.2 abhängen, übergeben Sie den Pfad zu OpenSSL 1.0.1l, wenn Sie Ruby über rbenv + ruby-build:

installieren 10
RUBY_CONFIGURE_OPTS="--with-openssl-dir=/usr/local/Cellar/openssl101/1.0.1l" rbenv install 2.2.1 

Einmal installiert, können Sie die OpenSSL-Version in irb überprüfen:

irb(main):001:0> require 'openssl' 
=> true 
irb(main):002:0> OpenSSL::OPENSSL_VERSION 
=> "OpenSSL 1.0.1l 15 Jan 2015" 
+0

Danke, das ist eine großartige Ergänzung @eypatis Antwort http://stackoverflow.com/a/28585903/1380867 – MZaragoza

Verwandte Themen