2013-03-12 8 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 

И начинаю проект с «рельсов c». И если я пытаюсь вызвать «ParserPlugin.loadPlugins» он показывает

NameError: uninitialized constant ParserPlugin 

Можете ли вы дать мне некоторую помощь?

ответ

0

Убедитесь, что имя файла соответствует имени класса. Имя файла:

class ParserPlugin < ... 

должно быть parser_plugin.rb в противном случае вы получите сообщение об ошибке

NameError: uninitialized constant ParserPlugin 

Я предполагаю, что файл находится в /app/controllers, потому что он наследует от класса ApplicationController.

+0

Спасибо! Оно работает – Andrii

0

Rails использует ленивую загрузку, то есть она анализирует ваши константы по мере их появления и ищет файл, который соответствует. Не все ваши классы загружаются при запуске - это происходит при первом попытке доступа к ParserPlugin. В этом случае Rails ищет файл с именем parser_plugin.rb в одном из ваших автозагруженных каталогов (возможно, controllers, на основе вашего наследования, которое вы установили).

Сторона примечания: это скорее всего не должно наследовать от ApplicationController. Если это не контроллер, он не должен быть подключен к вашим контроллерам. Поместите его в другое место.