Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.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 on rails 每次推到heroku,图像都不会显示,回形针_Ruby On Rails_Postgresql_Heroku_Amazon S3_Paperclip - Fatal编程技术网

Ruby on rails 每次推到heroku,图像都不会显示,回形针

Ruby on rails 每次推到heroku,图像都不会显示,回形针,ruby-on-rails,postgresql,heroku,amazon-s3,paperclip,Ruby On Rails,Postgresql,Heroku,Amazon S3,Paperclip,这就是我的处境 我用回形针让用户上传图片。它做得很好,一切都很好。然后,我把它推给了heroku。就目前而言,我可以看到用户刚刚上传的所有图片。然而,每次我做出新的承诺并再次推到heroku时,我以前的所有图片都消失了。似乎没有文件了,无法加载 所以,这里是我的想法: 是不是每次我推到heroku服务器时,本地的图像文件都被上传到heroku服务器 我为我的问题做了研究,我真的不明白他们对heroku说了些什么,我不知道这和我的问题是一样的 Heroku有一个只读文件系统。这意味着回形针无法将上

这就是我的处境

我用回形针让用户上传图片。它做得很好,一切都很好。然后,我把它推给了heroku。就目前而言,我可以看到用户刚刚上传的所有图片。然而,每次我做出新的承诺并再次推到heroku时,我以前的所有图片都消失了。似乎没有文件了,无法加载

所以,这里是我的想法: 是不是每次我推到heroku服务器时,本地的图像文件都被上传到heroku服务器

我为我的问题做了研究,我真的不明白他们对heroku说了些什么,我不知道这和我的问题是一样的

Heroku有一个只读文件系统。这意味着回形针无法将上传的文件保存到Heroku内的任何地方

如果您希望能够将文件上载到Heroku上托管的应用程序,则必须将文件作为二进制blob存储在数据库中,或者必须使用单独的服务来存储文件。如果您正在寻找一项单独的服务,那么Paperclip内置了与AmazonS3集成的支持

我发现亚马逊S3需要信用卡注册,如果我没有信用卡,那么我就不能使用他们的服务


非常感谢您提供的详细建议和解释。谢谢您

亚马逊不是免费设备,您必须提供您的信用卡号码才能使用。然而,你只付你所用的,但并不昂贵。例如,就我的网站而言,上个月我花了2.46美元购买了15Gb的存储空间,花了1.90美元购买了16Gb的数据传输

要将S3与回形针一起使用,您需要将
gem'aws-S3'
添加到
gem文件中

接下来,您需要添加
config/s3.yml
您的资产凭据,例如:

production:
  access_key_id: AAAAAAAAAAAAAAAAAA
  secret_access_key: BBBBBBBBBBBBBBBBBBBBBBBBBBB
  bucket: assets.my-bucket
class Asset
  has_attached_file :asset, 
    :styles => {  :thumb => "60x60#", :large => "700x330#"},
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/images/:id/:style.:extension"
  validates_attachment_content_type :asset, :content_type => ['image/gif', 'image/jpeg', 'image/png', 'image/x-ms-bmp']
end
然后我有一个存储我的资产的模型,例如:

production:
  access_key_id: AAAAAAAAAAAAAAAAAA
  secret_access_key: BBBBBBBBBBBBBBBBBBBBBBBBBBB
  bucket: assets.my-bucket
class Asset
  has_attached_file :asset, 
    :styles => {  :thumb => "60x60#", :large => "700x330#"},
    :storage => :s3,
    :s3_credentials => "#{Rails.root}/config/s3.yml",
    :path => "/images/:id/:style.:extension"
  validates_attachment_content_type :asset, :content_type => ['image/gif', 'image/jpeg', 'image/png', 'image/x-ms-bmp']
end

我希望这有帮助

是的,我确实知道这件事,你能提供更多关于我所面临问题的问题吗??izit必须解决使用AmazonS3这样的另一种服务的问题?你可以使用任何你想要的服务,而不是s3,但是你不能在heroku上上传你的资产。因此,您可以使用专用服务器或其他远程存储系统,但您可能需要为此付费。oic…这意味着每次我推送到heroku时,我上传到heroku服务器上的图像都会受到影响?提交中的图片和推送到heroku上的图片不会受到影响。每次推送时,只有从heroku网站上传的图片才会被删除。