我有一个必须在resource_controller之前加载的插件。原因是Resourcecontroller尝试加载ApplicationController并且它依赖于所述插件(如果尚未加载插件的init.rb,则无法加载)。
问题是ResourceController来自gem而不是插件。
有没有办法在 gems之前加载插件(来自environment.rb的“config.gem ...”)?
答案 0 :(得分:2)
如果您完全依赖config.gem
来加载插件,那么在Gems之前没有现有方法可以加载插件,但这并不意味着您无法将resource_controller gem加载到您自己的手中。
作为一个非常残酷的解决方案,您可以移除相关的config.gem
行,然后在require
的底部明确地“environment.rb
”。
答案 1 :(得分:1)
对于environment.rb中的rails2.3x,将gem设置为lib => false然后在after_initialize块中需要gem
config.gem 'some_gem', :lib => false
config.after_initialize do
require 'some_gem'
end
那就行了。
答案 2 :(得分:0)
快速浏览一下Initializer.rb代码显示:
load_gems
load_plugins
# pick up any gems that plugins depend on
add_gem_load_paths
load_gems
check_gem_dependencies
如果我理解正确,宝石总是在插件之前出现...然后插件需要的一些宝石。
为什么不将resource_controller用作插件呢? 只是不要使用“config.gem ...”并将其放在插件目录中。