Vous recevez cet avis de dépréciation parce qu'une bibliothèque quelque part a besoin de iconv
.
icônev est un bijou créé par Matz qui peut être utilisé pour convertir des chaînes de caractères d'un format à un autre.
Par exemple, ceci est souvent utilisé :
Iconv.iconv('UTF-8//IGNORE', 'UTF-8', content)
Ce petit tour de passe-passe prend une chaîne UTF-8 qui peut contenir des caractères invalides et la convertit en une chaîne UTF-8 correcte.
Il a été décidé qu'à partir de la version 1.9.3 de Ruby, nous n'utiliserions plus iconv, mais la fonction intégrée Chaîne#encoder . encode
est plus puissant et vous offre plus de flexibilité.
La théorie est que l'exemple ci-dessus pourrait être remplacé par :
string.encode("UTF-8", :invalid => :replace, :undef => :replace, :replace => "?")
En pratique, il semble que ce soit imparfait .
Cela conduit également à une histoire moins facile pour les créateurs de gemmes qui souhaitent prendre en charge la version 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 => '')
Donc, vous avez un joyau quelque part qui a besoin d'iconv, pour le trouver :
En supposant que votre message d'erreur est : /gems/activesupport-3.1.0/lib/active_support/dependencies.rb:240
Ouvrez /gems/activesupport-3.1.0/lib/active_support/dependencies.rb
sur la ligne 240 :
Ajoutez la ligne :
p caller if file =~ /iconv/
(juste après : load_dependency(file) { result = super }
)
Vous obtiendrez une grosse trace de la pile :
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 ..
Cela me dit que c'est le calais gem. En regardant les demandes de pull, je je ne suis pas le premier . La traction n'a pas été tirée.
Selon la gemme, il peut y avoir une version mise à jour qui n'a pas cette erreur, donc je vous recommande de mettre à jour vos gemmes en premier. Si vous n'avez pas de chance, vous pouvez être coincé avec la tâche malheureuse de forker une gemme pour vous débarrasser de cette erreur (si par exemple votre pull request pour la corriger languit).