我正在建立一个拥有相当多图片的小网站> 100为当地一小群人。如果我通过本地机器上的回形针将文件上传到s3,它们工作得很好,但是当我将它推送到heroku时,那些图片会被破坏(也就是指向错误的位置)。
如果我从heroku中提取实时数据库(我将照片上传到在线应用程序的情况下,请拉动在线数据库)。这些图片无法加载到我的本地应用中。
有关如何使这项工作的任何想法?
编辑: 关于这个问题的更多澄清:我现在已经在模型中设置了这样的路径
:path => "/public/system/:attachment/:style/:id.:extension"
现在它控制了访问S3时网址的外观。但是我的本地机器将其输出为图像源:
bucket/Users/msencenb/Development/appname/public/system/pictures/7/thumb/overlook.jpg?2011
而heroku应用源代码如下:
bucket/app/public/system/pictures/7/thumb/overlook.jpg?2011
正如您所看到的,除非本地人将目录结构注入源路径,否则这非常相似。如何使用回形针进行源路径?
答案 0 :(得分:2)
请参阅此博文:
http://codeglot.com/posts/68-upoading_pictures_to_apps_on_heroku
我有多个使用paperclip和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上访问您的应用程序的子域。
答案 1 :(得分:0)
当您使用本地计算机时,使用本地数据库中的ID将文件上载到S3,当您推送到heroku时,如果不使用本地内容更新远程数据库,则引用将是碎。
答案 2 :(得分:0)
尝试取出你在路径开头的正斜杠。
:path => "public/system/:attachment/:style/:id.:extension"
它不应该采用应用程序路径(本地上的Users / msencenb / Development / appname和Heroku上的app)。有什么东西导致它,如果采取斜线不起作用,然后尝试调查还会导致这种情况。