Я столкнулся с некоторыми довольно странными проблемами, связанными с хранилищем файлов cookie в приложении, которое я обновил с Rails 3.0.10 до Rails 3.1.
Я могу выделить ошибочные спецификации для этого:
class TestController
before_filter :check_cookie
def index; end
private
def check_cookie
if cookies.signed.present?
cookies.delete(:test)
end
end
end
Все спецификации, вызывающие фильтр check_cookie, завершаются с ошибкой, например:
NoMethodError:
You have a nil object when you didn't expect it!
You might have expected an instance of Array.
The error occurred while evaluating nil.delete
# ./app/controllers/test_controller.rb:10:in `check_cookie'
Для дальнейшей отладки я попытался добавить инструкцию к выводу cookies.signed
, прежде чем пытаться вызвать delete
:
if cookies.signed.present?
puts "Knock, knock? #{cookies.signed.respond_to?(:delete)}"
...
Это выводит "true", но спецификации по-прежнему не работают.
Запуск Rails 3.1.0 с Rspec 2.6.0.
Есть идеи, как это исправить? Спасибо!