Эндрю Гримм в значительной степени ударил по гвоздю по голове своим оригинальным комментарием по этому вопросу. Отсутствие require 'stringio'
действительно является проблемой. Но это ошибка в Rails, точнее ActiveSupport 3.0.9 (откуда, похоже, и возникает ошибка). Мы можем отследить это, используя git commit history of rails.
Сначала нам нужно проверить рельсы и переключиться на тег v3.0.9. Если мы теперь посмотрим на activesupport/lib/active_support/xml_mini/rexml.rb
, то увидим, что require 'stringio'
там нет. Само по себе это не важно, но терпите меня. Теперь мы можем перейти к следующему тегу (v3.0.10.rc1), и мы увидим, что файл не был обновлен (вероятно, эта версия rails будет иметь ту же проблему). Следующий тег в строке v3.1.0.beta1, обратите внимание, что на этот раз в верхней части файла есть require 'stringio'
.
Мы можем проверить коммит, который привел к этому изменению ( этот здесь от 19 января 2011). Сообщение коммита говорит:
исправлено отсутствующее требование, которое вызывает проблемы при использовании AS в
не рельсы env
Это указывает на то, что, пока вы находитесь в рельсовой среде, эта проблема не возникнет. Итак, я предполагаю, что что-то из-за среды вызвало возникновение проблемы, может быть связано с тем, что OP говорит, что они используют rails 3.0.5 , но ошибка исходит от activesupport- 3.0.9 . Возможно, код был вызван из задачи граблей, которую забыли наследовать от :environment
(трудно сказать без дополнительной информации). В любом случае, размещение require 'stringio'
в верхней части кода, безусловно, является исправлением, пока вы не сможете перейти на Rails 3.1 (как только он выйдет), и в этом случае требование больше не потребуется.