我正在使用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
当我以这种方式上传文件时,它可以正常工作,并且整个文件都会上传,但是它会破坏脚本的目的。
非常感谢任何见解!