【问题标题】:Paperclip undefined method 'after_commit'回形针未定义方法'after_commit'
【发布时间】:2018-01-07 12:46:40
【问题描述】:

我正在开发一个项目,该项目使用回形针 (4.3.7) 与 ruby​​ (2.2.7) 和 rails (3.2.22) 将图像上传到 S3。在本地,一切都像魅力一样,但是当我将项目推送到 Heroku 时,我收到了这个错误:

/app/vendor/bundle/ruby/2.2.0/gems/paperclip-4.3.7/lib/paperclip/has_attached_file.rb:94:in `add_active_record_callbacks': undefined method `after_commit' for JobApplication:Class (NoMethodError)

有人知道可能发生的事情吗?

【问题讨论】:

    标签: ruby-on-rails ruby heroku amazon-s3 paperclip


    【解决方案1】:

    你能更新到新版本的 Rails 吗? Paperclip's github repo 说他们需要 rails >= 4.2。我认为您可能遇到了回形针中的错误。

    如果您无法升级 Rails,请考虑将 after_commit 方法添加到 JobApplication 类。您可能必须查看回形针源代码以找出他们试图添加的钩子,并决定您是否可以在没有该功能的情况下生存,或者需要重新创建它。它可能非常重要,也可能不重要。

    【讨论】:

    • 不幸的是我不能。不过,我可以降级回形针版本。
    • 我没有的原因是因为我遇到了 2.7.0 版本的问题,没有返回正确的 url。
    【解决方案2】:

    在推送到 Heroku 之前,你完成了asset_precomplie 吗?

    rake assets:precompile RAILS_ENV=production
    

    rake 资产:预编译 (RAILS_ENV=production bundle exec rake 资产:预编译是准确的 rake 任务)

    由于预编译仅在生产模式下完成,无需显式指定环境。

    希望它会起作用:)

    【讨论】:

      【解决方案3】:

      好吧,我通过使用旧版本的回形针 (2.7.0) 并将回形针配置移动到模型本身而不是 production.rb 文件来解决了这个问题。无论如何,感谢您的帮助!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多