ruby-on-rails - 修补 ActiveStorage::Attachment 的猴子丢失了

标签 ruby-on-rails ruby ruby-on-rails-5 monkeypatching rails-activestorage

所以我决定向 ActiveStorage::Attachment 对象添加一个 url attr_accessor。

开发中,补丁会保留一段时间,直到它似乎“已丢失”。这意味着它工作了几分钟,然后就不再工作了。然后我需要重新启动服务器才能再次应用补丁。我相信我没有正确打补丁,我需要这方面的建议。


这是我尝试过的:

lib/ext/active_storage/attachment.rb

第一次尝试:

module ActiveStorageUrl
  extend ActiveSupport::Concern

  included do
    attr_accessor :url
  end
end

ActiveStorage::Attachment.send :include, ActiveStorageUrl

第二次尝试

class ActiveStorage::Attachment < ActiveRecord::Base
  attr_accessor :url
end

顺便说一下,在这两种情况下它都加载了这个:

config/initializers/monkey_patches.rb

require 'ext/active_storage/attachment'

所以当它工作时我没有错误消息,但过了一会儿补丁“消失”(缺少更好的术语),我得到以下错误,告诉我我的 attr_accessor 不存在了。 Rails 一定是重新加载了 ActiveStorage 类,而我的补丁丢失了。

Module::DelegationError in Products#images
url delegated to blob, but blob is nil

最佳答案

我将我的 ActiveStorage::AttachmentMonkeyPatch 放在 /app/models/active_storage/
如果附件已更改,我添加了一个回调以得到通知。它始终运行良好。

也许这就是问题所在。

关于ruby-on-rails - 修补 ActiveStorage::Attachment 的猴子丢失了,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55109738/

相关文章:

ruby-on-rails - Rails 5 缓存,它存储在哪里以及如何清理它?

javascript - 使用 reactjs 和 rails Assets 管道的最佳方式是什么?

ruby-on-rails - Rake 测试错误 - ActiveRecord::Fixture::FormatError: ActiveRecord::Fixture::FormatError

ruby - 如何通过带有动态事件记录类的 Ruby 脚本获取 WordPress 数据库表?

ruby - 替换特殊字符 Ruby

ruby-on-rails - Rspec Suite 在 OmniAuth 模拟身份验证哈希上失败

ruby-on-rails - 为什么 Rails 5 将 "index"更改为 "foreign key"?

ruby-on-rails - 无法在 Windows 上的 Rails 中安装 libv8 3.11.8.17

sql - ruby on rails 参数比较日期和日期时间?

ruby-on-rails - rake 中止!不知道如何构建任务 'doc:app'