Ruby on rails Rails-为什么Rails\u ROOT/lib中的模型在生产模式下不可用?
我在RAILS_ROOT/lib文件夹中有一个类,我在我的一个助手中使用它,它在开发中非常有用 当我切换到生产环境时,应用程序抛出一个Ruby on rails Rails-为什么Rails\u ROOT/lib中的模型在生产模式下不可用?,ruby-on-rails,production-environment,Ruby On Rails,Production Environment,我在RAILS_ROOT/lib文件夹中有一个类,我在我的一个助手中使用它,它在开发中非常有用 当我切换到生产环境时,应用程序抛出一个名称错误(未初始化的常量SomeHelper::SomeClass),我必须在helper中手动加载它: load "#{Rails.root}/lib/some_class.rb" module SomeHelper def some_method sc = SomeClass.new # blah end end 我的印象是RAIL
名称错误(未初始化的常量SomeHelper::SomeClass)
,我必须在helper中手动加载它:
load "#{Rails.root}/lib/some_class.rb"
module SomeHelper
def some_method
sc = SomeClass.new
# blah
end
end
我的印象是RAILS_ROOT/lib/*中的所有内容都应该可以在应用程序中使用-是否需要进行配置才能在prod模式下实现这一点?谢谢。当您调用SomeHelper::SomeClass时,Rails的自动加载机制将尝试在lib/some\u helper/some\u class.rb加载文件
Rails不会加载lib/*中的所有内容,它只会在ConstMissing发生时尝试加载文件。您可能需要检查开发环境和生产环境之间配置设置的差异:
config/environments/production.rb
和config/environments/development.rb
在Rails初始化例程中,调用加载插件(),加载config.plugin\u路径中的所有插件。您需要确保包含文件夹lib/
,如中所示
config.plugin_path=[“#{RAILS_ROOT}/lib/plugins”,“#{RAILS_ROOT}/vendor/plugins”]
除了config.plugins\u路径
,您还可以命名应在config.plugins
中加载的插件。如果该变量包含:all
,则将加载所有插件(找到的)
(顺便说一句:与任一环境相同的配置设置应该放在config/environment.rb
中。环境之间的任何差异都是由于相应的.rb
文件中的设置造成的。)