Я предлагаю вам просто использовать key.to_s
в качестве быстрого обходного пути.
Причина вашей проблемы может заключаться в том, что некоторые версии некоторых компонентов отличаются между вашим тестовым сервером и рабочим сервером.Если ваши тесты пройдены, и ваша производственная среда дает сбой, это очень плохая ситуация.
Вам следует сравнить версии ruby и все используемые вами гемы.Если вы используете 'bundler', то 'bundle list' дает хорошую сводку.
Если вы обнаружите, что все версии одинаковы ... Что ж, мы будем искать другую причину.
Обновление
Похоже, что проблема вызвана не различиями версий, а непредвиденными данными во флэш-памяти, которые, очевидно, в производственной среде могут отличаться от тестовых.
Я предлагаю вам немного изменить метод myModelFlash
.
def myModelFlash( key )
if m = /^_mymodel_(.*)/.match(key.to_s)
return m[1]
end
end
Флэш-память может содержать разные ключи, некоторые из них могут быть символами или вообще чем-то, поэтому вы должны быть готовы справиться со всемииз них.
Преобразование параметра key
в .to_s
должно быть безопасным выбором, но если вы уверены, что всегда устанавливаете клавиши флэш-памяти (я имею в виду клавиши, связанные с этой проблемой "_mymodel")в качестве строк вы можете изменить первую строку этого метода:
def myModelFlash( key )
if key.is_a?(String) && m = /^_mymodel_(.*)/.match(key.to_s)
return m[1]
end
end
И в своем тесте добавьте несколько других ключей к вашей флэш-памяти, а затем проверьте, как действие обрабатывает их.