RoR Mailboxer Monkey Patch 只工作了几次

RoR Mailboxer Monkey Patch works only a few times

我正在向 Mailboxer::Conversation 添加一个方法来检索 link 使用邮箱的电子邮件回复(即 reply_link)。

我决定在我的应用程序中修改邮箱程序。我所做的具体如下:

  1. 创建了文件夹结构 lib/mailboxer/extensions
  2. 已添加文件 lib/mailboxer/extensions/conversation.rblib/mailboxer/extensions.rblib/mailboxer.rb

文件内容如下:

# lib/mailboxer/extensions/conversation.rb
module Mailboxer
  module Extensions
    module Conversation
      def reply_link
        "/mail?notif_id=#{id}"
      end
    end
  end
end

# lib/mailboxer/extensions.rb
require 'mailboxer/extensions/conversation'

# lib/mailboxer.rb
require 'mailboxer/extensions'

我的 config/application.rb 有以下内容:

config.autoload_paths += %W(#{config.root}/lib)

这让我可以访问我的 lib 文件夹。 然后我做的是在邮箱初始化文件 initalizers/mailboxer.rb:

中包含 Mailboxer::Extensions::ConversationMailboxer::Conversation
Mailboxer.setup do |config|
  # ...
end

Mailboxer::Conversation.include Mailboxer::Extensions::Conversation

在我的 rails console 中,代码始终有效。然而在网站中,reply_link 方法首先有效,然后随机变为未定义。

稍后尝试几次....

它停止工作,直到我重新启动服务器...

每当我遇到不相关的异常(即拼写错误、重构等)时,reply_link 方法就会变得未定义。这可能是发展的事情吗?

我可以分叉邮箱,进行更改然后继续。但该方法对我的应用程序来说是如此自定义,我宁愿只打补丁。

如果有人有任何建议、建议或问题,我非常感谢您的建议。

首先,我仍然坚信这只是一个开发问题。每当我有空的时候,我都会测试一下,然后 post 在这里。

其次,为确保不再发生这种情况,我复制了 Mailboxer's Conversation 的源代码并添加了包含内容 include MailboxerExt::Conversation

我还构建了不冲突的扩展,重新加载 Mailboxer 的命名空间。

最终结果有文件夹app/models/mailboxerlib/mailboxer_ext

文件是 app/models/mailboxer/conversation.rblib/mailboxer_ext.rblib/mailboxer_ext/conversation.rb