我有我的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
你能给我一些帮助吗?
答案 0 :(得分:0)
确保文件名与类名匹配。文件名:
class ParserPlugin < ...
应为parser_plugin.rb
,否则您将收到错误
NameError: uninitialized constant ParserPlugin
我假设该文件位于/app/controllers
,因为它继承自ApplicationController
类。
答案 1 :(得分:0)
Rails使用延迟加载,这意味着它会在出现时解析常量并查找匹配的文件。并非所有课程都在启动时加载 - 这是在您第一次尝试访问ParserPlugin
时发生的。在这种情况下,Rails正在一个自动加载的目录中查找名为parser_plugin.rb
的文件(可能是controllers
,基于您设置的继承)。
附注:这很可能不应该从ApplicationController
继承。如果它不是控制器,则不应将其连接到控制器。把它放在其他地方。