In manchen Situationen ist es alles andere als offensichtlich, welche Klasse oder welches Modul eine Methode bereitstellt. Wer implementiert die Get-Methode für Rspec-Controller-Tests? Gerade in solch zusammengewürfelten Umgebungen ist das nur schwer nachvollziehbar. Ruby hilft hierbei: Die Metamethode method gibt Auskunft, woher eine Methodendefinition stammt:
require "rails_helper"
RSpec.describe MyController do
it do
puts method(:get)
end
end
# => #<Method: RSpec::ExampleGroups::MyController(ActionController::TestCase::Behavior)#get>
Das Beispiel zeigt nicht nur die Klasse, sondern auch das includete Modul, welches für die Methode verantwortlich ist. Dies hilft beim Googeln oder man verwendet Ri:
ri ActionController::TestCase::Behavior#get