I'm trying to monkeypatch the = method in the Hash class:
Hash.class_eval do
def _with_feature=(a,b)
puts 'foo'
end
alias_method_chain :=, :feature
end
Something is wrong with the syntax, but I can't figure out what. The
alias_method_chain method does look for punctuation (= in this case)
and expects it to be at the end of the aliased method (
_with_feature=), but I get the following syntax error:
So how in the world is this implemented? The = method’s source code is in C. Other classes override it in a subclass, which works fine, but how would I go about implementing a method that works like the Hash class’ = method?
I’m not sure what you mean by “skipping alias_method_chain” this time. If I do
alias :_without_feature=, :=
alias :=, :_with_feature
I get the same error, as expected. So how would I go about changing this method’s behavior?
So how in the world is this implemented? The = method's source
code is in C. Other classes override it in a subclass, which works
fine, but how would I go about implementing a method that works like
the Hash class' = method?
I'm not sure what you mean by "skipping alias_method_chain" this
time. If I do
alias :_without_feature=, :=
alias :=, :_with_feature
I get the same error, as expected. So how would I go about changing
this method's behavior?
just call it square_bracket_without feature or something like that.
the problem isn;t the method aliasing it's defining a method called
_with_feature=