Refactoring: Query Method

Temporay variables tend to be a code smell. They make methods longer and harder to reason about the method itself. Eventually they map logic, which itself is not necessarily important for the meaning at first. Further going refactoring steps (e.g. Extract Method) can be hindered by temporary variables.
Fir instance the class Person contains a public method adult?, determining if the person is an adult or not:

class Person
  attr_accessor :birthday

  ADULT_AGE = 18 

  def adult?
    return false if birthday.nil?
    years_since_birthday = Date.today.year - birthday.year
    years_since_birthday >= ADULT_AGE
  end
end

Extracting the temporary variable years_since_birthday into a dedicated method makes totally sense. The method adult? becomes more concise. Another benefit is the possible reuse of the method in different context:

class Person
  attr_accessor :birthday

  ADULT_AGE = 18 

  def adult?
    return false if birthday.nil?
    years_since_birthday >= ADULT_AGE
  end

  private

  def years_since_birthday
    Date.today - birthday.year
  end
end

However the Query Method approach should not be exercised at all costs. At least temporary variables make sense, if the their logic is applied multiple times in the same method and its repeated calculation would drive a performance loss.