Mostrando postagens com marcador rails. Mostrar todas as postagens
Mostrando postagens com marcador rails. Mostrar todas as postagens

24.3.07

Plugins on Rails

Uma das features mais interessantes do Rails é o mecanismo de Plugins. Até bem pouco tempo, escrever extensões para RoR era uma tarefa confusa, já que o framework suportava plugins, engines e components.
Agora decidiram entender que nem toda flexibilidade é benéfica e unificaram a coisa toda ao redor dos plugins. No Wiki do Rails já existe bastante material sobre como utilizar os milhões de plugins já existentes. Em alguns casos, dá para desenvolver aplicações inteiras apenas juntando plugins e aparando as pontas...
Agora, se o seu negócio é mesmo desenvolver o seu próprio plugin, recomendo começar por aqui. Ao contrário da maioria das coisas no universo Ruby, o processo de desenvolvimento de plugins está bem documentado e cheio de exemplos.

22.3.07

Pegadinha Rails da semana: stale sessions

O dia hoje começou mal. Minha aplicação Rails fora do ar sem nenhum motivo aparente, e um e-mail do hosting reclamando da cota de disco estourada.
4 horas e muita busca frustrada depois, descobrimos que o /tmp/sessions da aplicação continha 300 MIL arquivos. Um arquivo para cada usuário que acessou o site DESDE O PRIMEIRO DIA. Traduzindo para bom português: descobri da pior maneira possível que o Rails CRIA os arquivos de sessão, mas não apaga.
Problema resolvido, googlei um pouco a respeito e descobri que na verdade este "bug" é uma "feature" documentada. Então fica a sugestão: antes que seu hosting venha dar um esporro em você por sua aplicaçãozinha gulosa, mude a maneira default de gerenciamento de sessões de sua aplicação para usar banco de dados ou sessões em memória. Afinal, no universo BancoDeDados, os hacks são bem mais elegantes.
Como diria o filósofo, "de perto, todas as coisas são feias"...

10.3.07

Dojo Toolkit

Uma biblioteca de Javascript com muita coisa similar ao Scriptaculous - e algo a mais.
Pra os programadores RoR, já existe também um plugin para integrar o Dojo com Rails de forma transparente, do mesmo jeito que funciona a integração scriptaculous/rails na ditribuição padrão. O componente de edição de texto (com suporte a formatação, como o editor do próprio blogger.com) é um dos mais interessantes.

8.3.07

Ferret

Na verdade um port para código nativo da ferramenta Apache Lucene, o Ferret é uma engine de texto ("full text search") rápida e com suporte a uma sintaxe bastante rica de indexação e busca. O suporte a Rails (através do plugin acts_as_ferret) é tão simples que dá até medo: vamos supor um sistema hipotético de (surpresa!) blogging. Depois de longos 5 minutos de desenvolvimento, eu já tenho meu modelo de Post:

class Post < ActiveRecords::Base
attr_accessor :text, :user, :title, :creation_date
end

Para utilizar o Ferret, é preciso primeiramente instalar o gem da engine:

gem install ferret

Após concluído o processo de instalação, precisamos também do plugin, em nosso projeto:

ruby script/plugin install svn://projects.jkraemer.net/acts_as_ferret/tags/stable/acts_as_ferret

Muito bom, muito bonito. Agora vamos à difícil tarefa de implementar o suporte a busca full text nos meus posts. Que rufem os tambores...

class Post < ActiveRecords::Base
acts_as_ferret
attr_accessor :text, :user, :title, :creation_date
end

E-pronto. Sempre que precisar fazer uma busca utilizando texto em qualquer dos campos do Post, basta utilizar-se o método find_by_contents(), definido pelo acts_as_ferret:

def buscar_comida
comida = Post.find_by_contents("torta OR bolo OR bigmac OR pizza")
end

A sintaxe utilizada para as buscas é a mesma do Lucene, que permite utilizar agrupamentos lógicos de palavras, busca por proximidade, similaridade...

Tão fácil que deu até medo.

6.3.07

JRuby 0.9.8

Saiu! A nova versão do JRuby suporta Rails, ja cobre com sucesso 98% dos test cases da linguagem original e solucionou diversos problemas de performance da versão anterior. E a versão 1.0 já está a caminho...

3.3.07

Rake for N00bs

Rake é a "linguagem de build" utilizada pelo Ruby on Rails. Trata-se de uma Domain Specific Language desenvolvida em Ruby - mais ou menos como o famoso Ant (só que sem toda a complexidade desnecessária do XML). Este artigo do Martin Fowler trás uma visão geral do Rake e suas aplicações. E para quem trabalha com Rails, uma relação das tasks incluidas no RoR.

1.3.07

Rails Handbook

Uma coletânea de referências, cheat sheets, screencasts e tutoriais sobre o Rails. Bookmark obrigatório!

26.2.07

Diários de um Captcha!

Recentemente tive o prazer de descobrir que meu sitezinho cresceu, e já é até alvo de ferramentas de spam automatizado! Quanta honra...
Ok, passado o orgulho inicial, vamos ao problema. A solução mais simples (e atualmente mais comum, Internet afora) para combater os spammers é conhecida por CAPTCHA. Em resumo, são aquelas imagens com texto distorcido, as vezes ilegíveis até mesmo por seres humanos convencionais.
Como qualquer solução no mundo Ruby, existe pelo menos uma dezena de bibliotecas de Captcha diferentes. Após testar um punhado, decidi por utilizar o plugin simple_captcha, por ser um dos mais simples de configurar e com menos dependências (somente o RMagick, veja você!). Este post mostra direitinho os passos para instalação e configuração do plugin.
Em 2 minutos estava com o plugin no ar, gerando texto distorcido para validar os posts de meus usuários. Tudo bom, tudo bonito.

Bug da Hora: unable to read font '(null)'
Como nada costuma funcionar logo de cara, o plugin resolveu entrar em greve quando fiz o deployment no servidor de produção (um box Linux):

ActionView::TemplateError (unable to read font `(null)') on line #49 of app/views/xxx/_xxxxx.rhtml:
46: <% end %>
47: <% if @map.captchaValidate %>
48:
49: <%= show_simple_captcha %>
50:
51: <% end %>

Não se trata de um problema com o simple_captcha, mas sim com o RMagick. Phew. Mais um dragão para derrubar...

25.2.07

Mephisto e o mistério do cache

Então você começou a brincar de Rails, precisava botar um Blog no ar por algum motivo e resolveu testar o Mephisto. A instalação veio fácil, o blog entrou no ar em minutos...
...e 5 dias depois, ninguém comentou no seu blog ainda - se muito, aparecia um comentário eventual por post - mesmo aquele post polêmico, xingando a mãe dos desenvolvedores Java.
Se você utiliza Apache + cgi/fcgi, é bem provável que seja um problema de configuração do Apache...

21.11.05

On Rails!

Pra quem ainda não conhece Ruby (e seu "filho" mais famoso, o framework Ruby on Rails), talvez seja hora de dar uma olhada. O videozinho introdutório do Ruby on Rails é impressionante (salvas as medidas proporções de hype, show business e exibicionismo explícito)...

27.6.05

Ruby on Rails !

Ruby é uma "linguagem dinâmica" orientada a objetos com forte influência de Python e Smalltalk. Apesar de relativamente pouco conhecida, conseguiu fãs com um certo nome na indústria de IT, como os Pragmatic Programmers Andy Hunt e Dave Thomas. É geralmente considerada limpa, expressiva e elegante.

Mas se tem uma coisa que dá para aprender estudando a história das linguagens de programação é que a popularidade delas tem muito pouco a ver com suas qualidades intrínsecas, e muito mais com o seu uso em alguma aplicação que ela torna muito mais simples de usar que as outras.

Agora Ruby já tem sua killer application, e ela se chama Ruby on Rails: um sistema completo para criação de aplicações web que vem ganhando adeptos rapidamente, a maioria dos quais sequer tinha ouvido falar da linguagem antes. Enquanto isso, a comunidade Perl se digladia em torno da versão 6 da linguagem e os pythonistas se mordem de inveja por causa do Rails (não, Zope não conta). Talvez o balanço de poder dessas linguagens se altere significantemente no futuro próximo e, se isso acontecer, o rubi nos trilhos deve ter sido o responsável.