【问题标题】:Rails4 Paperclip attachments not working in productionRails4 回形针附件在生产中不起作用
【发布时间】:2014-01-31 03:30:57
【问题描述】:

我正在尝试将头像上传给用户,它正在开发中工作,但不在生产中

Rails4、Heroku、S3、回形针、设计

在开发中一切正常。当我推送到 Heroku,运行 Heroku migrate 并尝试使用附件(:avatar)图像更新设计用户页面时,它会返回缺少的图像 url。

在 heroku logs --tail 中,它似乎运行正常,甚至将图像保存到 S3(我检查过,它们保存在我的 S3 存储桶中)。此外,如果我拉 pg 数据库,我可以看到数据库中与附件图像关联的列(4 列)。在生产中,当我检查数据库时,附件文件列是空的,所以它们没有任何内容,但它们存储在 S3 中。

这有点奇怪?我以为 Paperclip Docs 说它将保存到数据库并在发送到服务器之前运行验证。

我的表格

我的观点(index.html.erb)

<%= image_tag post.user.avatar.url(:thumb) %>

这是我成功保存到 S3 后的日志(heroku logs --tail)

如果我检查数据库,附件的列仍然是nil

让我感到困惑的是,这在开发中有效,但在生产中无效,并且似乎与 S3 错误没有任何关系。

我做错了什么??

【问题讨论】:

  • 澄清一下,当您说生产数据库列为空时 - 您的意思是空白还是它们不是在表的架构中创建的?
  • 它们在模式中并且在开发中正常工作。如果我从 heroku 中提取生产数据库,它们是 nil。
  • 好的,您能否发布将这些列添加到数据库的迁移文件?以确认它们是正确的。应该像:add_column :users, :avatar_file_name, :string ...

标签: ruby-on-rails paperclip


【解决方案1】:

嗯,很浪费时间。

我终于厌倦了试图弄清楚这一点,我最终第二次和第三次经历了所有的动作,无论出于何种原因,它现在可以工作了:\

-我在config/initializers/中添加了paperclip.rb(空文件)

-我将所有安全分支合并到 master 中。

-运行捆绑安装

-推送到github

-Ran Git push heroku master

-运行 heroku 运行 rake db:migrate

这是第三次运行这些操作,所以老实说我不知道​​问题出在哪里,但它现在正在运行。

  • 感谢 @peterept 的帮助

【讨论】:

  • 我感受到你的痛苦。我喜欢 ruby​​,我喜欢概念上的 rails。但我不得不说,我在 Rails 中所做的任何工作都有 75% 的时间用于处理奇怪的部署/配置/冲突问题。
【解决方案2】:

您的表单应该有 enctype="multipart/form-data" 并且新版本的回形针强制您进行此验证:

validates_attachment_content_type :avatar, :content_type => /\Aimage/.*\Z/

看看他们的文档:https://github.com/thoughtbot/paperclip

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-29
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多