Ruby on rails 轨道。如何在不修改控制器文件的情况下从插件扩展控制器类?
我正在使用Rails 2.2.2。 Rails手册说,从插件扩展控制器的方法是: 插件:Ruby on rails 轨道。如何在不修改控制器文件的情况下从插件扩展控制器类?,ruby-on-rails,ruby,include,ruby-on-rails-plugins,extend,Ruby On Rails,Ruby,Include,Ruby On Rails Plugins,Extend,我正在使用Rails 2.2.2。 Rails手册说,从插件扩展控制器的方法是: 插件: module Plug def self.included(base) base.extend ClassMethods base.send :include, InstanceMethods base.helper JumpLinksHelper end module InstanceMethods def new_controller_metod ... end
module Plug
def self.included(base)
base.extend ClassMethods
base.send :include, InstanceMethods
base.helper JumpLinksHelper
end
module InstanceMethods
def new_controller_metod
...
end
end
module ClassMethods
end
end
app/controller/name_controller.rb
class NameController < ApplicationController
include Plug
...
classnamecontroller
结束
问题:如果我们知道控制器名称,是否有方法从插件扩展控制器,而不修改控制器文件。当然,如果您知道控制器名称,请
NameController.send(:include, Plug)
Rails首先初始化插件,然后初始化控制器。因此,我只能在environment.rb的末尾运行此代码。但是同样的构造:environment.rb结尾的class_eval(%{class NameControler\n include Plung\n end;})没有结果。@neutrino你的解几乎完美,但我不明白?我在哪里运行这种代码的和平?如果我在environment.rb中运行它,它将只用于第一次控制器执行。现在想不出任何特别的东西。顺便说一句,对于生产来说,这应该足够了。