【发布时间】:2013-12-12 07:36:57
【问题描述】:
我尝试了config.autoload_paths += Dir["#{config.root}/lib/**/"] 和config.eager_load_paths += Dir["#{config.root}/lib/**/"],但不断收到uninitialized constant 错误。
我认为这与 dependency_loading 被禁用有关,因为 config.threadsafe! 现在是 Rails 4 中的默认设置。
那么从 /lib 目录急切/自动加载内容的正确方法和线程安全方法是什么?
更新:/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 无法引用。
【问题讨论】:
-
您能否详细说明
uninitialized constant错误?您确定遵循所有约定以允许加载常量吗? -
@gmile:更新了更多细节。请注意,我使用的是
rails-api。
标签: ruby-on-rails-4 autoload rails-api