rails调用类方法

时间:2013-03-12 20:18:46

标签: ruby-on-rails methods console

我有我的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

你能给我一些帮助吗?

2 个答案:

答案 0 :(得分:0)

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

class ParserPlugin < ...

应为parser_plugin.rb,否则您将收到错误

NameError: uninitialized constant ParserPlugin

我假设该文件位于/app/controllers,因为它继承自ApplicationController类。

答案 1 :(得分:0)

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

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