Wer meinen Artikel „Who is online?“ mit RubyOnRails gelesen hat und das ganze gleich selbst ausprobieren wollte, stand vor einem Problem: Tests.
Da wir alle ganz brave Entwickler sind, haben wir natürlich die entsprechenden Tests gleich nach dem Einbau erweitert bzw. neue geschrieben. Leider wird bei Tests kein gewöhnlicher Session-Handler genutzt, sondern ActionController::TestSession. Diesem fehlt aber das model-Attribut von ActiveRecordStore, so dass wir Fehler um die Ohren geworfen kriegen, wenn wir auf @session.model zugreifen.NoMethodError: undefined method `model' for #<ActionController::TestSession:0xb7490a18>
Tieg beschreibt in einem Beitrag in dem Blog von 12 Spokes eine mögliche Lösung. Folgendes muss in die Datei test_helper.rb eingefügt werden:
class SessionModel
def user_id= *arguments
end
def self.delete_all *arguments
end
end
class ActionController::TestSession
def model
@model ||= SessionModel.new
end
end