我对rails很陌生,似乎对回形针宝石有问题。我安装了gem,它在开发中运行良好(localhost:3000),但当我在亚马逊服务器上运行它时,由于某种原因,它不想附加文件,应用程序会崩溃(错误500页)。
我已经将我的代码部署到了amazon服务器上,我还配置了bucket详细信息,但它在生产方面仍然存在问题,尽管它在localhost上运行良好。
这是我运行的过程。。。我把我的文件推到了亚马逊。这似乎于事无补。
这是我的回形针代码:
user.rb模型:
has_attached_file :avatar,
:styles => {
:thumb => "50x50",
:medium => "400x400",
:square => "70x70"
},
:storage => :s3,
:s3_credentials => "#{Rails.root}/config/s3.yml",
:path => ":attachment/:id/:style.:extension",
:bucket => "mybucket"
我的用户表单:
<%= form_for(@user, url: "/sessions/#{current_user.id}", :html =>{:method => :put, :class => "form-horizontal", :multipart => true}) do |f| %>
<%= f.file_field :avatar %>
<% end %>
生产中出现故障。任何建议都将不胜感激。。。我似乎就是想不通,这很令人沮丧。非常感谢您的时间和帮助!请指出我犯错误的地方。
image_magic也有同样的问题,它在生产中破坏了我们的回形针功能,但在开发中却没有(我知道这很奇怪)。然而,即使在本地从我们的gemfile和gemfile.lock中删除了imagemagik(运行捆绑包安装和所有这些东西),然后在heroku上部署回生产之后,这个错误仍然存在于生产中!(我知道这很奇怪)。
最终成功的是运行:
$ heroku repo:purge_cache -a myAppName
(摘自:https://github.com/heroku/heroku-repo#purge_cache)
当你部署你的应用程序时,Heroku会缓存一些东西,比如你的资产和安装的宝石,以加快部署速度。虽然这是一个很好的功能,但有时也会产生副作用,在这种情况下,imagemagick gem的某些东西似乎被"卡"在了生产的缓存中,这就是为什么清除为我们解决了这个问题(因为在清除后,您的应用程序将在下一次部署时从头开始重建自己)