Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby Fog未将整个文件上载到S3_Ruby_Amazon S3_Fog - Fatal编程技术网

Ruby Fog未将整个文件上载到S3

Ruby Fog未将整个文件上载到S3,ruby,amazon-s3,fog,Ruby,Amazon S3,Fog,我正在使用ruby脚本生成一个html页面,并将其上载到s3。我的amazon bucket被配置为一个静态网站,我的脚本生成的html页面是索引页面 我已经创建了几个模型来使用fog gem构建到s3的连接,生成html页面,然后将其推送到s3 当我使用脚本将文件推送到s3时,我没有得到任何错误,但只上传了一半文件。无论文件大小如何,都会发生这种情况。我不可避免地会在生成的html表中缺少大约15行 my FogManager型号的相关代码如下: def connect @connecti

我正在使用ruby脚本生成一个html页面,并将其上载到s3。我的amazon bucket被配置为一个静态网站,我的脚本生成的html页面是索引页面

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

当我使用脚本将文件推送到s3时,我没有得到任何错误,但只上传了一半文件。无论文件大小如何,都会发生这种情况。我不可避免地会在生成的html表中缺少大约15行

my 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

我正在使用最新版本的FOG1.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
当我以这种方式上传文件时,它工作正常,整个文件都被上传了,但它违背了拥有脚本的目的


如有任何见解,将不胜感激

我担心没有什么明显的东西向我跳来。我假设索引文件本身在您运行的两个命令之间没有变化?否则,这是相当令人费解的,因为这两个脚本在我看来是等价的。是的,我一定要检查一下。两种情况下的索引文件相同;在手动上传到irb之前,我没有重新生成它。我对此感到非常困惑,因为它实际上是同一个代码。但脚本始终缺少一大块文件,而irb中的手动上载总是将整个文件上传到s3。请尝试执行脚本,并将其放在EXCON_DEBUG=true的前面。这将把原始的HTTP流量吐到Amazon上。它可能会让你对实际发生的事情有更多的了解。当我这么做的时候,没有什么会跳出来。响应代码为200,未显示任何错误。在excon请求/响应中是否有我应该寻找的特定内容?嗯。当你运行脚本vs irb时,你是如何运行它的?你有没有可能在某种情况下使用了gems的捆绑版本或其他东西?ie得到了预期的不同版本?