1

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また、からへの参照を削除してもlib/ab_tests/base.rb、ロード エラーは発生しないため、単にクラスが存在するという事実だけが問題の原因ではありません。問題は、使用しようとしたときにのみ発生します。

この継承を行うにはどうすればよいですか? また、この問題が発生するのはなぜですか?

4

1 に答える 1