1

TestModuleに含めたいMyModule:

# in test_module.rb
module TestModule
    SOMETHING = [1, 2, 3]
end

# in my_module.rb
module MyModule
    include TestModule

    def my_method
        "testing"
    end
end

次のエラーが表示されます。

Routing Error: uninitialized constant MyModule::TestModule

Railsの命名規則を再確認しました。なぜこれが機能しないのか考えていますか?

詳細: config.autoload_paths += ...inapplication.rbはコメント アウトされています。ただし、他のモジュールは/lib何らかの形でロードされています。

詳細 2 : Rails は新しいファイルを認識できないと思いますtest_module.rb。モジュールを含む既存のファイルに新しいモジュールを追加すると、新しいモジュールが機能します。$LOAD_PATH などにある種のレールのクリーンアップまたは更新プロセスはありますか?

4

2 に答える 2

2

これを試すこともできます:

# in my_module.rb

load 'test_module.rb'

module MyModule
   include ::TestModule

   def my_method
      "testing"
   end
end

最上位の名前空間を参照します。

于 2012-04-04T19:02:44.540 に答える
2

次のように、ファイルの先頭に「require」を追加してみてください。

# in my_module.rb
require 'test_module'
module MyModule
  include TestModule
  ...
于 2012-04-04T18:46:51.870 に答える