RoR Mailboxer Monkey Patch只能工作几次

时间:2016-05-10 21:06:37

标签: ruby-on-rails ruby mailboxer

我正在向Mailboxer::Conversation添加一个方法,以使用邮箱的电子邮件回复链接(即reply_link)。

我决定在我的应用程序中添加补丁邮箱。我所做的完全是以下几点:

  1. 创建了文件夹结构lib/mailboxer/extensions
  2. 添加了文件lib/mailboxer/extensions/conversation.rblib/mailboxer/extensions.rblib/mailboxer.rb
  3. 以下是文件的内容:

    # 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文件夹。 然后我要做的是在邮箱初始化文件Mailboxer::Extensions::Conversation中包含Mailboxer::Conversationinitalizers/mailboxer.rb

    Mailboxer.setup do |config|
      # ...
    end
    
    Mailboxer::Conversation.include Mailboxer::Extensions::Conversation
    

    在我的rails console中,代码始终有效。但是在网站中,reply_link方法最初起作用,然后随机变为未定义。

    enter image description here

    稍后再尝试......

    enter image description here

    并且在我重新启动服务器之前它会停止工作...

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

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

    如果有人有任何建议,建议或问题我真的很感激你的建议。

1 个答案:

答案 0 :(得分:0)

首先,我仍然相信这只是一个发展问题。每当我有空余时间,我都会测试一下并在这里发布。

其次,为了确保从未发生这种情况,我复制了邮箱会话的来源并添加了包含include MailboxerExt::Conversation

我还将我的扩展程序结构化为不碰撞,重新加载Mailboxer的命名空间。

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

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