Ambiente Rails no Ubuntu

Se você quer um ambiente completo para desenvolvimento Rails no Ubuntu 8.10, é só seguir os passos:

1- Instalar o Ruby:

sudo aptitude install ruby-full build-essential

2- Instalar o RubyGems: (download aqui)

tar zxvf rubygems-x.x.x.tgz
cd rubygems-x.x.x
sudo ruby setup.rb
# substitua o x.x.x pela versão que você baixou

3- Atualizar o RubyGems:

sudo gem1.8 update --system

4- Instalar o Rails:

sudo gem1.8 install rails
# --no-rdoc --no-ri pode agilizar as coisas aqui

5- Instalar o MySQL:

sudo aptitude install libmysql-ruby mysql-server libmysqlclient15-dev
sudo gem1.8 install mysql

6- Testar: =)

rails my_test -d mysql
cd my_test
rake db:create
script/server

Agora é só acessar http://localhost:3000/ ou http://127.0.0.1:3000/ no seu navegador favorito e correr para o abraço! :D

Nota: a idéia é criar um roteiro de instalação simples e funcional, não a instalação mais enxuta possível.

comentários (7)

Busca fácil on Rails

Durante as férias escolares que se aproximam, planejo dar continuidade ao projeto que iniciei no Yahoo! Hack Day desse ano. A idéia é fazer um calendário + mapa de eventos. :)

Aproveitei um tempo de folga essa semana e resolvi implementar uma busca nos eventos cadastrados. Fiz um rascunho que como seria a busca e pensei: "ok, agora não quero reinventar a roda, será que existe algum plugin/gem que facilite a criação de páginas de busca?"

Após algumas buscas e testes encontrei um projeto chamado Searchlogic. A primeira impressão foi muito boa: de cara já vejo o projeto com uma ampla documentação disponível. Bastaram algumas linhas de código para conseguir o que eu queria! :)

Com base nesse resultado positivo, resolvi compartilhar aqui a minha experiência fazendo uma pequena explicação sobre como integrar o Searchlogic ao seu site.

Passo 1: Instalação do Searchlogic: Você pode fazer a instalação usando o RubyGems ou instalando com um plugin dentro do seu projeto.

Instalação como gem:

sudo gem install searchlogic

# e depois adicione ao config/environment.rb
config.gem "searchlogic" 

Instalação como plugin:

script/plugin install git://github.com/binarylogic/searchlogic.git

Passo 2: Faça a busca! É isso mesmo, já está "tudo no jeito" para você fazer a sua busca. Uma busca simples seria:

@search = Model.new_search( params[:q] )
@items, @items_count = @search.all, @search.count

O que esse código faz é buscar registros a partir do seu modelo (Model no exemplo) e colocar o resultado em duas variáveis: uma com a coleção de registros e outra com a quantidade retornada. Mais fácil impossível.

Passo 3: Personalizando sua busca: se você quiser, e você provavelmente quer, você pode especificar quais campos devem ser pesquisados ou quais as condições devem ser atendidas. Tudo isso é muito simples de ser feito e pode ser definido de duas formas: você pode usar um hash com as opções e condições (similar ao que fazemos com o tradicional find) ou uma abordagem mais orientada a objetos. Exemplos simulando uma busca de carros:

Passando um hash:

Car.all(
  :conditions => {
    :name_contains => 'ford', # name like '%ford%'
  },
  :per_page => 10
  :page => params[:page],
   :o rder_by => 'year',
   :o rder_as => 'DESC',
)

Ou como um objeto:

search = Car.new_search
search.conditions.name_contains = 'ford'
search.per_page = 10
search.page = params[:page]
search.order_by = 'year'
search.order_as = 'DESC'
search.all # execute

Simples não? E isso é só o começo, na documentação do projeto há muitos outros exemplos e possibilidades!

comentários (1)

Instalando a RMagick no (*)Ubuntu Edgy

Tentar instalar a biblioteca para a manipulação de imagens "RMagick" foi uma coisa, no final das contas, bem simples e trivial.

Porém, até eu chegar na solução final que realmente funcionasse eu precisei passar por vários outros métodos que, para mim, não funcionaram.

Instalando

Eu poderia escrever todos os métodos que testei e não funcionaram, comentar sobre eles e tudo mais, porém prefiro apenas comentar sobre o método que funcionou. :D

Estou levando em consideração que você já possui o Ruby instalado e funcional em sua máquina.

Seguindo basicamente as etapas descritas no post já citado anteriormente, eu removi a "RMagick" que eu já havia instalado via RubyGems (numa tentativa mal-sucedida anterior =).

$ sudo gem uninstall rmagick

Lembrando que o "$" não deve ser digitado, apenas indica que você pode fazer o comando com um usuário normal desde que ele tenha permissões administrativas (sudoer) ou claro, com a conta root.

Para verificar que você não tem a "RMagick" definitivamente, você pode usar:

ruby -rrubygems -e "require 'RMagick'; puts Magick::Long_version;"

Se você executar o comando, deverá receber uma resposta dizendo não ser possível carregar a "RMagick". Exemplo:

no such file to load -- RMagick (LoadError)

Com tudo isso certo, agora é só instalar a "RMagick" disponível nos repositórios do Ubuntu:

$ sudo aptitude install librmagick-ruby

Simples e prático! Vamos usar o mesmo comando anterior para testar a instalação e exibir a versão:

ruby -rrubygems -e "require 'RMagick'; puts Magick::Long_version;"

Desta vez o resultado deverá ser algo como:

This is RMagick 1.13.0 ($Date: 2006/06/26 23:32:37 $)
Copyright (C) 2006 by Timothy P. Hunter
Built with ImageMagick 6.2.4 11/01/06 Q16 http://www.imagemagick.org
Built for ruby 1.8.4 (2005-12-24) [i486-linux]
...

Procurei algum código simples para fazer o teste final. Achei este gerador de thumbnails bastante simples mas eficaz para o teste. Fiz umas pequenas alterações e temos:

require 'RMagick'

maxwidth = 160
maxheight = 160
aspectratio = maxwidth.to_f / maxheight.to_f
imgfile = 'world'

pic = Magick::Image.read(imgfile + '.jpg').first
imgwidth = pic.columns
imgheight = pic.rows
imgratio = imgwidth.to_f / imgheight.to_f
if imgratio > aspectratio
scaleratio = maxwidth.to_f / imgwidth
else
scaleratio = maxheight.to_f / imgheight
end
thumb = pic.resize(scaleratio)

white_bg = Magick::Image.new(maxwidth, thumb.rows)
pic = white_bg.composite(thumb, Magick::CenterGravity, Magick::OverCompositeOp)
pic.write(imgfile + '.thumb.jpg')

Ele vai procurar uma imagem de nome "world.jpg" no diretório atual e vai tentar gerar um thumbnail sob o nome "word.thumb.jpg".

Se tudo der certo, você vai ver as duas imagens no diretório, indicando o sucesso na operação:

$ ls *.jpg -l
-rw-r--r-- 1 klaus klaus 36802 2007-01-12 10:54 world.jpg
-rw-r--r-- 1 klaus klaus 20895 2007-01-12 10:55 world.thumb.jpg

Resumindo

O processo de instalação foi bem simplificado no final das contas, porém, encontrar o método que funciona é o que acabou me consumindo algum tempo. :D

Referências
Ruby
A forma de instalação (post original)
RubyGems
Snippet gerador de thumbnails em Ruby
Instalação alternativa (para mim não funcionou mas a leitura foi útil)

comentários