Во-первых, nil не == false, однако, nil оценивается как false. Попробуйте сами, если не верите:
irb(main):001:0> nil == false
=> false
irb(main):002:0> nil == nil
=> true
Какой курс означает:
irb(main):003:0> false.nil?
=> false
Вы можете очистить свой код следующим образом, так как кажется, что @firsttime никогда нигде не установлен в true.
unless session[:visited]
session[:visited] = true
initglobals
end
Наконец, rake tmp: session: clear будет работать только в том случае, если вы используете ActiveRecordStore, если вы используете CookieStore (который используется по умолчанию). Тогда вам нужно будет очистить ваши куки или использовать reset_session.