Rails

Instalando sua aplicação Rails/RestfulX (e as gems) na DreamHost

Apesar dos muitos comentários negativos que ouvi por aí sobre a DreamHost, até hoje não tive problemas: mantenho este blog hospedado lá há quase um ano e não tenho do que reclamar.

Esses dias resolvi colocar uma aplicação em Flex/Rails (com RestfulX) para rodar no servidor e não tive problemas. A única “pequena dificuldade” que tive foi para entender como funciona a instalação das gems no servidor deles, o que é muito simples.

Primeiro criei um subdomínio com suporte a Passenger (o que exigia que o diretório web terminasse com “public/”), conforme screenshot a seguir:

Leia o restante desta postagem »

CRUD com o RestfulX: Parte 2/2 – Create, Update e Delete

No último artigo que eu escrevi sobre CRUD com o RestfulX eu falei apenas sobre como obter os dados do servidor (retrieve). Neste artigo vou mostrar como funcionam as outras “letras” do acrônimo: criar, atualizar e apagar um registro (Create, Update e Delete).

Vou continuar usando o mesmo exemplo e aproveitar os conceitos explicados anteriormente. Por isso, se você não leu o artigo anterior, sugiro humildemente que faça isso antes de prosseguir … ;-)
Leia o restante desta postagem »

CRUD com o RestfulX: Parte 1/2 – Retrieve

Vou criar aqui um exemplo bem simples para mostrar como funcionam as operações básicas em banco de dados, conhecidas através do acrônimo CRUD (Create, Retrieve, Update e Delete), com o RestfulX.

O projeto é simples (outro daqueles que todo mundo já fez na vida): um cadastro de eventos e participantes destes eventos. Este exemplo irá evoluindo conforme for aumentando a complexidade dos artigos.
Leia o restante desta postagem »

Instalação “avançada” do RestfulX no seu projeto Rails

Após criar seu projeto no Rails usando o comando rails , você pode configurá-lo para usar o RestfulX através do comando script/generate rx_config. Este comando cria todos os arquivos de configuração do RestfulX e faz o download da biblioteca do framework (arquivo restfulx_framework.1.2.4.swc, que é a versão mais recente enquanto escrevo este artigo).

Mas você também pode fazer o download do projeto restfulx_framework e incluí-lo no seu projeto no Flex Builder. Para isso, faça o download do fonte do framework usando o git: git clone git://github.com/dima/restfulx_framework.git. Agora você pode gerar os arquivos de configuração: script/generate rx_config --skip-framework. Com a opção --skip-framework, o comando generate rx_config vai gerar os arquivos de configuração mas não vai fazer o download da biblioteca do RestfulX.
Leia o restante desta postagem »

Introdução ao RestfulX

Apesar de já ter escrito dois artigos sobre o assunto (um screencast e um tutorial), este artigo é o primeiro de uma série que pretendo escrever sobre o RestfulX, um framework incrível para quem quer integrar o Flex (ou AIR) ao RubyOnRails, Google App Engine, CouchDB, SQLite ou até mesmo integrar com o Juggernaut (plugin para o Rails para envio de mensagens do servidor para o cliente – server-push). Nos primeiros artigos eu vou focar a integração do Flex com o Rails. Assim como toda aula introdutória, este artigo vai ser um pouco “conceitual”, mas não por isso será menos importante que os artigos onde eu mostro algum código.

A idéia principal do RestfulX é trazer para o Flex os princípios de desenvolvimento do Rails, seguindo o conceito REST de comunicação entre cliente e servidor. Por exemplo, se definirmos no Rails que um projeto tem muitas tarefas, podemos fazer o seguinte no Rails:

@projeto = Projeto.new
@tarefa = Tarefa.new
@tarefa.projeto = @projeto
@projeto.tarefas.size          # O resultado é 1

O que o RestfulX faz é trazer toda essa facilidade para o Flex (através do ActionScript):

var proj:Projeto = new Projeto;
var tarefa:Tarefa = new Tarefa;
tarefa.projeto = proj;
proj.tarefas.length;       // O resultado é 1

Leia o restante desta postagem »

Criando XML no Rails com caracteres acentuados

XMLHá aproximadamente um ano atrás me deparei com um problema: precisava gerar um arquivo XML a partir dos dados que eu tinha no BD, para fazer a integração com um sistema externo. O meu problema era que, ao criar o XML, os caracteres acentuados eram mostrados codificados. Por exemplo, no lugar do ã era mostrado o código ã.

Me lembro que recorri a listas de discussão, fóruns, trabalhei com o ICONV, unpack, tentei fazer conversão entre conjuntos de caracteres e outras coisas… só não fiz uma reza braba porque não dava tempo.

Como o problema era com um único campo, acabei encontrando outra solução mais prática do que técnica, que me atendeu muito bem na época.

Mas agora, 12 meses depois, me deparei com o mesmo problema, só que agora precisava exportar não apenas um campo, mas uma série de campos. Remover os caracteres acentuados seria inviável, pois não se tratava apenas de um nome de uma pessoa, mas de um relatório. Comecei novamente a caçada pela solução.

Leia o restante desta postagem »

RestfulX – Introdução, instalação, configuração e primera aplicação em 5 minutos

O RestfulX é um framework que se propõe, basicamente, a trazer para o Flex a abstração que o Rails faz da camada de dados. Ele possui um conjunto de geradores de código que facilitam o trabalho de programação ao automatizar tarefas repetitivas, como criar Value Objects (VOs) e tratar a comunicação com o backend para realizar operações de manipulação do banco de dados – criar, recuperar, atualizar e apagar registros, operações conhecidas sob o acrônimo CRUD (Create, Retrieve, Update e Delete).

Toda a geração de código é baseada no Rails, mas você não é obrigado a utilizar o Rails como backend. Você também pode armazenar seus dados no Google App Engine (GAE), ou até gerar uma aplicação em AIR que acesse dados em uma base SQLite, dispensando conexão com a internet ou a instalação de um webserver / SGBD na máquina local.
Leia o restante desta postagem »

Precedência dos operadores em Ruby

O Ruby é, sem dúvida, uma linguagem interessante. Tenho observado algumas peculiaridades que não me lembro de ter visto em outras linguagens. Uma dessas peculiaridades é a precedência de operadores, mais especificamente em relação aos operadores lógicos.

O Ruby dispõe duas formas de se fazer uma comparação lógica. Por exemplo, você pode usar && ou and, || ou or e ! ou not. No fundo, as operações são iguais, mas a diferença está na precedência desses operadores. Os operadores &&, || e ! têm maior precedência sobre os operadores and, ou e not. Dessa forma, o bloco a seguir não funcionaria se colocássemos && no lugar de and. Se fizéssemos isso, o Ruby primeiro faria a comparação entre f(x) e b para depois atribuir o resultado a a e não o contrário, como era esperado.

if a = f(x) and b = f(y) and c = f(z) then puts "Resultado" end

Leia o restante desta postagem »

Usando checkboxes em uma relação habtm no Rails

Uma dúvida muito comum entre quem está começando a programar em Rails é como colocar uma série de checkboxes que representam uma relação habtm (has_and_belongs_to_many, ou muitos-para-muitos) entre dois modelos. É sobre isso que vou falar neste artigo. Este exemplo foi executado no Rails 2.1.

Vamos tomar um exemplo simples: Livros e Categorias. Um livro pode estar presente em várias categorias, e uma categoria pode conter diversos livros. Seus models ficam mais ou menos assim:

#Model Livro
has_and_belongs_to_many :categorias

#Model Categoria
has_and_belogns_to_many :livros

Leia o restante desta postagem »

Novo tutorial de RubyOnRails 2.1

Cada dia que passa eu gosto mais dessa filosofia da “comunidade”. É um ajudando o outro, outro ajudando o um, e como resultado temos materiais de ótima qualidade disponível para quem tiver a fim de aprender alguma coisa por conta própria.

Hoje o Cassio anunciou na rails-br que já está disponível o tutorial de RubyOnRails 2.1, de sua autoria, entitulado “Aprendendo Ruby On Rails“, que foi baseado no famoso e bem conhecido “Rails para sua diversão e Lucro“, do Ronaldo Ferraz.

Sem dúvida vale muito a pena ler o ducumento inteiro, mesmo para quem já usa o framework. Informação nunca é demais!

Bons estudos!