Неопределенный метод `name 'для" SystemTimer ": String - PullRequest
12 голосов
/ 20 мая 2011

У меня проблема с получением старого приложения Ruby on Rails 2, которое не работало в течение года.

Я пытаюсь запустить rake test:functionals в корне каталога моего проекта, но получаю undefined method 'name' for "SystemTimer":String.

Я вставил здесь все, что, по моему мнению, имеет отношение к проблеме: http://pastebin.com/NgBvystZ

Кроме того, когда я запускаю грабли сам, я получаю Errors running test:units! Не уверен, как отладить это.

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

Ответы [ 2 ]

54 голосов
/ 08 июня 2011

Это несовместимость между версиями RubyGems больше 1.3.7 и версиями Rails меньше 2.3.12.Есть несколько способов решить эту проблему.

  1. Использовать Bundler

    Bundler прост в установке , исправляет эту проблемуи имеет ряд других преимуществ.Я очень рекомендую это.

  2. Обновление до Rails 2.3.12 или выше

    Rails 2.3.12 исправлены проблемы совместимости с RubyGems 1.8.5 (см. отчет о выпуске ).

  3. Понижение до RubyGems 1.3.7

    Я бы не рекомендовал это, если у вас нетдругой выбор.Используйте эту команду: gem update --system 1.3.7.Кроме того, версия 1.7.2 имеет частичную совместимость (она будет работать, но заморозить гемы не удастся и, вероятно, возникнут другие проблемы).

4 голосов
/ 05 ноября 2011

Я случайно наткнулся на этот поток, потому что я получил следующую ошибку при переносе некоторых установок Radiant 0.9.1 на новый сервер:

undefined method `name' for "RedCloth":String

(3) Компромиссное решение: я не проверял это лично, но я слышал, что rails 2.3 с bundler совместим с последними rubygems. Если вы заинтересованы в этом решении, см. 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"

Это всего лишь мой пример. Начните только с первых 2 строк, запустите bundle update и перезагрузите страницу, чтобы увидеть, чего еще вам не хватает.

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

...