0

試しconfig.autoload_paths += Dir["#{config.root}/lib/**/"]てみましたが、エラーconfig.eager_load_paths += Dir["#{config.root}/lib/**/"]が発生し続けます。uninitialized constant

これは、Rails 4 のデフォルトになっているように、dependency_loading無効になっていることに関係していると思います。config.threadsafe!

では、/lib ディレクトリからの内容をeager/autoloadするための適切な方法とスレッドセーフな方法は何ですか?

更新: /lib 構造

lib/car.rb:

module Car
  CAR_TYPES = %w[volvo saab]
end

lib/car/volvo.rb:

module Car
  class Volvo
  end
end

スローされるエラーはNameError (uninitialized constant Car::CAR_TYPES)

更新 2: rails c:

Car.class 
=> Module
Car::CAR_TYPES
=> NameError: uninitialized constant Car::CAR_TYPES

更新 3: 興味深いことに、Car::Volvo.new動作しますが、Car::CAR_TYPES を参照することはできません。

4

1 に答える 1

0

おっと。私のアプリケーションは実際には Car とも呼ばれていましたが、奇妙なことに、その名前空間は既に使用されていましたCar.constants => [:Application]。を別のものに変更するmodule Carと問題が解決し、Cars::CAR_TYPES再度参照することができました。

Carは既に ( で) 定義されているためapplication.rb、オートロードは をロードしようとさえしませんlib/car.rb。詳細な説明については、 https://stackoverflow.com/a/6797707/377920を参照してください。

于 2013-11-26T23:03:59.340 に答える