我试图让一些类继承自 Rails lib 目录中的基类。
设置如下:
#lib/ab_tests/base.rb
module AbTests
class Base
# some methods...
end
end
#lib/ab_tests/first_test.rb
module AbTests
class FirstTest < AbTests::Base
# some methods...
end
end
config/application.rb
我以相当标准的方式要求这些文件
config.autoload_paths += %W(#{Rails.root}/lib/ab_tests)
但是,每当我尝试启动服务器时,都会遇到致命错误LoadError
:
[some path].../activesupport-3.2.12/lib/active_support/dependencies.rb:503:in `load_missing_constant': Expected [project name]/lib/ab_tests/base.rb to define Base (LoadError)
我已经尝试了以下两种方法,每次都是同样的问题。
#lib/ab_tests/first_test.rb
class FirstTest < ::AbTests::Base
#lib/ab_tests/first_test.rb
class FirstTest < Base
此外,如果我删除对AbTests::Base
from的引用,lib/ab_tests/base.rb
则不会出现加载错误,因此导致问题的不仅仅是类存在的事实。只有当我尝试使用它时才会出现问题。
我怎样才能完成这种继承,为什么会出现这个问题?