Вы получаете это уведомление об изнашивании, потому что библиотека где-то требует iconv
.
iconv - это драгоценный камень, созданный Matz, который может быть использован для преобразования строк из одного формата в другой.
Например, это часто используется:
Iconv.iconv('UTF-8//IGNORE', 'UTF-8', content)
это немного магии принимает строку UTF-8, которые могут иметь недопустимые символы и преобразует его в правильной кодировке UTF-8 строку.
Было принято решение, что в Ruby 1.9.3 мы больше не должны использовать iconv и вместо этого использовать встроенный String#encode. encode
является более мощным и обеспечивает большую гибкость.
Теория заключается в том, что в приведенном выше примере можно заменить:
string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?")
На практике это, кажется, это imperfect.
Это также приводит к менее чем простой истории для драгоценных создателей, которые хотят поддержать 1,8:
content = RUBY_VERSION.to_f < 1.9 ?
Iconv.iconv('UTF-8//IGNORE', 'UTF-8', "content") :
"#{content}".encode(Encoding::UTF_8, :invalid => :replace, :undef => :replace, :replace => '')
Итак, у вас есть драгоценный камень где-то, что требует Iconv, чтобы найти его:
Если предположить, что сообщение об ошибке: /gems/activesupport-3.1.0/lib/active_support/dependencies.rb:240
Открывает /gems/activesupport-3.1.0/lib/active_support/dependencies.rb
на линии 240:
Добавить строку:
p caller if file =~ /iconv/
(только после того, как: load_dependency(file) { result = super }
)
Вы получаете большой стек жир след:
rake --tasks
/home/sam/.rvm/gems/ruby-1.9.3-p125/gems/activesupport-3.2.6/lib/active_support/dependencies.rb:251:in `block in require': iconv will be deprecated in the future, use String#encode instead.
["/home/sam/.rvm/gems/ruby-1.9.3-p125/gems/calais-0.0.13/lib/calais.rb:5:in `'",
.. more omitted ..
Это говорит мне, что это calais камень. Просматривая запросы на тяну, я am not the first. Тянуть не рывком в.
В зависимости от драгоценных камней, может быть обновленная версия, которая не имеет эту ошибку, так что я бы порекомендовал вам обновить ваши драгоценные камни первого. Если вам не повезет, вы можете быть застряли с неудачной задачей разветвления драгоценного камня, чтобы избавиться от этого (если, например, вашего запроса тянуть, чтобы исправить это томится)
Просто добавив «р вызывающему» на линии до load_dependency линии и смотрит через стек следы становится довольно легко перетасовать через Gemfile и зафиксировать УСТАРЕВШИМИ драгоценные камни. –
Я думаю, что самый простой способ - просто добавить 'puts '>>>> # {file.inspect}" 'прямо перед' load_dependency', тогда вы можете увидеть, какая загрузка файла вызвала сообщение. –