2013-12-10 2 views
0

Я пытаюсь отключить неиспользуемый метод в gem, который присутствует в моем приложении rails. Является ли это возможным?Отключить неиспользуемый метод в gem

+1

Какой драгоценный камень, какой метод, что вы имеете в виду под "отключить", и почему? – jstim

ответ

0

Если вы хотите удалить метод из конкретный класс (не от предков), вы должны использовать remove_method.

Если вы также хотите искать суперклассы и смешанные модули для приемника, используйте undef_method.

Существует также ключевое слово undef, которое действует как remove_method, но, вероятно, немного быстрее. Он получает имя метода (не символ или строку).

Использование:

class Parent 
    def foo; end 

    def baz; end 
end 

class Child < Parent 
    def bar; end 
end 

Child.send :remove_method, :bar # I use send for space-economy. 
           # You should reopen the class 
Child.new.bar # => NoMethodError 
Child.send :remove_method, :foo # NameError: method `foo' not defined in Child 

Child.send :undef_method, :foo 
Child.new.foo # => NoMethodError 

Parent.class_eval { undef baz } 
Parent.new.baz # => NoMethodError 
Смежные вопросы