2009-09-08 76 views
3

我有一个必须在resource_controller之前加载的插件。原因是Resourcecontroller试图加载ApplicationController,它取决于所述插件(并且如果插件的init.rb尚未加载,将无法加载)。如何在Rails中控制gems vs plugins加载顺序

问题是ResourceController来自gem而不是插件。

有没有办法加载插件之前的宝石(从environment.rb的“config.gem ...”)?

回答

2

如果您完全依赖config.gem来加载它们,那么在gem之前没有加载插件的方法,但这并不意味着您无法将resource_controller gem加载到您自己的手中。

作为一个非常残酷的解决方案,您可以删除相关的config.gem行,然后明确地“require”它在environment.rb的底部。

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 ...”并将其放入plugins目录中。

1

对于environment.rb中rails2.3x设置你的宝石LIB =>假,然后需要在after_initialize块

config.gem 'some_gem', :lib => false 
config.after_initialize do 
    require 'some_gem' 
end 

这会做到这一点的宝石。