Undefined метод `name 'для "SystemTimer": String
У меня возникла проблема с получением старого приложения Ruby on Rails 2, которое не работало в течение года.
Я пытаюсь запустить rake test:functionals
в корне моей директории проекта, но я получаю undefined method 'name' for "SystemTimer":String
.
Я вложил все, что, по моему мнению, относится к проблеме здесь:
http://pastebin.com/NgBvystZ
Кроме того, когда я запускаю рейк, я получаю
Errors running test:units!
Не знаете, как отладить это.
Я скопировал и вложил все, что, по моему мнению, было бы полезно для понимания этой проблемы. Ваше время очень ценится. Спасибо.
Ответы
Ответ 1
Это несовместимость между версиями RubyGems больше 1.3.7 и версиями Rails меньше 2.3.12. Есть несколько способов решить эту проблему.
-
Использовать Bundler
Bundler прост в установке, исправляет эту проблему и имеет ряд других преимуществ. Я очень рекомендую его.
-
Обновление до Rails 2.3.12 или выше
Rails 2.3.12 исправлены проблемы совместимости с RubyGems 1.8.5 (см. отчет о выпуске).
-
Переход на RubyGems 1.3.7
Я бы не рекомендовал этого, если у вас нет другого выбора. Используйте эту команду: gem update --system 1.3.7
. Кроме того, версия 1.7.2 имеет частичную совместимость (она будет работать, но замораживание драгоценных камней завершится неудачно, и есть другие проблемы).
Ответ 2
Я использовал этот поток, потому что при переносе некоторых установок Radiant 0.9.1 на новый сервер я получил следующую ошибку:
undefined method `name' for "RedCloth":String
(3) Компромиссное решение: я не проверял это лично, но я слышал, что рельсы 2.3 с пакером совместимы с последними рубигемами. Если вы заинтересованы в этом решении, см. http://gembundler.com/rails23.html, чтобы заставить связной работать под rails 2.3.
Для меня решение 3 было единственным вариантом, так как у нас были другие приложения, которым нужны последние рубигемы в системе.
Просто установите пакет и выполните действия, описанные на этой странице:
http://gembundler.com/rails23.html
И поместите это в файл под названием "Gemfile" в корне приложения:
source :gemcutter
gem "radiant", "0.9.1"
gem "sanitize"
gem "fastercsv"
gem "rmagick"
gem "rack", "~> 1.1.0"
gem "rake", ">= 0.8.3"
gem "RedCloth", ">= 4.0.0"
gem "will_paginate", "~> 2.3.11"
gem "mysql"
Это только мой пример. Начните только с первых двух строк, запустите bundle update
и перезагрузите страницу, чтобы увидеть, что еще вы можете потерять.
Спасибо, Бен!