2015-02-13 10 views
13

Tôi đã có thể tải tệp lên trong quá khứ nhưng cho ngày cuối cùng tôi không thể tải tệp lên S3Không thể tải ảnh lên S3 bằng Sương mù trong Rails: !! # <Excon :: Lỗi :: SocketError: Địa chỉ không hợp lệ>

Khi tôi cố tải lên tệp nộp từ giao diện điều khiển như

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

tôi nhận được

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 > 

tập tin tải lên của tôi

# 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 Mẫu

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

Trả lời

14

hạ cấp của phiên bản OpenSSL trên OS X làm việc cho tôi.

brew switch openssl 1.0.1l 

Đây là vấn đề đã biết với đá quý excon. Dưới đây là các vấn đề liên quan:

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

+0

cám ơn tôi không có 'l' nhưng tôi đã 'e'. Một lần nữa Cảm ơn sự giúp đỡ – MZaragoza

+0

Cảm ơn vì điều này. Tôi đã có một vấn đề tương tự trên một dự án Python và giải quyết nó bằng cách downgrading openssl từ phiên bản 1.0.2 đến 1.0.1k với MacPorts. – Rafa

5

Như @eypatis đề cập, đó là một issue with the excon gem. Hạ cấp xuống phiên bản 1.0.1 dưới dạng giải pháp thay thế.

Nếu bạn chưa có OpenSSL 1.0.1 tải về thông qua homebrew, bạn có thể sử dụng phiên bản homebrew-versions:

brew install homebrew/versions/openssl101 

Sau đó, bạn có thể lực liên kết nó để /usr/local:

brew link --force openssl101 

Hoặc, để tránh xung đột với các ứng dụng khác có thể phụ thuộc vào OpenSSL 1.0.2, hãy chuyển đường dẫn đến OpenSSL 1.0.1l khi cài đặt Ruby qua rbenv + ruby-build:

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

Sau khi cài đặt, bạn có thể kiểm tra phiên bản OpenSSL trong IRB:

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

Cảm ơn đây là một bổ sung tuyệt vời @eypatis Trả lời http://stackoverflow.com/a/28585903/1380867 – MZaragoza

Các vấn đề liên quan