Sobre CMS e Ruby on Rails

Alguém havia perguntado na comunidade Ruby on Rails Brasil a algum tempo atrás sugestões sobre CMS ou código de “Blogs” escrito em Rails. Em uma das minhas divagações filosóficas deste final de semana, estava chegando a uma conclusão sobre o por que nenhum CMS feito em Rails realmente decolou (a ponto de ser um concorrente a altura do WordPress).

Posso citar algumas coisas aqui que valem ser ditas:

  1. Nenhuma empresa patrocinando (este é o principal motivo na minha opnião… projetos ambiciosos sem uma empresa por trás pagando horas de desenvolvimento, tendem a falhar)
  2. Já existe o WordPress (ou seja, qualquer coisa que seja menos atraente que ele, não vai conseguir gerar massa crítica e convencer pessoas a desenvolver temas, plugins etc).
  3. Difícil customização (este aqui é o ponto que mais pesa, se eu já não estou usando o WordPress, é por que provavelmente eu preciso customizar o projeto e não quero “sujar as mãos” com código pouco estruturado em PHP).

Nessa linha, fiquei imaginando um pouco sobre quais características um projeto de CMS poderia ter que conseguisse superar as soluções existentes e ganhar tração suficiente para conseguir seu espaço ao sol.

Várias idéias vieram em mente, e cheguei a uma conclusão interessante: não existe um CMS focado no desenvolvedor.

Parece tão óbvio se você analisar toda a frustração que existe na nossa comunidade por não existir uma solução silver bullet, que cada um acaba seguindo o caminho de criar seu próprio CMS.

De reinvenção da roda em reinvenção da roda, nós perdemos muito com a fragmentação dos esforços. Se tivéssemos alguma solução forte que fosse meio que padrão para todo mundo, poderíamos estar todos fortalencendo essa solução e nos beneficiando daquilo que o Open Source trás de melhor.

ALGUNS PROJETOS INTERESSANTES:

Eu já havia explorado algumas vezes a listagem de CMS do Ruby Toolbox, mas dessa vez estava vendo as soluções com outros olhares.

O que parece mais promissor pra mim são três projetos, e o motivo disso é que nenhum deles está pensando em concorrer com o WordPress no mesmo nível (eles não querem fazer um WordPress clone, como o pessoal do Typo).

Locomotive CMS

Este aqui é de longe o mais bonito e foi também o que mais me chamou a atenção.
Ele resolve o problema que a maioria dos CMS estão tentando resolver sem muito sucesso: Criar outros tipos de itens que não só “artigos” e “páginas”. O clássico, portifólio e produtos, que ninguém fez direito, sem as “gambiarras” dos temas.

Ele consegue organizar isso muito bem, graças ao uso do MongoDB, que em partes facilitou muito a implementação do “crud dinâmico”, mas que também gera uma dependência alienígena para um CMS, que pra mim é ponto negativo dele.

Confortable Mexican Sofa

O nome é proposital, para também formar a sigla CMS, e foi implementado na linha que eu acredito que tem futuro: Rails Engine.

Isso significa basicamente uma coisa: Você consegue “plugar” ele na sua aplicação existente.Isto resolve o problema de integração do CMS com a sua aplicação, já que ele agora faz parte dela.

Outro ponto positivo dessa solução é que ele disponibiliza via DSL própria, meios de você utilizar a mesma interface de administração que ele está utilizando para outras coisas da sua aplicação, ou seja, você consegue estender facilmente, sem muito malabarismo.

Railsyard

Desenvolvido por uma empresa de publicidade italiana, possui o visual menos atraente dos três, mas aborda o problema com uma proposta bastante diferente, ao invés de CMS, CMF: Content Management Framework.

Lembra quando comentei sobre colocar o foco no desenvolvedor?

Instalação do Nginx + Passenger no Ubuntu 12.04 via apt-get

Este artigo é uma continuação do artigo anterior, Instalação do Ruby 1.9.3 sem RVM ou Rbenv no Ubuntu 12.04.

Se você ainda não seguiu os passos de instalação sugeridos no artigo anterior, faça-os, já que eles são necessários para que os passos seguintes funcionem conforme esperado.

Como explicado no artigo anterior, estamos usando o ppa da Brightbox, que além de nos fornecer uma versão atualizada e otimizada do Ruby, também fornece uma compilação do nginx com passenger, integrados com ruby 1.8.7 ou 1.9.3.

A instalação é feita via apt-get:

Feito isto, é necessário verificar apenas o arquivo de configurações do nginx e descomentar as duas linhas mencionadas no trecho de configuração do passenger:

Com isso você tem uma instalação funcional do nginx com passenger embutido, e precisa agora apenas gerar uma configuração de virtual host.

Este ultimo passo é o que de fato vai apontar uma “pasta” do seu servidor, para ser disponibilizada pelo nginx quando alguém acessar um determinado domínio.

Vamos colocar o arquivo em /etc/nginx/sites-enabled e reiniciar o servidor (sudo service nginx restart):

Está pronto. Nginx + Passenger atendendo requisições em um virtualhost, sem precisar do RVM, do rbenv ou de compilar na mão passenger ou alguma versão do ruby.

Instalação do Ruby 1.9.3 sem RVM ou Rbenv no Ubuntu 12.04

Muitas pessoas acabam se frustrando com a instalação do Ruby / Rails quando utilizam o RVM ou o Rbenv, e principalmente na utilização desses dois para uma máquina em produção.

O motivo principal das muitas dores de cabeça é que ambas soluções funcionam alterando variáveis de ambiente da sua shell para disponibilizar algo que o sistema operacional deveria estar fazendo nativamente.

Existem situações em que usar o RVM, principalmente em ambiente de desenvolvimento é desejável, permitindo trocar de versões rapidamente e testar o código, patches de seguranças. Este artigo não quer desmerecer os usos válidos do RVM, mas se ele está te dando dores de cabeça, talvez uma solução mais simples seja o caso.

A solução proposta aqui é utilizar os padrões que o Ubuntu / Debian definiram, ou seja: Debian Packages para instalar o ruby e Update Alternatives (links simbólicos) para trocar entre as versões de ruby disponíveis.

A instalação é composta de alguns poucos comandos. Se você estiver utilizando um ubuntu server, existe um pacote adicional que precisa ser instalado, pois o mesmo não vem instalado por padrão:

O comando acima disponibiliza o “add-apt-repository“.

Para prosseguir com a instalação, vamos adicionar um ppa mantido pela Brightbox, uma empresa de hosting especializada em Ruby, do Reino Unido, e realizar a instalação dos pacotes necessários:

Os comandos acima, instalam a versão mais atualizada do ruby 1.8.7 e o comando “ruby-switch” que será responsável por trocar a versão do ruby sendo utilizada no momento, da mesma forma como o RVM e o Rbenv fazem.

Para instalar a versão 1.9.3, você deve rodar o comando a seguir (note que 1.9.1 é um padrão de numeração de versão utilizada pelo Debian, mas acredite, estamos instalando a 1.9.3)

E por fim, para alterar entre as versões:

 Bonus: ao utilizar a versão 1.9.3 disponibilizada pela Brightbox, você estará utilizando uma versão otimizada da mesma, que inclui entre outras coisas, as seguintes modificações:

Este ultimo é o meu favorito, quem ainda não leu o artigo linkado acima, deveria. O novo garbage colector da 2.0 em um resumo simplista, vai economizar muita memória no servidor em comparação com a versão 1.9.3, no entanto, graças a esse backport, você ganha a mesma melhoria já na 1.9.3

Ubuntu não está carregando? Problemas no boot?

Recentemente, por causa de uma atualização na libc (biblioteca básica do sistema), usuários que utilizam o driver proprietário da Nvidia, estavam tendo problemas para conseguir carregar o sistema operacional.

Os detalhes do problema podem ser encontrados no bug #929384 do launchpad.

Continuar lendo

Schemer, recomendações sociais do Google

Consegui um convite para acesso ao serviço a poucos minutos e gostaria de compartilhar as primeiras impressões.

Apesar da lista de espera na página inicial deles dar preferência para pessoas de algumas cidades americanas, através do convite, mesmo que você não faça parte dessas cidades é possível ainda sim ter acesso ao serviço.

Um aviso é mostrado afirmando que o conteúdo disponível na minha região seria escasso, e perguntando se gostaria de testar mesmo assim.

Isso se deve ao fato de que, para garantir o lançamento, já com conteúdo relevante, o Google teve que fazer parceria com diversas empresas do ramo de recomendações, como: Bravo, Entertainment Weekly, Food Network, LifeHacker, National Geographic, IGN entre outros. Continuar lendo

Apresentando Schemer

Se alguém está fazendo as apostas sobre qual vai ser o “next big thing” sugiro observar o que o pessoal do Google está fazendo, com o serviço recém divulgado no Youtube, atualmente em invite-only e somente para algumas cidades dos EUA.

O vídeo pode dar uma idéia do espírito que está por traz da idéia, num tom super bem humorado, parece que a questão agora não é mais “O que estou fazendo” do twitter nem toda a distração do facebook, e sim “O que mais eu posso fazer”.

 

Nginx + Passenger no Ubuntu com Upstart

Se você trabalha sério com web, provavelmente já teve que instalar o Nginx para alguma coisa. No Ubuntu a instalação é fácil e simples:

apt-get install nginx

Porém, os pacotes não estão tão atualizados quanto deveriam e, pra piorar, devido a arquitetura do Nginx, não trabalha com módulos plugáveis dinamicamente, como o Apache. Dessa forma a única alternativa de ter o Nginx com Passenger e em versão atualizada, é através do instalador disponível nos Rubygems.

A instalação passa pelos seguintes passos:

gem install passenger
passenger-install-nginx-module

Ao executar a instalação do passenger, basta seguir as instruções e instalar os pacotes que forem necessários. Ao concluir, você terá uma instalação atualizada do Nginx com suporte ao Passenger.

Neste ponto só falta configurar o Upstart para cuidar de iniciar o Nginx toda vez que o servidor for iniciado:

/etc/init/nginx.conf

Uma observação importante, para que funcione corretamente o script acima, é necessário que o pid esteja configurado corretamente no /opt/nginx/conf/nginx.conf, conforme exemplo a baixo:

pid /var/run/nginx.pid;

Como matar baratas e desenvolver software

Estava lendo alguns artigos sobre Java, mais precisamente sobre desenvolvimento Java pra Web e comecei a pensar na seguinte situação:

Vamos imaginar que você está em uma empresa que desenvolve softwares. Mais precisamente em uma apresentação para um cliente onde várias pessoas estão por perto. Eis que aparece aquela indesejada Periplaneta americana (vulgo barata) pela sala.

Parando para pensar um pouco. Existem algumas diversas maneiras de se livrar da visita inoportuna. Vamos para a mais clássica, econômica e efetiva. Você vai até ela e pisa em cima dela.

Continuar lendo

Lançado Thunderbird 3.0

Acaba de ser lançado a versão 3.0 do cliente de e-mail da Mozilla, o Thunderbird.

Agora com suporte a Tags (bem conhecidas dos usuários do Gmail) e navegação com Abas, a nova versão também traz o motor Gecko 1.9 para renderização de html (o mesmo utilizado no firefox 3).

Além da melhora na renderização dos e-mails, praticamente todos os recursos dele receberam atenção e melhoria, como é o caso dos filtros anti-spam, agora mais inteligênte, recurso de arquivamento de emails, que basicamente limpa da sua caixa de mensagens as conversas que já foram concluídas, movendo para uma pasta separada. Continuar lendo