ruby 1.9.3中是否存在等同于prepend方法的内容?

时间:2014-08-07 15:59:24

标签: ruby

我需要使用ruby 2.0中引入的prepend方法,在ruby 1.9.3中,不支持此方法。在ruby 1.9.3中是否有一个等效的方法?

更新

我需要使用ruby 1.9.3

module ActiveAdmin::Views::Pages::BaseExtension
  def add_classes_to_body
    super
    @body.set_attribute "ng-app", "MyApp" #I need to add this line
  end
end
class ActiveAdmin::Views::Pages::Base
  prepend ActiveAdmin::Views::Pages::BaseExtension
end

2 个答案:

答案 0 :(得分:0)

我可以使用alias_method

使其有效
class ActiveAdmin::Views::Pages::Base
  alias_method :old_add_classes_to_body, :add_classes_to_body

  def add_classes_to_body
    old_add_classes_to_body
    @body.set_attribute "ng-app", "MyApp"
  end
end

答案 1 :(得分:0)

prepend更改了核心Ruby对象模型,特别是调度消息的方式,没有办法在纯Ruby中执行此操作,因此,无法向后移植prepend功能。 / p>

prepend之前的糟糕过去,我们过去常常这样做:

class ActiveAdmin::Views::Pages::Base
  orig = instance_method(:add_classes_to_body)

  define_method(:add_classes_to_body) do
    orig.bind(self).()
    @body.set_attribute "ng-app", "MyApp"
  end
end