【问题标题】:Stop Rails Console from loading Test::Unit停止 Rails 控制台加载 Test::Unit
【发布时间】:2011-10-29 11:10:02
【问题描述】:

我有一个名为“Test”的模型(我评论了该模型中的所有内容,所以剩下的就是 class Test end 用于调试目的),每次我尝试在 Rails 控制台中实例化它时,我都会收到一个错误Test:Module 不存在“新”方法。实例化我的任何其他模型时都不会发生此错误,我认为这与 rails 控制台正在加载 Test::Unit 或类似的东西有关(预感我跑了Test.constants 和控制台返回[:Unit],所以我很确定这是问题所在)。无论如何,毫无疑问,rails 控制台正在运行一些名为 Test 的模块,我不希望这种情况发生。我该如何避免这种情况?将我的类名更改为其他值对我来说非常不方便,所以如果有任何方法可以解决这个问题,那就太好了~!

【问题讨论】:

    标签: ruby-on-rails-3 testunit rails-console


    【解决方案1】:

    我只是使用了一个简单的解决方法,将我的类称为“Exam”而不是 Test,但我想知道如何在不解决此问题的情况下正确解决此问题。

    【讨论】:

      【解决方案2】:

      您可以添加一个模块并将您的测试类放入其中以避免该问题。然后,您需要像 module::class 一样处理您的类。

      【讨论】:

      • 我觉得这种方法有点混乱——我宁愿运行一段代码来“取消定义”rails 控制台似乎正在读取的测试类。另外,如果我这样做了使用这种封装模块方法,对我的其余代码(数据库访问等)有什么影响?
      • 另外,我一直在网上四处寻找,显然命名空间模型在 Rails 中绝对是个麻烦/混乱——stackoverflow.com/questions/601768/…。所以我真的需要 Rails 控制台不加载 Test::Unit。
      • 它并不混乱,这正是模块的用途。您只是想向已定义的类添加方法。您要么不在已经预定义的类之后命名您的类,要么将您的类放在模块中。或者是的,就像你说的一起删除测试,但这就像说你想删除puts,因为ruby puts 干扰了你的puts。
      • 我想你是对的 - 可能不是最明智的举动来搞乱 Rails 魔法
      猜你喜欢
      • 1970-01-01
      • 2010-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-21
      • 2015-06-02
      相关资源
      最近更新 更多