【问题标题】:rails call class methodrails调用类方法
【发布时间】:2013-03-12 20:18:45
【问题描述】:

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

你能给我一些帮助吗?

【问题讨论】:

    标签: ruby-on-rails methods console


    【解决方案1】:

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

    class ParserPlugin < ...
    

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

    NameError: uninitialized constant ParserPlugin
    

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-26
        • 2013-07-16
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多