【发布时间】:2016-02-20 15:39:31
【问题描述】:
我正在尝试将模块加载到某些 Mailboxer gem 类中,以便为这些类添加额外的方法。但有时我的尝试会奏效,但我通常会收到“未定义的方法”错误。
我尝试将模块添加到 lib 目录,然后在 config/application.rb 文件中发出加载指令,如下所示:
config.autoload_paths += %W(#{config.root}/lib)
然后使用 initializers/mailboxer.rb 文件将这些包含到各自的类中。
我也尝试过(在 intitializer/mailboxer.rb 文件中)在类本身上编写 class_eval 语句并通过 class_eval 语句添加方法。
我目前将模块放在 app/helpers 目录中,并将模块名称更改为 MailboxerMessagesHelper、MailboxerConversationsHelper 等,然后使用 initializer/mailboxer.rb 文件来包含它们,如下所示:
Mailboxer::Message.include(MailboxerMessagesHelper)
所有这些尝试偶尔都会奏效。我已经看到类似问题的答案指出这是一个开发环境问题,因为 rails 在每个请求之间重新加载。但是,我认为问题在于我做错了。
【问题讨论】:
标签: ruby-on-rails-4 module initialization rubygems initializer