3

大量のファイルを S3 にアップロードする必要があります。私は、carrierwave + fog を使用してファイルをアップロードする Rails プロジェクトに参加しています...次のようにすると、コンソールからすべて正常に動作します。

image = ImageUploader.new
image.store!(File.open("image.jpg"))

これはテスト用でしたが、今度は大量のファイルをアップロードする必要があるため、upload.rake という名前の lib/tasks フォルダー内に rake スクリプトを作成します...この upload.rake 内で、次のことを行います。

task :upload => :environment do

    path = "app/assets/images"

    Dir.foreach(path) do |file|
        if file != "." && file !=".."
            uploader = ImageUploader.new
            uploader.store!(File.open(File.join(path,file)))    
            puts file
        end
    end 
end

しかし、うまくいきません。理由がわかりません...次のエラーが表示されます。

rake aborted!
Broken pipe (Errno::EPIPE)

誰が何が起こっているのか考えていますか?? それは私を夢中にさせています...これは --trace の最後の部分です

.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/openssl/buffering.rb:292:in `syswrite_nonblock'
.rvm/rubies/ruby-1.9.2-p320/lib/ruby/1.9.1/openssl/buffering.rb:292:in `write_nonblock'
.rvm/gems/ruby-1.9.2-p320/gems/excon-0.16.7/lib/excon/socket.rb:139:in `write'
.rvm/gems/ruby-1.9.2-p320/gems/excon-0.16.7/lib/excon/ssl_socket.rb:84:in `write'
.rvm/gems/ruby-1.9.2-p320/gems/excon-0.16.7/lib/excon/connection.rb:269:in `request_kernel'
.rvm/gems/ruby-1.9.2-p320/gems/excon-0.16.7/lib/excon/connection.rb:103:in `request'
.rvm/gems/ruby-1.9.2-p320/gems/fog-1.6.0/lib/fog/core/connection.rb:20:in `request'
.rvm/gems/ruby-1.9.2-p320/gems/fog-1.6.0/lib/fog/aws/storage.rb:392:in `request'
.rvm/gems/ruby-1.9.2-p320/gems/fog-1.6.0/lib/fog/aws/requests/storage/put_object.rb:43:in `put_object'
.rvm/gems/ruby-1.9.2-p320/gems/fog-1.6.0/lib/fog/aws/models/storage/file.rb:133:in `save'

ありがとう!!

4

1 に答える 1

0

数日前にこれに遭遇しましたが、解決策はバケットを正しく指定していなかったためです。バケット名が正しく、権限が正しく設定されていることを確認する価値があるかもしれません。バケットが指定されていない場合は、少しばかげて一般的なエラーのようです。

于 2013-02-12T16:08:04.663 に答える