Вы получаете это уведомление об устаревании, потому что библиотека где-то требует 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 => "?")
На практике это выглядит как несовершенный .
Это также ведет к не простой истории для создателей драгоценных камней, которые хотят поддержать 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 ..
Это говорит о том, что это камень кале .Просматривая запросы на включение, я не первый .Пул не был восстановлен.
В зависимости от драгоценного камня, может быть обновленная версия, в которой нет этой ошибки, поэтому я рекомендую сначала обновить ваши драгоценные камни.Если вам не повезло, вы можете столкнуться с неудачной задачей разветвления драгоценного камня, чтобы избавиться от этого (если, например, ваш запрос на восстановление для его исправления устарел)