【发布时间】:2015-04-22 16:57:58
【问题描述】:
我正在我的应用程序中开发一个引擎,并在engines/MY_ENGINE/app/mailers 中为这个引擎创建一个邮件程序,但我收到了uninitialized constant MY_ENGINE::TicketMailer。
通过执行puts $: 检查加载的路径我看到rails 在app 文件夹中加载资产、控制器、模型和帮助程序,而不是邮件。
有没有办法解决这个问题并添加要加载的路径?
【问题讨论】:
-
你确定你的邮件是这样命名的吗?
-
是的。它位于模块 MY_ENGINE 中,称为 TicketMailer。我打印了加载的路径,但邮件文件夹不存在。即使我拼错了类的名称,也应该加载文件夹。
-
如果你的模块名称是 literally
MY_ENGINE你会遇到问题。 Rails 自动加载器会将其扩展为m_y_en_g_i_n_e之类的东西,这根本不是您想要的。在自动加载系统中example_name变为ExampleName。最好使用MyEngine之类的名称和my_engine的路径以保持一致。 -
@tadman 感谢您的关注,但这不是命名问题,我的引擎不是这样命名的,您可以在下面的答案中看到我是如何解决问题的。
标签: ruby-on-rails ruby ruby-on-rails-4 rails-engines