0

我有我的 Rails 应用程序。我有课

 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

你能给我一些帮助吗?

4

2 回答 2

0

确保文件名与类名匹配。文件名:

class ParserPlugin < ...

应该是parser_plugin.rb否则你会得到错误

NameError: uninitialized constant ParserPlugin

我假设文件在,因为它是从类/app/controllers继承的。ApplicationController

于 2013-03-12T20:24:34.137 回答
0

Rails 使用延迟加载,这意味着它会在常量出现时对其进行解析并查找匹配的文件。并非所有的类都在启动时加载——这发生在您第一次尝试访问时ParserPlugin。在这种情况下,Rails 正在寻找parser_plugin.rb在您的自动加载目录之一中调用的文件(可能controllers基于您设置的继承)。

附注:这很可能不应该继承自ApplicationController. 如果它不是控制器,则不应将其连接到您的控制器。把它放在别的地方。

于 2013-03-12T20:24:50.980 回答