2015-04-22 67 views
1

我正在使用我的應用程序中的引擎,並在engines/MY_ENGINE/app/mailers內爲此引擎創建郵件程序,但我得到uninitialized constant MY_ENGINE::TicketMailerRails引擎不加載郵件程序

檢查加載的路徑,通過做puts $:我看到鐵軌加載資產,控制器,模型和助手內的應用程序文件夾,但不是郵件。

有沒有辦法解決這個問題,並添加一個路徑來加載?

+0

你確定你的郵件是這樣的命名空間嗎? – tadman

+0

是的。它位於模塊MY_ENGINE中,它被稱爲TicketMailer。我打印加載的路徑和郵件程序文件夾不在那裏。即使我拼錯文件夾的名稱應加載。 –

+0

如果你的模塊名字是* literally *'MY_ENGINE',你將會遇到問題。 Rails自動加載器會將其擴展爲'm_y_en_g_i_n_e'這不是你想要的東西。在自動加載程序系統中,example_name成爲'ExampleName'。最好使用「MyEngine」這樣的名字和「my_engine」的路徑來保持一致。 – tadman

回答

0

我找到了解決這個問題的辦法。顯然,郵件程序文件夾是不會自動加載,但你可以添加文件夾到負載路徑手動添加像這樣的一條線,你engine.rb

paths['app/mailers'] << 'MY_ENGINE/app/mailers' 

像這樣:

module MY_ENGINE 
    class Engine < ::Rails::Engine 
    isolate_namespace MY_ENGINE 
    paths['app/mailers'] << 'MY_ENGINE/app/mailers' 
    end 
end 

這解決了這一問題。