No superclass method when calling super in define_method

ruby

Solution

It's not working because you overwrite #talk. Try this

class Foo
  def talk(who, what, where)
    p "#{who} is #{what} at #{where}" 
  end
end

Foo.new.talk("monster", "jumping", "home")

class Bar < Foo
  define_method(:talk) do |*params|
    super(*params)
  end
end

Bar.new.talk("monster", "table", "home")

Problem

- Why do I get the following error `talk: super: no superclass method talk (NoMethodError)` when I override a method that already exists? - How could I fix this code to call the super method? Here is the sample code I'm using ``` class Foo def talk(who, what, where) p "#{who} is #{what} at #{where}" end end Foo.new.talk("monster", "jumping", "home") class Foo define_method(:talk) do |*params| super(*params) end end Foo.new.talk("monster", "jumping", "home") ```

Original source

Related problems