Rails - 为什么RAILS_ROOT/lib中的模型在生产模式下不可用?

sa1*_*125 5 ruby-on-rails production-environment

我有一个位于RAILS_ROOT/lib文件夹中的类,我在其中一个帮助器中使用它,它在开发中很有用.

当我切换到生产时,应用程序抛出一个NameError (uninitialized constant SomeHelper::SomeClass),我必须在帮助器中手动加载它:

load "#{Rails.root}/lib/some_class.rb"

module SomeHelper
  def some_method
    sc = SomeClass.new
    # blah
  end
end
Run Code Online (Sandbox Code Playgroud)

我的印象是RAILS_ROOT/lib/*里面的所有内容都应该可以在应用程序中使用 - 我需要配置什么才能在prod模式下实现这一点?谢谢.

Voj*_*jto 1

当你调用 SomeHelper::SomeClass 时,Rails 的自动加载机制将尝试加载 lib/some_helper/some_class.rb 处的文件

Rails 不会加载 lib/* 中的所有内容,它只会在发生 ConstMissing 时尝试加载文件。