【问题标题】:TypeError: ActiveSupport is not a classTypeError: ActiveSupport 不是一个类
【发布时间】:2017-07-11 14:54:43
【问题描述】:

大家好,提前感谢您的反馈。

我有一个新的 rails 5.0.4 项目(ruby 2.3.4p301(2017-03-30 修订版 58214)[x86_64-darwin15])并且在运行我的第一个 minitest pass 时遇到了问题。

命令:

bin/rails test

错误

TypeError: ActiveSupport is not a class
<sanatized>/ps/tekkedout-dnd-tools/test/test_helper.rb:5:in `<top (required)>'
<sanatized>/.rvm/gems/ruby-2.3.4/gems/activesupport-5.0.4/lib/active_support/dependencies.rb:293:in `require'
<sanatized>/.rvm/gems/ruby-2.3.4/gems/activesupport-5.0.4/lib/active_support/dependencies.rb:293:in `block in require'
<sanatized>/.rvm/gems/ruby-2.3.4/gems/activesupport-5.0.4/lib/active_support/dependencies.rb:259:in `load_dependency'
<sanatized>/.rvm/gems/ruby-2.3.4/gems/activesupport-5.0.4/lib/active_support/dependencies.rb:293:in `require'
<sanatized>/ps/tekkedout-dnd-tools/test/models/spell_test.rb:1:in `<top (required)>'

test_helper.rb

ENV["RAILS_ENV"] ||= "test"
require File.expand_path("../../config/environment", __FILE__)
require "rails/test_help"

class ActiveSupport
  class TestCase
    # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
    fixtures :all

    # Add more helper methods to be used by all tests here...
  end
end

更新

看起来在实施 rubocop 时我做了一些仓促的更改,但还没有开始使用我的规范。

这里是差异:

-class ActiveSupport::TestCase
-  # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
-  fixtures :all
+class ActiveSupport
+  class TestCase
+    # Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
+    fixtures :all

-  # Add more helper methods to be used by all tests here...
+    # Add more helper methods to be used by all tests here...
+  end

【问题讨论】:

    标签: ruby-on-rails ruby ruby-on-rails-5 minitest activesupport


    【解决方案1】:

    ActiveSupport 不是一个类,而是一个模块

    ActiveSupport.class
    #=> Module
    

    要修补 ActiveSupport::TestCase 类,试试这个:

    module ActiveSupport
      class TestCase
        # ...
      end
    end
    

    【讨论】:

    • 感谢您的解决方案。用解释更新我的问题。
    【解决方案2】:

    我想你想要的是:

    class ActiveSupport::TestCase
      [...]
    end
    

    ActiveSupport 是一个模块,而不是一个类。它在这里被用作TestCase 类的命名空间。这是active_support 5.0.2 中的相关代码:https://github.com/rails/rails/blob/v5.0.2/activesupport/lib/active_support/test_case.rb#L14

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 2021-10-12
      • 2017-06-12
      • 2018-04-28
      • 1970-01-01
      • 1970-01-01
      • 2023-01-11
      相关资源
      最近更新 更多