Blog da Improve It

Plugin Brazilian Rails

Publicado por Marcos Tapajós há mais de 3 anos.

Acabei de publicar no RubyForge a primeira versão do plugin Brazilian Rails.

Desde que eu comecei a programar em Ruby, usando o Ruby on Rails, sempre adorei o sistema de plugins, onde facilmente podemos incorporar novas funcionalidades que atendem a vários projetos.

Sempre tive vontade de colocar nossos códigos disponíveis como plugins mas nunca tive tempo para fazer isso. Inevitavelmente continuo sem tempo mas agora estou contando com um time de amigos que resolveram me ajudar. São eles:

Esse plugin surgiu da necessidade de usar o método error_messages_for para sinalizar na camada de vista os erros encontrados nas validações do nosso modelo. Essas mensagens eram em inglês, o que fazia com que os desenvolvedores tivessem que implementar algo semelhante no RHTML.

Acabamos notando que várias outras coisas poderiam ficar mais simples aos brasileiros usando-as como estamos acostumados. Por exemplo, nosso formato padrão de data é DD/MM/AAAA mas Ruby não trabalha da mesma forma. Para solucionar esse problema fizemos uma implementação que modifica o método to_date do modulo String para lidar com esse nosso formato.

Esse nosso primeiro release não abrange todas as nossas implementações mas resolvemos publicar o quanto antes para poder contar com o feedback dos nossos usuários e melhorar continuamente.

Trata-se de um projeto Open Source, onde gostaríamos de contar com a colaboração da comunidade Brasileira com sugestões e quem sabe com novos desenvolvedores. Minha única exigência com relação aos patches é que eles venham acompanhados de testes.

Quem quiser experimentar nosso plugin basta executar uma única linha e reiniciar sua aplicação Rails.

script/plugin install -x \
svn://rubyforge.org/var/svn/brazilian-rails

Como temos vários tipos de códigos diferentes devemos fazer outros plugins em breve !

Tags , , , , , , , , ,  | 16 comentários

O que você achou? Coloque seus comentários e sugestões abaixo!

Acompanhe o RSS dessa página.

Comentários (16 até o momento)

  1. Vinícius Manhães Teles disse 39 minutos depois:

    Tapajós,

    Muitíssimos parabéns! Excelente iniciativa!!!

    Grande abraço, Vinícius.

  2. Vinícius Manhães Teles disse 41 minutos depois:

    Ooopssss. Melhor dizendo, parabéns ao Tapajós, André, Celestino, Rafael, Manfroi e Luciene! :-)

    Grande abraço, Vinícius.

  3. Eduardo Fiorezi disse aproximadamente 11 horas depois:

    Excelente pessoal,

    Tapajós vc me deixou 2 dias olhando o blog da improveit.... fiquei morrendo de curiosidade... Parabéns pela iniciativa de todos..

    Abraços, Eduardo

  4. Marcos Tapajós disse aproximadamente 12 horas depois:

    :-)

    Eduardo, eu queria por antes, mas o RubyForge demora umas 24 horas para aprovar o projeto.

    Um abraço

  5. JACKSON PIRES disse 1 dia depois:

    Legal, vou tentar instalar e usar.... A princípio uma ótima iniciativa... ahh e quanto à documentação, já vem junto com o plugin?

  6. Marcos Tapajós disse 1 dia depois:

    Jackson, a documentação ainda pode ser melhorada. Espero fazer isso em breve.

  7. Davis disse 3 meses depois:

    Estou tendo problemas no uso da classe Dinheiro nos models. Fiz como no exemplo, mas ocorrem os seguintes erros: undefined method `price_decimal' for "":String E no console quando tento atribuir @objeto.price = 100 que price não é um método válido. Alem de uma mensagem de erro do plugin. Sabem dizer o que pode ser? Valeus!
  8. Davis disse 4 meses depois:

    Saquei um problema.

    Quando eu crio meu objeto, e ele fica com o campo "price" sem ser inicializado (sem nenhum valor atribuido), quando tento acessar self.price ou self.send('price') é disparada uma exceção da linha 164 do dinheiro.rb

    Teria como ajustar para caso o valor de "quantia" seja nil, 0 ou '' ele retorne '0,00'?

  9. Tapajós disse 4 meses depois:

    Davis, vou verificar melhor isso. Estou trabalhando para melhorar o uso no modelo.

    Um abraço

  10. Gustavo Cardoso disse 5 meses depois:

    Não esotu conseguindo instalar pel amaneira tradicional, script/plugin install. Tem outra opção!?!

  11. flaubert disse 10 meses depois:

    cOMO SOLUCIONAR O PROBLEMA ao enviar a data formatada (brasil) para o banco, que soh aceita o formato americano??

    valeu!

  12. G. Sobrinho disse aproximadamente 1 ano depois:

    E aí, blz?

    Primeiramente, parabéns pela iniciativa...

    Pelo que vi o projeto tá "meio parado". Vocês pararam de atualizar o plugin?

    Outra coisa, o link de instalação não está funcionando mais... Verifiquem isso ;)

    Abraços

  13. Tapajós disse aproximadamente 1 ano depois:

    G. Sobrinho,

    Dá uma verificada nesse post que você vai entender as mudanças que aconteceram.

  14. Ivaldo disse aproximadamente 1 ano depois:

    Hei...

    Poderiam especificar melhor onde posso por o require dos plugins, eu declarei no meu enviroment.rb e funcionou todas as chamadas á api... porém as minhas datas, mesmo em portugues, continuam no formato yyyy\mm\dd, e os scaffolds são gerados em ingles... :(

  15. Vitor Kiyoshi Arimitsu disse aproximadamente 1 ano depois:

    Olá!

    Não encontrei um lugar mais apropriado para postar isso então estou colocando aqui. Notei que o helper para a criação de select com estados brasileiros não selecionava o Estado atual cadastrado quando eu queria editar um registro. Resolvi o problema editando o arquivo br_ form _ options_helper.rb conforme em negrito abaixo:

    # Retorna uma string com a lista de estados brasileiros para usar em uma tag select, # com exibição do nome do estado, mas armazenando a sigla.

    def optionestadosfor_select(selected = nil)

    optionsforselect (ESTADOS_BRASILEIROS, selected)

    end

    # Retorna uma string com a lista de estados brasileiros para usar em uma tag select, # com exibição e armazenamento a sigla.

    def optionuf_forselect(selected = nil)

    optionsforselect (ESTADOS_BRASILEIROS.collect {|nome,sigla| sigla}, selected)

    end

    Espero que possa ter ajudado alguém com esse problema!

    Abraços

  16. Vitor Kiyoshi Arimitsu disse aproximadamente 1 ano depois:

    ahh... ja ia me esquecendo. na view, para renderizar é só colocar o nome do campo entre parenteses. Por ex.:

    optionuf_forselect(@user.estado)