Fernando Luizão

Desenvolvimento de software e nerdices em geral

Dica: adicionando comentários de codificação num projeto Rails

with 5 comments

O Ruby 1.9 agora leva em consideração o encoding das strings nos arquivos, então caso algum arquivo ruby tenha algum caracter não ASCII (caracteres acentuados por exemplo), será exibido o erro:

invalid multibyte char (US-ASCII)

Para que o erro não ocorra, basta adicionar o comentário abaixo na primeira linha do arquivo *.rb:

# encoding: UTF-8

Ao migrar um projeto Rails para Ruby 1.9, esse erro acontecia em vários arquivos, então nada melhor que deixar o computador resolver o problema por você :). O comando abaixo vai colocar esse comentário em todos os controllers, helpers e models do seu projeto Rails:

cd seu_projeto
find app/{controllers,models,helpers} -type f -name \*.rb | xargs sed -i '1i # encoding: UTF-8'

Para quem usa windows, pode usar o seguinte script Ruby para fazer o mesmo:

# utf_comment.rb
Dir["app/{controllers,models,helpers}/**/*.rb"].each do |filename|
  content = File.read(filename).sub(/^/, "# encoding: UTF-8\n")
  File.open(filename, "r+") { |f| f.write(content) }
end

Execute com

cd seu_projeto
ruby utf_comment.rb

Para mais informações sobre codificação de strings, aqui tem vários artigos abordando as mudanças. Recomendo a leitura!

Advertisements

Written by fernandoluizao

August 28, 2009 at 11:55 pm

Posted in Rails, Ruby

Tagged with , , , ,

5 Responses

Subscribe to comments with RSS.

  1. Fala Luizão!

    Então, tem mais dois “extras” aí:

    # Tu pode colocar esses comments nas views (entre tags de comentário no erb) para setar o encoding.
    # Os adapters dos bancos ainda são cegos para encodings, o que quebra coisa pra caralho, e não é lá muito simples incorporar isso nos adapters.

    Mereghost

    September 1, 2009 at 1:38 pm

    • Valeu pelas observações =). Sobre o erb, acho que o Rails 2.3 já coloca os comments. Não testei com outras versões, mas provavelmente é preciso colocar na mão também.
      Sofri bastante com a questão dos adapters também… no momento estou usando a gem pg com esse patch, até agora sem problemas. Um cara aplicou esse patch e colocou a gem no github, facilita pra instalar. Para outros bancos, o jeito é procurar se o adapter já tem a correção. Seria bacana se o pessoal do Rails pensasse em uma solução independente do adapter… talvez se for forçado o encoding no typecast da coluna (dentro do ActiveRecord) o problema seja resolvido “globalmente”. Vou ver se já tem algo sendo feito nesse sentido.

      Abraço

      fernandoluizao

      September 1, 2009 at 10:48 pm

  2. […] comentários de encoding. commit […]

  3. O post é antigo, e mesmo assim me ajudou hoje!
    Comentando somente para agradecer mesmo.

    Valeu!

    Roger Leite

    March 29, 2011 at 4:35 pm

  4. […] não?! Esta dica foi encontrada no site do Fernando Luizão. Posted by @kpatrickbr encoding, ruby, tips Permalink Aprendendo Ruby Tip: the Ruby 1.9 […]


Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: