我正在使用 ruby 脚本生成要上传到 s3 的 html 页面。我的亚马逊存储桶配置为静态网站,我的脚本生成的 html 页面是索引页面。
我创建了几个模型来使用雾 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
当我以这种方式上传文件时,它可以正常工作,并且整个文件都被上传,但它违背了拥有脚本的目的。
任何见解将不胜感激!