Ruby on rails 使用Fog时Google云存储中的额外对象

Ruby on rails 使用Fog时Google云存储中的额外对象,ruby-on-rails,ruby,fog,Ruby On Rails,Ruby,Fog,我将按照下面的示例创建一个目录,然后上载一个文件。当我把我的文件放入谷歌云存储时,一切都很好,除了总是有一个“二进制/八位字节流”文件,它的名字和我创建的最深的文件完全一样 我的代码与AWS示例非常相似,我创建了一个目录,然后从这个新目录创建了一个文件。目录结构创建正确,文件上传正确,但总有一个额外的0字节文件。我的代码如下所示: job_number = 100 connection = Fog::Storage.new({ :provider

我将按照下面的示例创建一个目录,然后上载一个文件。当我把我的文件放入谷歌云存储时,一切都很好,除了总是有一个“二进制/八位字节流”文件,它的名字和我创建的最深的文件完全一样

我的代码与AWS示例非常相似,我创建了一个目录,然后从这个新目录创建了一个文件。目录结构创建正确,文件上传正确,但总有一个额外的0字节文件。我的代码如下所示:

job_number = 100

connection = Fog::Storage.new({
  :provider                         => 'Google',
  :google_storage_access_key_id     => YOUR_GCE_ACCESS_KEY_ID,
  :google_storage_secret_access_key => YOUR_GCE_SECRET_ACCESS_KEY
})

directory = connection.directories.create(
  :key    => "test-project/uploads/#{job_number}",
  :public => false
)

file = directory.files.create(
  :key    => 'file.pdf',
  :content_type => 'application/pdf',
  :body   => File.open("/path/to/my/file.pdf"),
  :public => false
)
目录结构非常完美(存在gs://testproject/uploads/100文件夹),file.pdf文件也存在于该目录中(gs://testproject/uploads/100/file.pdf)

问题是,在以下情况下:

directory = connection.directories.create(
  :key    => "test-project/uploads/#{job_number}",
  :public => false
)
命令运行时,在gs://testproject/uploads/100处有一个文件以及一个目录gs://testproject/uploads/100/。当我浏览代码时,connection.directories.create(…)命令肯定会创建额外的文件,但我不知道为什么

我还尝试在connection.directories.create(…)命令的键值中添加一个尾随斜杠,但这实际上造成了一个不同的目录结构问题,比这更糟糕(这不是坏事,只是令人讨厌)


是否有人看到了这一点,或者知道如何通过Fog正确创建目录结构?

只需创建/获取基本目录/存储桶,然后将文件与目录结构的其余部分一起保存,而不是直接创建文件。所以看起来是这样的:

job_number = 100

connection = Fog::Storage.new({
  :provider                         => 'Google',
  :google_storage_access_key_id     => YOUR_GCE_ACCESS_KEY_ID,
  :google_storage_secret_access_key => YOUR_GCE_SECRET_ACCESS_KEY
})

directory = connection.directories.create(
  :key    => "test-project",
  :public => false
)

file = directory.files.create(
  :key    => 'uploads/#{job_number}/file.pdf',
  :content_type => 'application/pdf',
  :body   => File.open("/path/to/my/file.pdf"),
  :public => false
)

据猜测,这可能是因为试图创建一个已经存在的目录?如果你从头开始,这种情况还会发生吗?否则,如果您在github回购上报告问题,我可以更轻松地寻求帮助。