Ruby on rails 使用回形针+;赫罗库+;s3。。。本地上传在实时推送时中断

Ruby on rails 使用回形针+;赫罗库+;s3。。。本地上传在实时推送时中断,ruby-on-rails,amazon-s3,heroku,paperclip,Ruby On Rails,Amazon S3,Heroku,Paperclip,我正在建立一个小网站,有一个相当大的数量的图片>100为一小部分当地人。如果我在本地机器上通过回形针将文件上传到s3,它们工作正常,但当我将其推到heroku时,这些图片就会被破坏(也就是指向错误的位置) 如果我从heroku中提取实时数据库(在这种情况下,我将照片上传到在线应用程序,然后提取在线数据库)。这些图像不会加载到我的本地应用程序中 有什么办法让它工作吗 编辑: 关于这个问题的进一步澄清:我现在已经在模型中设置了这样的路径 :path => "/public/system/:at

我正在建立一个小网站,有一个相当大的数量的图片>100为一小部分当地人。如果我在本地机器上通过回形针将文件上传到s3,它们工作正常,但当我将其推到heroku时,这些图片就会被破坏(也就是指向错误的位置)

如果我从heroku中提取实时数据库(在这种情况下,我将照片上传到在线应用程序,然后提取在线数据库)。这些图像不会加载到我的本地应用程序中

有什么办法让它工作吗

编辑: 关于这个问题的进一步澄清:我现在已经在模型中设置了这样的路径

:path => "/public/system/:attachment/:style/:id.:extension"
现在,它可以控制访问S3时url的外观。但是,我的本地计算机将此作为图像源输出:

bucket/Users/msencenb/Development/appname/public/system/pictures/7/thumb/overlook.jpg?2011
heroku应用程序源代码如下所示:

bucket/app/public/system/pictures/7/thumb/overlook.jpg?2011

正如您所看到的,这是非常相似的,除了本地路径也将目录结构注入源路径之外。如何使用回形针输入源路径?

当您在本地计算机上工作时,使用本地数据库中的ID将文件上载到S3,当您推送到heroku时,如果您不使用本地内容更新远程数据库,引用将被打断。

尝试删除路径开头的正斜杠

:path => "public/system/:attachment/:style/:id.:extension"
它不应该采用这样的应用程序路径(本地的Users/msencenb/Development/appname和Heroku上的app)。是什么原因导致了它,如果删除斜杠不起作用,那么试着调查是什么原因导致了它。

请参阅这篇博文:

我有多个应用程序使用回形针和s3。我是这样设置的:

  has_attached_file :picture, 
                     :styles => {:large => "275x450>"},
                     :storage => :s3, 
                     :s3_credentials => "#{RAILS_ROOT}/config/s3.yml",
                     :path => "appname/:attachment/:style/:id.:extension"

确保用应用程序的名称替换
appname
。例如,您可以在heroku上访问应用程序的子域。

您的生产和开发环境是否使用相同的S3存储桶?显示您使用的回形针配置模型。这是正确的;然而,即使当我使用轻触键将本地数据库推送到heroku时,图像仍然被破坏。现在我必须重新上传所有我不想要的东西使用
/public/system
可能是问题所在,我只是在我的s3 heroku应用程序上使用了
appname/:attachment/:style/:id.:extension
。注意:在将s3.yml添加到git项目之前,请谨慎使用。考虑如何保护您的S3证书。确保您将其添加到GiTigGORE。