Railties
- Corrigido bug ao usar script/about em produção.
ActionPack
- No Rails 2.2 o método ActionView::Base#render_file passa a ser privado.
- O método auto_link agora também suporta o caracter ‘ (aspas simples) no meio da url.
Algumas pessoas estão comentando que o Ruby on Rails 2.2 deve ser lançado até setembro, a tempo do RailsConf Europe, e acredito que esta é uma das novidades que mais nos interessa.
Tudo começou em setembro de 2007 quando um grupo de desenvolvedores começaram a construção de um plugin para o Rails chamado rails-I18n, que visava eliminar a necessidade de monkey patching no Rails para internacionalizar uma aplicação.
Há claro, não posso começar um artigo sobre I18n sem explicar o que isto significa. Primeiro, para entender o porque deste nome, precisamos ter um conhecimento profundo de cálculos matemáticos. Conte comigo, quantas letras temos entre o I e o n na palavra Internationalization? 18. Muito bom, I18n.
O mesmo vale para Localization e L10n.
Já viu quando um site tem aquelas bandeirinhas no topo, permitindo que você escolha em que língua quer navegar? Quando você clica em uma delas, todos os textos do site mudam para a língua correspondente daquele país.
Isto é Internationalization, ou I18n.
Claro que estou sendo muito simplista, na maioria das vezes não é só os textos que mudam de um país para outro. Não podemos nos esquecer do formato da data, fuso-horário, padrões de peso e medida. E talvez o mais importante a moeda.
Internacionalização é preparar seu software para que pessoas de outros países e línguas possam usá-lo.
Localização (L10n) é adaptar o seu produto as necessidades de um país. É como pegar um site americano que só aceita pagamento via PayPal e adaptá-lo para aceitar boleto bancário, por exemplo.
No Rails 2.2 este plugin de internacionalização será integrado ao seu código fonte.
Isto não significa que o Rails sofrerá grandes alterações. Na verdade quase nada muda no Rails, ele continuará sendo o mesmo framework de sempre, com todas as suas mensagens de validações em inglês e tudo mais.
A diferença é que se quiséssemos estas mensagem em português, ou em outro idioma, hoje, teríamos de criar um monkey patch para isto. Não posso deixar de citar como exemplo o famoso Brazilian Rails, que faz exatamente isto para traduzir as mensagens do ActiveRecord.
A novidade é que a partir do Rails 2.2 teremos uma forma padronizada e mais simples de fazer isto, usando uma interface comum.
Básicamente este gem é dividido em duas partes:
• A primeira acrescenta à API do Rails uma coleção de novos métodos, estes métodos basicamente servirão para acessar a segunda parte do gem.
• A segunda parte é um backend simples que implementa toda a lógica para fazer o Rails funcionar exatamente como funciona hoje, usando a localização en-US.
Okey, até aí, não mudou nada. A grande sacada é que esta segunda parte poderá ser substituída por uma que dê suporte à internacionalização que você deseja. Melhor ainda, uma série de plugins que serão lançados irão fazer exatamente isto.
E é claro que teremos um em português. Talvez uma adaptação do Brazilian Rails? Tomara que desta vez com um nome um pouco mais bonito…
No próximo artigo vou dar mais detalhes desta implementação, usando código.
Agora que todos já sabem o que é uma rota singular, posso comentar uma novidade no Edge Rails.
Atualmente o helper polymorphic_url não está tratando singleton resources corretamente.
Um novo patch foi incluído no Rails para permitir que especifiquemos um singular resource usando símbolos, assim como fazemos com namespaces. Exemplo:
# este código
polymorphic_url([:admin, @user, :blog, @post])
# é a mesma coisa que
admin_user_blog_post_url(@user, @post)
No código abaixo estamos usando uma partial com uma coleção de dados:
render :partial => "admin_person", :collection => @winners
Dentro da partial podemos usar então a variável admin_person para acessar os itens da coleção. Mas temos de concordar que este nome de variável é meio ruim.
Na próxima versão do Rails teremos a opção de personalizar o nome desta variável usando a opção :as. Vamos alterar o exemplo acima:
render :partial => "admin_person", :collection => @winners, :as => :person
Agora podemos acessar cada item da coleção usando a variável person que tem um nome mais intuitivo.
O método link_to recebeu uma atualização que permite seu uso com blocos. Isto é interessante para os casos onde temos textos muito longos no hyperlink. Por exemplo, se hoje fazemos assim:
Agora podemos fazer assim, que teremos o mesmo resultado:
-- Check it out!!
Não é uma mudança significativa em funcionalidade, mas permite deixar o código mais legivel, e isto também é importante.