我正在向Mailboxer::Conversation
添加一个方法,以使用邮箱的电子邮件回复链接(即reply_link
)。
我决定在我的应用程序中添加补丁邮箱。我所做的完全是以下几点:
lib/mailboxer/extensions
。lib/mailboxer/extensions/conversation.rb
,lib/mailboxer/extensions.rb
,lib/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文件夹。
然后我要做的是在邮箱初始化文件Mailboxer::Extensions::Conversation
中包含Mailboxer::Conversation
到initalizers/mailboxer.rb
:
Mailboxer.setup do |config|
# ...
end
Mailboxer::Conversation.include Mailboxer::Extensions::Conversation
在我的rails console
中,代码始终有效。但是在网站中,reply_link
方法最初起作用,然后随机变为未定义。
稍后再尝试......
并且在我重新启动服务器之前它会停止工作...
每当我得到一个不相关的异常(即拼写错误,重构等)时,reply_link
方法就变得不确定了。这可能是一个发展的事情吗?
我可以分发邮箱,然后继续进行更改。但是这个方法对我的应用程序是如此自定义,我宁愿只是补丁。
如果有人有任何建议,建议或问题我真的很感激你的建议。
答案 0 :(得分:0)
首先,我仍然相信这只是一个发展问题。每当我有空余时间,我都会测试一下并在这里发布。
其次,为了确保从未发生这种情况,我复制了邮箱会话的来源并添加了包含include MailboxerExt::Conversation
。
我还将我的扩展程序结构化为不碰撞,重新加载Mailboxer的命名空间。
最终结果包含文件夹app/models/mailboxer
,lib/mailboxer_ext
。
文件为app/models/mailboxer/conversation.rb
,lib/mailboxer_ext.rb
和lib/mailboxer_ext/conversation.rb
。