2013-03-12 72 views
0

我有我的導軌應用程序。我有類導軌調用類方法

class ParserPlugin < ApplicationController 
    def self.loadPlugins 
    Dir.foreach("/plugins") do |f| 
     if f != '.' and f != '..' 
     load("/plugins" + f.to_s) 
     end 
    end 
    end 
    def self.createplugin 
    @@plugins << self.new 
    end 
end 

而且我用「rails c」開始項目。如果我嘗試打電話「ParserPlugin.loadPlugins」它顯示

NameError: uninitialized constant ParserPlugin 

你能給我一些幫助嗎?

回答

0

確保文件名與類名匹配。對於文件名:

class ParserPlugin < ... 

應該parser_plugin.rb否則你會得到錯誤

NameError: uninitialized constant ParserPlugin 

我假設文件在/app/controllers因爲它是從ApplicationController類繼承。

+0

謝謝!有用 – Andrii 2013-03-12 20:32:47

0

Rails使用延遲加載,這意味着它會在您的常量出現時分析它們並查找匹配的文件。並非所有類都在啓動時加載 - 這是第一次嘗試訪問ParserPlugin時發生的情況。在這種情況下,Rails正在您的一個自動加載目錄(可能是controllers,基於您設置的繼承)中尋找名爲parser_plugin.rb的文件。

一個方面說明:這很可能不應該從ApplicationController繼承。如果它不是控制器,則不應連接到控制器。把它放在別的地方。