雾不会将整个文件上传到S3

时间:2013-09-23 18:25:47

标签: ruby amazon-s3 fog

我正在使用ruby脚本生成一个我上传到s3的html页面。我的亚马逊桶配置为静态网站,我的脚本生成的html页面是索引页面。

我创建了几个模型来使用fog gem建立与s3的连接,生成html页面,然后将其推送到s3。

当我使用脚本将文件推送到s3时,我没有收到任何错误,但只有一半的文件被上传。无论文件大小如何,都会发生。我不可避免地从我生成的html表中丢失了大约15行。

我的FogManager模型中的相关代码是:

def connect
  @connection = Fog::Storage.new({
    provider:              'AWS',
    aws_access_key_id:     AWS_ACCESS_KEY,
    aws_secret_access_key: AWS_SECRET_KEY,
    persistent:            true
  })
end

def locate_directory
  @directory = @connection.directories.get(DIRECTORY)
end

def upload_report_page(index_file)
  file = @directory.files.get(index_file)
  file.body = File.open(index_file)
  file.acl = 'public-read'
  file.save
end

我的脚本看起来像:

filename = "index.html"

s3 = FogManager.new
s3.connect
s3.locate_directory

# code for generating the html page

s3.upload_report_page(filename)

所有代码都有效,但整个html文件没有上传到s3。

我正在使用最新版本的雾(1.15.0)和ruby 2.0.0p0

我已经能够手动进入irb并建立s3连接,找到该文件,然后上传新文件。我使用这些命令:

require 'fog'

connection = Fog:Storage({provider: 'AWS', 
                          aws_access_key_id: 'xxx', 
                          aws_secret_access_key: 'xxx',
                          persistent: true})

directory = connection.directories.get('my_directory')

file = directory.files.get('index.html')
file.body = File.open('index.html')
file.acl = 'public-read'
file.save

当我以这种方式上传文件时,它可以正常工作,并且整个文件都会上传,但是它会破坏脚本的目的。

非常感谢任何见解!

0 个答案:

没有答案