MouseOver Studio

MouseOver Studio header image 2

Desenvolvendo com Spree, a introdução em 5 minutos

maio 11th, 2010 por Diego Carrion · 5 comentários

Na Gonow estamos desenvolvendo uma aplicação sobre o Spree. Por mas que eu já conhecia o conceito desse e-commerce por cima, teve que investir um tempo considerável lendo a excelente documentação dele e fazendo muita coisa errada, o que me fez aprender bastante.

O que vou escrever nesse post foi o que mais ou menos passei, de jeito bem simples, para outros membros da minha equipe que não conheciam tecnicamente o Spree e que ajudou eles a entenderem como funciona internamente e a começar a desenvolver sobre ele sem maiores problemas, sabendo onde procurar as coisas quando necessárias.

Deixei de lado o pagamento porque não tinha claro como explicar ele de forma simples e breve, talvez para outro post.

Conceitos básicos

Uma aplicação criada sobre o Spree é composta de um core e uma ou mais extensões. O core é basicamente uma aplicação Rails sem view. Uma extensão é basicamente uma aplicação Rails que complementa o core. Quando baixamos o Spree ele já vem com diversas extensões, como por exemplo o tema padrão pelo qual navegamos na loja e o suporte a pagamentos com cartão via Authorize.net. As extensões estão localizadas na pasta vendor/extensions.

Quando começamos a desenvolver nosso código encima do Spree fazemos isso numa extensão chamada por padrão de site. Para gerar o esqueleto dessa extensão podemos executar script/generate extension site. A extensão site é por default a última a ser carregada, mas existem diversas maneiras de mudar esse comportamento, alterando o load order.

Quando uma extensão é carregada, além do comportamento esperado ao inicializar uma aplicação Rails, o Spree executa a tarefa rake spree:extensions::update e executa dois arquivos: name_extension.rb e name_hooks.rb, onde name é o nome da extensão. A tarefa rake copia todos os assets (javascripts, css, …) da extensão para a pasta public do projeto.

O arquivo de hooks serve para estender os temas do Spree, como o que vem por padrão. A idéia dos hooks é que possamos remover, substituir ou inserir código antes e depois de cada seção numa view, de modo que não tenhamos que duplicar todo o conteúdo para editar algo pequeno.

No arquivo de extensões podemos declarar dependências de gems, registrar métodos de pagamento e abrir algumas classes e módulos, como por exemplo a classe AppConfiguration, que define as preferências do sistema.

Taxons

No Spree existe o conceito de taxon e taxonomia. Um taxon é uma espécie de tag que pode pertencer a um pai e pode ter vários filhos. Quando falamos de pais e filhos, estamos falando de uma hierarquia e uma taxonomia é justamente isso, uma hierarquia de taxons.

O Spree vem com um tarefa rake chamada db:bootstrap que popula o banco com dados de demonstração e cria duas taxonomias. A primeira taxonomia tem com pai o taxon marca e a segunda tem como pai o taxon categoria. Desse modo, um produto pode ter o taxon Ferrari e o taxon Esportivos, podendo pertencer a duas taxonomias ao mesmo tempo.

Métodos de envío

Uma vez que o usuário escolheu os produtos que ele quer comprar, ele deve escolher a forma de envio deles. Cada forma de envio esta mapeada a uma zona. Uma zona pode ser composta por uma combinação de países, estados e outras zonas. Caso queiram utilizar estados brasileiros, podem utilizar esse seed.

Calculadoras

Quando mapeamos uma forma de envio à uma zona, devemos escolher uma calculadora. Uma calculadora é uma classe que recebe um pedido e computa o valor final, após aplicar impostos e coisas similares.

O core do Spree ja vem com distintas calculadoras, mas elas são somente ativadas pela extensão calculators, que vem junto com a aplicação.

Caso esse post tenha ajudado você, considera me recomendar no Working With Rails. Para ficar mais perto das novidades, não deixa de me seguir no Twitter.

Tags: Ecommerce · rails · Spree

5 respostas ate agora ↓

  • 1 Cássio Marques // mai 11, 2010 at 10:03 am

    Fala Diego, tudo bem?

    Em um projeto da Surgeworks começamos a desenvolver sobre o Spree, mas o cliente queria tantas customizações que acabamos pegando muito pouca coisa… no fim, criamos muito da app do zero. Mas o Spree é bem bacana mesmo, muita coisa dele acabou ficando.

    Abraço!

  • 2 Diego Carrion // mai 11, 2010 at 8:20 pm

    Oi Cássio, no nosso caso a aplicação é interna, então a gente consegue adaptar algumas coisas por enquanto para ganhar certa produtividade.

    Tomara consiga ficar atendendo 😛

    abs

  • 3 Junio Vitorino // mai 12, 2010 at 8:31 pm

    Eu estou justamente começando uma aplicação que usará o Spree. O escopo do projeto não tem muitas customizações em termos de funções, já que o Spree é bem completo para o quesito de venda. Estou dedicando os esforços iniciais no pagamento e integração dele com os famosos e bagunçados gateways de pagamentos brasileiros.

    Belo artigo, parabéns. Ficarei aguardando o de pagamento. =D

  • 4 bilgi // set 25, 2012 at 5:14 pm

    Oi Cássio, no nosso caso a aplicação é interna, então a gente consegue adaptar algumas coisas por enquanto para ganhar certa produtividade.

    Tomara consiga ficar atendendo

    abs

  • 5 Edson // abr 12, 2013 at 8:21 pm

    Boa noite.. Junio Vitorino vc disse que estava trabalhando com spree, gostaria de saber se vc conseguiu completar a integração de pagamentos?
    se sim poderia me orientar? desde já grato

Deixar um comentário