ruby-on-rails - 使用 rake 脚本、carrierwave 和 fog 的 S3 上传文件不起作用

标签 ruby-on-rails file-upload amazon-s3 rake

我需要将一堆文件上传到 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'

谢谢!!

最佳答案

几天前我遇到了这个问题,解决方案是我没有正确指定我的存储桶 - 所以可能值得看一下以确保您的存储桶名称正确并且权限设置正确在上面。当没有指定桶时,这似乎是一个可笑的一般错误!

关于ruby-on-rails - 使用 rake 脚本、carrierwave 和 fog 的 S3 上传文件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13049334/

相关文章:

ruby-on-rails - 我需要知道什么才能为 Rails 做贡献?

javascript - 此语法与 Railscast JQuery 上传教程中的什么有关

logging - 在哪里可以导出 AWS Cloudwatch Logs(适用于 Loggly)?

amazon-s3 - 如何配置 amazon cloudfront 以阻止某些 S3 存储桶文件访问?

amazon-web-services - Amazon S3 生命周期追溯应用程序

ruby-on-rails - Rails 中的 ArgumentError ('1' 不是有效类型)

ruby-on-rails - 用于查找关联大学电子邮件地址的 Gem

javascript - 无法在有限时间内执行脚本

ajax - 使用Spring框架上传文件和jquery-upload-file插件问题

java - 与其他字段一起上传文件