Подтвердить что ты не робот

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! Не знаете, как отладить это.

Я скопировал и вложил все, что, по моему мнению, было бы полезно для понимания этой проблемы. Ваше время очень ценится. Спасибо.

4b9b3361

Ответ 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 и перезагрузите страницу, чтобы увидеть, что еще вы можете потерять.

Спасибо, Бен!