Geração de PDFs indolor no Rails 3

31 de agosto de 2011 ~ Comente! ~ Tags:

Em um trabalho recente, precisei gerar relatórios em PDF. Considerei algumas soluções e optei por uma que não me fizesse perder os cabelos e reescrever código: wicked_pdf.

wicked_pdf usa wkhtmltopdf, um incrível utilitário que converte HTML para PDF, usando Webkit e QT. Você não precisa compilá-lo, basta apenas copiar o binário certo do site do projeto.

Uso

Após instalar a gem em seu sistema, você pode gerar os PDFs sem escovar bits: adicione o formato pdf entre as possibilidades de respostas de uma action, como abaixo:

def report
  @order = Order.find(params[:id])
 
  respond_to do |format|
    format.html
    format.pdf do
      render :pdf => "order-#{params[:id]}"
    end
  end 
end

Se quiser, você pode usar a mesma view do formato html:

render :pdf => "order-#{params[:id]}", :template => "/orders/report.html.erb"

O readme da gem apresenta as informações pertinentes para seu uso e não é meu objetivo reproduzi-lo aqui, apenas chamo a atenção para um detalhe: em hosts compartilhados, você precisará definir o path correto do wkhtmltopdf. Para isso, você pode criar um initializer com o seguinte conteúdo:

WickedPdf.config = { :exe_path => '/home/meuusario/wkhtmltopdf' }

PS. você pode usar o wkhtmltopdf no PHP com o Snappy. Não testei, mas pode ser uma boa opção.


Validações personalizadas no Rails 3

5 de junho de 2011 ~ Comente! ~ Tags:

O método validates do Rails 3 agrupou os antigos métodos de validação do Rails 2. Na versão 3, usamos o método validates acompanhado do atributo a ser validado e de suas respectivas regras de validação. Trabalhando em um novo projeto necessito validar CPFs e CNPJs, e consequentemente, precisei criar validações adicionais. Esse post mostra como realizei isso.

Inicialmente, criei na pasta lib/ o arquivo my_validations.rb, com o seguinte conteúdo:

# encoding: utf-8

class MyValidations <ActiveModel::Validator
  def validate(record)
    record.errors[:cpf] <<"CPF (#{record.cpf}) é inválido" unless Cpf.new(record.cpf).valido?
    record.errors[:cnpj] <<"CNPJ (#{record.cnpj}) é inválido" unless Cnpj.new(record.cnpj).valido?
  end
end

Veja que na primeira linha desse arquivo eu indico o encoding usado, para evitar problemas com os acentos. Utilizo o brazilian-rails para confirmar se os documentos informados são ou não válidos. No meu model, eu invoco o método validates_with, indicando a classe recém-criada.

validates_with MyValidations

Esse foi um exemplo de como resolvi meu problema. Existem outros posts sobre o assunto por aí, boa sorte!


Novo micro-projeto: Guia da TV

25 de janeiro de 2011 ~ 3 comentários ~ Tags:, ,

Aproveitei algumas horas das minhas férias e lancei um novo micro-projeto: Guia da TV. O Guia da TV permite você saber quais programas estão para começar.

Algumas coisas ainda serão aprimoradas, mas o aplicativo já está em produção. Ele foi feito com Rails 3 e algumas pitadas de jQuery em sua interface. O conteúdo é fornecido pela Revista Eletrônica. Se você gosta de ver TV, use-o e o recomende no Facebook ;)


Novo micro-projeto: HORÓSCOPO NO MSN

9 de outubro de 2010 ~ 2 comentários ~ Tags:, ,

Chegou mais um serviço de utilidade pública feita por mim. Depois do codestacker, autosimulado e xavecator, por acaso tive contato com algumas coisinhas do protocolo do MSN e desse contato saiu o Horóscopo por MSN. Horóscopo por MSN foi uma aplicação escrita em algumas noites e seu nome já diz tudo: você recebe o horóscopo do dia em seu MSN.

Horóscopo no MSN

Funciona assim: você adiciona na sua lista de AmIgUxOs o contato horoscopo@leonardofaria.net. Vai no site e escolhe o signo que deseja ser informado. Pronto. Uma vez por dia, o robozinho da aplicação vai entregar no seu MSN o seu horóscopo.

P.S. eu não acredito em horóscopo.
P.S. 2: aplicação foi feita com Rails 3 e PHP. O PHP é responsável por conversar com o MSN enquanto a parte Rails do aplicativo gerencia todo o resto. Minha vontade é portar a parte PHP para Ruby.


iPhone e Rails

21 de fevereiro de 2010 ~ Comente! ~ Tags:,

O desenvolvimento de web apps para iPhone requer alguns cuidados especiais. Em nossas aplicações significa pensar em um layout para o gadget. Uma forma rápida de definir o layout para iPhone é através do código abaixo:

Para quem quer conhecer o desenvolvimento de web apps para iPhone, vale conhecer os projetos jQTouch e iWebKit. O jQTouch é um plugin do jQuery com uma série de recursos de animação semelhantes ao do aparelho e possui inclusive a funcionalidade de Geo Location. Já o iWebKit é um framework que não depende de nenhuma biblioteca e que possui também bons recursos para montagem de interfaces.


Novo micro-projeto: XAVECATOR

21 de fevereiro de 2010 ~ 1 comentário ~ Tags:, ,

O nome até parece de app do Aurélio, ou de produtos das Organizações Tabajara, mas num fim-de-semana sem nada pra fazer, resolvi fazer um pet project para ver o Rails 3 funcionando e, para conhecer o jQTouch.

xavecator

O XAVECATOR é para nerds pessoas cara-de-pau e/ou sem inspiração. Bem é verdade que tem coisa aí que digno de beijo na boca ou tapa na cara, mas tudo é conversado e entendido ;)

P.S. 1: ainda estou atualizando o 'banco de dados'. Não está tudo pronto ainda.
P.S. 2: se você tem um iPhone pode acessar o site nele onde precisar
P.S. 3: você pode seguir o XAVECATOR no Twitter


Monografia on Rails: autosimulado

5 de dezembro de 2009 ~ Comente! ~ Tags:, ,

Para conclusão do meu curso de Sistemas de Informação, dediquei minha monografia e trabalho de conclusão de curso ao autosimulado.

Hoje foi a apresentação da banca do trabalho de conclusão de curso e anexo abaixo minha monografia em PDF e os slides da apresentação.
Continue lendo →


Syntax Highlight on Rails

2 de dezembro de 2009 ~ Comente! ~ Tags:, ,

Quer fazer um syntax highlight igual ao do codestacker abaixo, a la Textmate? É fácil:

Faça o download da biblioteca de expressões regulares Oniguruma. A versão mais recente é a 5.9.1. Compile-a:

 ./configure && make && make install 

Após isso instale as gems Oniguruma, Textpow e Ultraviolet e instale o plugin tm_syntax_highlighting em seu projeto.

Em suas views, utilize:

 code(some_ruby_code, :theme => "twilight", :lang => "ruby", :line_numbers => true) 

Internacionalização em labels

22 de novembro de 2009 ~ 3 comentários ~ Tags:

Desenvolvendo uma aplicação onde apliquei os recurso de internacionalização do Rails, percebi que o framework não traduz os valores dos labels para a tradução do atributo.

Para corrigir isso, existem duas formas: um plugin chamado i18n_label ou uma gambiarra um recurso técnico avançado adaptado a condições tecnológicas precárias em um determinado momento:

Cole o código acima em um arquivo da pasta 'lib', por exemplo e o inclua com require no environment.rb.


Rails e cia no Snow Leopard

14 de novembro de 2009 ~ Comente! ~ Tags:, , , ,

Fiz uma instalação nova do Snow Leopard no meu MacBook e ao migrar os dados do Time Machine, do Leopard, algumas coisas pararam de funcionar. Resolvi então escrever para complementar meu post anterior sobre o assunto.

Xcode

ANTES DE MAIS NADA, instalei o Xcode. Ele está junto no DVD do Snow Leopard, na pasta de Instalações Opcionais.

Rails

O Snow Leopard já vem com duas versões do Rails já instaladas: 2.2.2 e 1.13.6. Caso queira atualizar seu ambiente:
Continue lendo →


Página 1 de 71234567

Últimos textos do blog

Tagcloud

abraweb acadêmico actionscript ajax apache apple arteccom asp autosimulado backup benchmark beta bh blogosfera bookmarklet bookmarklets brasil browser censura chucknorris cms codestacker concurso crítica css dashboard deployment desenvolvimento design dicas divinópolis dotmac download dreamhost economia empreendedorismo empreendorismo encontro estatísticas extreme programming feedburner firefox fireworks flash flickr ftp game git globo gmail golive google greasemonkey guerrilha hack host howto htaccess html humor ie inss internet banking iphone ipod is® javascript jquery layout leopard linux listas live locomotive mac meme microsoft miguxês minasonrails mod_rails mp3 msn mysql off tropic opensocial opera orkut oscommerce parser passenger pc personalidade pesquisa php plugin plugins pog portfolio produtividade publicidade rails refurbished regex resenha review ria rss ruby rádio safari sandbox screencast screensaver script.aculo.us seo shoutcast silverlight software spam startup stevejobs suporte swf switch são paulo teste textmate trabalho tumblelog tumblr tutorial twitter ui uml usabilidade validação viral wallop web2.0 webalizer webdesign webdevelopment webkit webmail webmobile webobjects webstandards windows wordpress xml yahoo youtube

Veja todos os textos →