我无法在替代类的方法中调用属于某些类的方法

问题描述

这是我第一次提问,所以如果我可以做得更好,请告诉我。

我有三个班级,所有这些班级都需要协同工作。举个例子:

div class="cards"

我在尝试调用 CLI.start 时遇到的错误如下:

div class="card__*"

我想我需要做一些叫做命名空间的事情,但我不完全确定。关于如何解决这个问题并使我的课程很好地协同工作的一些方向或选项将不胜感激。谢谢。

解决方法

了解您的堆栈跟踪

您的堆栈跟踪非常简单。它告诉你:

  1. 您还没有成功地要求您的 Scraper 类/模块。
  2. 您当前的命名空间中没有定义 CLI::Scraper。
  3. 您正在对不在范围内或根本不存在于您的代码中的对象调用方法。

调试代码的步骤

解决上述问题,看看您能从中得到什么。顺便说一下,在调试程序时,您应该考虑一些具体的事情:

  1. 您的 CLI 类无法在其命名空间之外引用 Scraper 类/模块,除非您告诉它在哪里查看导入模块或在公共模块中命名它们以便您可以引用 Foo::Scraper 和 Foo: :CLI 显式。

  2. 无论如何,您最好将 Scraper 注入您的 CLI 初始化中,但您没有展示足够的代码来提供有意义的示例。

  3. 去掉所有非必要的代码,直到你可以让基础工作。例如:

    class CLI
      def self.start
        defined? Scraper
      end
    end
    
  4. 继续重构,直到最小的 CLI#start 返回 "constant" 而不是 nil