Posts with the tag: rubyonrails

A simple Sinatra Auth

Imagine you want to protect the content of a website created with Next.js, Hugo or your favourite static site generator. Github doesn't offer this feature or Netlify offers authentication only in their paid plans. Decided to create something simple with Sinatra, TailwindCSS and ready to go in Heroku.

Todo list using a Sinatra REST API

I am attending to a post-degree program and one of its courses is Server-Side Scripting. The professor gave us a project which students should create a project and my colleague and I created a Sinatra REST API for a todo list application.

Todo

Curiosidade Ruby do dia #3: Strings

Strings são, em qualquer linguagem, cadeias de caracteres. Em Ruby, você pode acessar o conteúdo de uma string de forma semelhante a um array, exemplo:

Geração de PDFs indolor no Rails 3

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.

Validações personalizadas no Rails 3

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.

Novo micro-projeto: Guia da TV

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.

Novo micro-projeto: HORÓSCOPO NO MSN

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.

Monografia on Rails: autosimulado

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.

Syntax Highlight on Rails

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

Internacionalização em labels

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.

Rails e cia no Snow Leopard

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:

O que é Ruby?

A essa altura do campeonato todo mundo já deve saber o que vem a ser a linguagem Ruby. Minha monografia e meu trabalho de conclusão de curso da Faculdade foram sobre o autosimulado. Na monografia fiz uma introdução sobre as características da linguagem Ruby, reproduzido abaixo:

Ruby

A linguagem Ruby foi criada em 1993 pelo japonês Yukihiro “Matz” Matsumoto, com sua primeira versão pública lançada em 1995. Para Matz, o primeiro desejo é de Ruby tornar os programadores felizes, reduzindo o trabalho manual que precisasse ser feito. Segundo ele, o desenvolvimento de sistemas deveria enfatizar as necessidades do homem e não da máquina:

Muitas pessoas, especialmente engenheiros de computação, focam nas máquinas. Eles pensam, “Fazendo isso, a máquina será mais rápida. Fazendo isso, a máquina será mais eficiente. Fazendo isso, a máquina irá fazer determinada coisa melhor”. Eles estão focando nas máquinas. Mas de fato nós precisamos focar nos humanos, em como os humanos lidam com programação ou operação das aplicações das máquinas. Nós somos os mestres. Elas são as escravas. (VENNERS, 2003).

Ruby é uma linguagem orientada a objetos, ou seja, qualquer variável é um objeto, mesmo classes e tipos que em muitas linguagens são designadas como primitivos. Por exemplo:

putz "meu exemplo".upcase # imprimirá MEU EXEMPLO

O que é Ruby on Rails?

A essa altura do campeonato todo mundo já deve saber o que vem a ser o framework Ruby on Rails. Minha monografia e meu trabalho de conclusão de curso da Faculdade foram sobre o autosimulado. Na monografia fiz uma introdução sobre as características do framework, reproduzido abaixo:

Ruby on Rails

O framework Ruby on Rails foi extraído de um sistema para gerenciamento de projetos chamado Basecamp. A primeira versão do framework foi oficialmente lançada em 25 de Julho de 2004 e seu desenvolvimento conta com colaboradores em todo o mundo liderados pelo programador dinamarquês David Heinemeier Hansson.

MVC

Um padrão de projeto descreve e provê uma solução para um problema freqüente, sendo genérico e reusável. São criados a partir de problemas de problemas comuns enfrentados no desenvolvimento de projetos de software.
A criação de componentes reutilizáveis é uma das técnicas mais exploradas em Engenharia de Software. O uso de componentes diminui o tempo de desenvolvimento e a taxa de erros de codificação. Um padrão pode ser entendido como a abstração de detalhes sobre a implementação de um software.

O ecossistema Rails

Escrevo esse artigo dentro do meu voo de São Paulo para Belo Horizonte. Passei 4 dias em São Paulo, participei do Rails Summit, bloguei ao vivo um resumo das palestras e vou expor meus comentários sobre o ecossistema Rails – ou se preferir, o gueto Rails.

Rails Summit: resumo do segundo dia

Richard Kilmer: MacRuby

A primeira palestra do segundo dia trouxe o americano Richard Kilmer que falou sobre MacRuby, a união entre Ruby e Objective-C. Notas dos slides:

  • Problems with RubyCocoa: It's a bridge; 2 runtimes, 2 GC, different syntax
  • MacRuby 0.4: Objective-C 2 + Ruby 1.9
  • Every Ruby class is an Objective-C class
  • Every Ruby object is an Objective-C object
  • Every Ruby method is an Objective-C method
  • MacRuby é um pouco mais rápido do que Objective-C
  • MacRuby utiliza recursos de processamento paralelo do OS X
  • HotCocoa is an idiomatic Ruby API that simplifies the configuration and wiring together of Objetive-C/Cocoa classes – resumindo: simplifica a sintaxe e deixa algo mais ‘Ruby Way'

Nando Vieira: Ruby 1.9

O Nando falou do que há de novo no Ruby 1.9, tema inclusive de um PDF de sua série HOWTO. Sua apresentação, bem bonita, trouxe inúmeras notas sobre as mudanças da linguagem. Alguns pontos:

Rails Summit: resumo do primeiro dia

Esse é um rascunho do que foi abordado no primeiro dia do Rails Summit.

Chad Fowler: Insurgência Ruby on Rails

  • Stop doing things you know are wrong!
  • A primeira Rubyconf aconteceu em 2001 com 34 pessoas.
  • Nenhum dos participantes ganhava $ com Ruby.
  • 5 dos 34 participantes escreveram o Agile Manifesto.
  • “The survival rate for startups is way less than 50%. So if you're running a startup, you had betted be doing something old. If not, you're in Trouble”
  • Implante uma nova tecnologia gradativamente.
  • Don't do (.Net | Java | C++ | C | Perl l PHP) in Ruby: a razão de trocar de tecnologia é fazer as coisas diferentes!
  • Linguagens de computador são como namoradas: a nova é melhor porque você é melhor.

Gregg Pollack: Na Vanguarda da Performance em Rails

Gregg Pollack, o cara dos screencasts do RailsEnvy, falou sobre performance. Primeiramente ele trouxe em 60 segundos algumas coisinhas para otimizar apps.

  • Usar Yslow
  • Cache: Page Caching, Action Caching, Fragment Caching, Object Caching
  • Avoid Cache expiration
  • Use memcached
  • Use background process
  • Client-side caching: etags & last-modified
  • Don't pre-optimize: 99% of the time you'll need 0%
  • Don't abuse your database

Paperclip validando imagens no IE

No autosimulado, tive um problema onde o IE (sempre ele) não validava o mime-type de uma imagem. Mesmo tentando enviar uma imagem JPG – imagem permitida – o IEca não aceitava o arquivo. A solução:

Descubra de onde vem seus usuários com SQL

Tenho no autosimulado algumas queries para acompanhar a evolução dos usuários do site. Periodicamente, vejo o número de usuários criados dia-a-dia no site e o número de testes realizados por esses usuários.

hirb, dados tabulados no console

hirb é uma gem que, num rápido resumo, tabula e organiza em árvores dados que, entre várias origens, podem vir de um array. A instalação

Curiosidade Ruby do dia #2

Em outra curiosidade Ruby do dia, eu falei do elsif. Hoje eu lembro do método succ, da classe String. Veja os exemplo:

sitemap.xml no Rails

Usado para SEO, Sitemaps servem para informar aos sites de busca como indexar as páginas de um site. Indexadores descobrem páginas com base em links no site e outros sites e o que os Sitemaps fazem é complementar esses dados, para permitir que os indexadores com suporte para Sitemaps peguem todos os URLs no Sitemap e aprendam sobre esses URLs usando os metadados associados.

Existem sites para gerar o arquivo, mas fazer isso no Rails não é complicado e faremos isso em 4 passos. A dica vem do Tony no livro Advanced Rails Recipes.

Para aprender Ruby on Rails

Esse post é para indicar 2 dicas matadoras que mostram como a comunidade Ruby on Rails é organizada e colaborativa. Essa semana foi finalmente terminado a tradução/edição/revisão d'O Guia (comovente) de Ruby do Why. Essa é tradução do livro do Why the Lucky Stiff, um cara que ensina fantasticamente bem.

Integração contínua no autosimulado

Assim como no codestacker, não lancei o autosimulado com todos os features prontos. Naturalmente, lançar um projeto sem estar com 100% dos recursos completos pode ser um risco, mas é uma gostosa corrida contra o tempo – e mais uma chance para avaliar se essa ou aquela funcionalidade é realmente útil para o aplicativo. Como disse Steve Jobs em uma apresentação sobre a iTunes Music Store, “Inovação não é dizer sim para tudo. É dizer NÃO para tudo exceto as funcionalidades mais cruciais”.

Nasceu: autosimulado

autosimulado é um aplicativo web com simulados de provas de legislação, aquelas que você faz quando vai tirar sua carteira de motorista. A inspiração para o autosimulado apareceu quando minha namorada foi tirar carteira, e ao tentar ajudá-la procurando provas, só encontrei coisas chatas, feias e sem usabilidade. Provas do Detran metem medo em muita gente – eu mesmo só passei da segunda tentativa – e ser simples, rápido, inteligente e grátis é o objetivo do site, que nasceu sobre a concepção do Getting Real e da integração contínua.

Documentação do Rails e Ruby no Spotlight

Essa é uma dica bem interessante: um cara chamado Priit Haamer migrou as documentações do Rails e do Ruby para o dicionário do Mac OS. Como o Spotlight do sistema busca – além de arquivos, emails, músicas e o que for – as entradas do dicionário, você ganha mais uma forma rápida de acesso a documentação de sua linguagem favorita.

Edge Rails: método render mais esperto

Quem já está usando o Rails 2.2 já deve estar vendo um warning: no Rails 2.3, o método render está mais esperto e dispensará a instrução sobre qual tipo de renderização ele está fazendo. Confira:

gem cheat

Essa é uma gem do Chris Wanstrath que muita gente não conhece e que só hoje me deparei. Para instalar:

PHP junto com o Passenger no Leopard

Na minha máquina de desenvolvimento uso o Passenger para trabalhar com o Rails e hoje eu precisei fazer alguns testes com PHP. Deixar o PHP junto com o Passenger é tão simples como 2 + 2 são 4. Vamos lá.

Migrations sem timestamp

No Rails 2.0, os arquivos de migração eram gerados com o prefixo do timestamp. Exemplo: 20080614155951_create_users.rb. Nas versões anteriores, o prefixo era numérico. Para o Rails 2.2, será possível você mesmo configurar isso, definindo no environment.rb:

RubyMine: Textmate-killer?

Essa semana apareceu uma nova IDE para Ruby: a RubyMine, que se auto-denomina com a mais inteligente IDE para Ruby. O software é multiplataforma e parece ser bem interessante. Notei algumas coisinhas numa primeira-impressão:

Integração contínua no codestacker

Meses atrás lancei o codestacker. Para seu desenvolvimento segui a conhecida metodologia Getting Real e lancei o serviço sem os principais features. Pouco a pouco estou acrescentando recursos ao site.

Ruby on Rails Portable

Você não precisa mais ficar querendo o novo Macbook para levar suas aplicações Rails para qualquer lugar. Um sujeito chamado Etienne Savard criou o Ruby on Rails Portable. O pacote, com uns trinta e poucos megabytes vem com o Scite – um editor de código – também portátil.

Artigos da semana sobre Rails

Ando muito sem tempo para postar, basicamente devido aos meus dois trabalhos. Essa semana vi várias coisas interessantes e abaixo um comentário para cada uma delas.

Edge Rails no Windows Vista

Uma das mudanças do Rails 2.2 é não inclusão do bundle do MySQL, responsável por conectar seu projeto ao banco. Mês passado eu postei sobre isso e hoje, ao tentar instalar o gem do MySQL no Windows Vista de um co-worker, me deparei com um problema na DLL libmySQL.dll.

Acelerando seu Textmate

Estou trabalhando em um projeto usando o Edge Rails. No Textmate, a tecla de atalho CMD + T é uma mão na roda para localizar e abrir qualquer arquivo, entretanto, com o Edge estando na pasta /vendor/rails, a busca pode se tornar lenta e encontrar, além dos seus arquivos, os arquivos do framework. Foi então que encontrei essa dica do Dr. Nic (sempre ele):

Ruby on Rails na WebMobile

Ruby on Rails é um framework minimalista que chama cada vez mais atenção do mainstream. Dia-a-dia a comunidade avança, com encontros (Rails Summit está chegando), publicações e artigos e reportagens em revistas especializadas. E é com grande satisfação que divulgo que a WebMobile, da editora DevMedia, traz, a partir dessa edição, um micro curso apresentando as funcionalidades do RoR.

Mudanças no Rails 2.2

O Rails 2.2 está chegando e ao baixar o Edge para testar o novo recurso de internacionalização (uma das grandes novidades), me deparei com a primeira diferença da versão: o arquivo de conexão com o MySQL não está mais integrado ao framework. É isso o que diz o log do development.log:

Usando ApacheBench para testes: Apache/mod_rails e Nginx/mongrel

O ApacheBench é um software do Apache usado para fazer testes de perfomance de servidores web, independente do servidor usado. Isso é muito útil para comparar o desempenho de diversas configurações, mas nem sempre pode apresentar a realidade do ambiente.

Rails Screencasts

É incrível a qualidade de material existente sobre Rails. A comunidade está cada vez mais crescendo e para quem está vindo para o lado Rails da força, nada mau uns screencast para aprender.

Nasceu: codestacker.com

Nasceu meu projeto Rails de 2 fins-de-semana: codestacker (é em minúsculas, tá?) é um site para compartilhamento de código, anônimo ou não, público ou privado. Existem vários sites semelhantes ao codestacker, entretanto, quis fazer minha solução cobrindo minha abordagem para o problema e como posso solucioná-lo.

annotate_model, gem útil da semana

Trabalhar com Rails é certeza de encontrar ótimo material para trabalhar/documentar sua aplicação. Tenho uma lista de plugins/gems úteis para o desenvolvimento, o que daria um enorme post. Seguindo os conceitos do Getting Real, rapidinho vou postando (é muito material).

Passenger no painel de preferências do Leopard

Que o mod_rails veio para revolucionar o deployment de Rails, todo mundo já sabe. Agora, me deparei com isso:

Rails, Git, MySQL e mod_rails no Leopard

Comprou um Mac? Não sabe por onde começar? Esse é um mega-post mostrando como configurar Ruby on Rails, Git, MySQL e mod_rails no Leopard. É tudo muito-fácil!

Ruby on Rails

O Leopard já vem com Ruby e Rails já instalados. Então, a única sugestão é a de atualizar todos os gems. O comando gem list deve apontar os gems instalados. Por padrão, são:

Ruby on Rails na caveira!

Nos últimos dias, tenho lido muita coisa sobre RoR. Infelizmente, queria blogar sobre cada um desses assuntos, mas o tempo anda muito corrido. Fiz esse mega-post com alguns links de assuntos interessantes para aprendizagem.

Locomotive com Rails 2.0

Uma das formas simples de se ter Ruby on Rails no Mac é através do Locomotive, um pacote all-in-one com Ruby, Rails e vários gems importantes para desenvolvimento. Como o Rails 2.0 foi lançado no último dia 7, resolvi atualizar minha máquina.

Documentação sobre Ruby e seus gems

Uma dica que pouca gente conhece sobre documentação é o gem_server. O comando gem_server inicia na porta 8808 uma instância WEBrick com a listagem de todos os gems instalados na máquina e suas respectivas informações de versão e inclusive documentação. Por ali, é possível obter inclusive todas as informações sobre métodos e classes dos cincos pacotes que integram o Rails. Uma vez startado, para ver o serviço basta carregar a URI localhost:8808 e obter uma página como a abaixo. [Dica via Akita]

Um resumo do Minas on Rails

Ontem aconteceu o Minas on Rails. O evento surgiu da idéia do Ronaldo Ferraz e da organização do pessoal da Dito – André, Milk-it – Carlos, Michel e cia, Idéia Digital – Rafael Apocalypse, entre outros. Eu, dei meus pitacos sobre a organização do evento na lista rails-mg. O evento começou com uma alfineta engraçadíssima ao Cake PHP, o Ronaldo ficou blogando ao vivo e o Open Talk final foi descontraído e bacana.

Minas on Rails

O Ruby on Rails ganha mais espaço a cada dia e sua versatilidade e agilidade de uso provam a capacidade de conquistar um espaço maior nas empresas de desenvolvimento brasileiras. São por essas qualidades que a cada dia aumentam os adeptos do framework e de sua filosofia.

Prepare-se para o Rails 2.0

A versão 2.0 do framework Rails está por vir e isso significa algumas mudanças e novidades. Já existem vários posts na blogosfera mostrando as particulariedades da nova versão. Vou falar de algumas delas:

5 dicas para trabalhar com Rails

Começar em um ambiente novo de desenvolvimento pode se mostrar desengonçado. Então, para começar em Rails, aí vão minhas dicas, que acho bem produtivas.

Endless Pageless

Ano passado me deparei com o searchmash (leia-se Google).
Um sistema de busca e… sem paginação! Quando chega no fim da página os próximos registros aparecem magicamente (retificando, via Ajax).

3 anos de Rails

3.times do puts 'Hip hip hurra' end

No último dia 30, o framework Rails completou três anos.
Hoje, uma consulta no Google por ‘Ruby on Rails' retorna 43,200,000 resultados. A Amazon retorna 108 livros.

Rails, software de opinião

Fonte: Canada on Rails, flickr.

Café com o TOM, RoR na sua sexta a noite

Nas últimas duas sextas, sempre às 20:30, o Carlos Eduardo, da e-Genial, realizou o Café com o TOM (café na sexta a noite?). São palestras rápidas (cerca de 2 horas) sobre assuntos interessantes que assolam o desenvolvimento. A interface desse serviço é feita em Ruby on Rails + Flex e é uma interessante solução para juntar pessoas :)
Na primeira semana, o Fabio Akita falou sobre JRuby, mostrando o melhor dos mundos Java e Ruby. Achei bem interessante a possibilidade de aplicações Ruby no desktop.
Ontem foi a vez do Vinícius Manhães Teles falar de Extreme Programming. Infelizmente não pude ver, porque, embora não pareça, desenvolvedores possuem uma vida social. Se esse foi seu caso, a palestra foi gravada e está disponível para download.
Na próxima sexta, é a vez do gerente do famoso CESAR falar. Novamente, o tema englobará projetos agéis.

Deployment na Dreamhost e RailsPlayground

Minha aplicação Rails está pronta, mas, e agora? Como instalá-la no servidor?
Essa é uma dúvida muito comum entre desenvolvedores Rails. Fazer a configuração do ambiente de produção de uma aplicação é uma tarefa bem DIY (do it yourself, ou, faça você mesmo). Não existe uma fórmula certa ou errada para isso, mas sim diferentes soluções para essa questão. Esse artigo, portanto, mostra uma forma, que eu e o Nando usamos para rodarmos nossas aplicações. Ele na RailsPlayground e eu na Dreamhost. Vamos lá:

Curiosidade Ruby do dia

Não existe ‘else if' em Ruby e sim ‘elsif' – sem o ‘e' mesmo! Isso costuma pegar alguns desatentos. Veja o exemplo:

Novos resources sobre Rails

Trabalhar com Rails me garante bons bookmarks (:

Manipulando datas no Rails

Em nossas aplicações geralmente trabalhamos com datas. Em nossos bancos de dados, temos sempre um campo do tipo DATETIME. Mas como formatar as datas e evitar tosqueiras como Mon May 18 00:00:00 -0400 2007?

Por que vale a pena trabalhar com Rails

Resolvi escrever esse post após um amigo me perguntar se compensava aprender/trabalhar com Ruby e com Rails, já que é demasiadamente recente e sem apoio de grandes empresas, como acontece com o PHP e Python.

Minha curiosidade de trabalhar com Rails veio após todo o hype envolvido no framework e particularmente, depois que conheci o Orkurioso (serviço todo hypado para monitorar scraps do orkut) e vi o screencast (51MB, .mov) do David Heinemeier, junto a todas as aplicações da 37signals.

Criando RSS com Rails

Nota: antes do artigo vale lembrar do curso online de Ruby on Rails + Flex do Carlos. Ele já fez alguns experimentos com esses dois ambientes e rolou um resultado bacana. Vamos ao artigo então :P

Não sou o maior especialista em padrões de distribuição de conteúdo. Existe gente melhor para isso, mas em um projeto meu, precisei da criação de feeds. O primeiro passo é mapear o arquivos routes.rb (config/routes.rb) do seu projeto.

Mais resources sobre Ruby on Rails

No desenvolvimento de um projeto pessoal – que devo lançar em breve – ando vendo algumas coisas bacanas. Ai estão:

Ruby on Rails on Mac OS X

[Estou de fato sumido do blog. Mudei para Piumhi Harbor e fiquei com computador somente na primeira semana. Meu iBook teve problemas e fiquei quase um mês esperando. Enfim, computador novo, finalmente posso brincar com Ruby on Rails. Inclusive já estou começando a trabalhar em um projeto comercial com o uso desse framework.]

Apresentando Ruby on Rails

Resolvi escrever esse post para mostrar algumas características do Ruby on Rails, um framework que me chamou muito a atenção após ver a implementação de um blog em 58(!) linhas.