Alex Florentino

KISS - Keep It Simple, Stupid

Archive for the ‘Ruby’ Category

ActiveRecord sem Rails

Thursday, November 13th, 2008

No mundo Ruby On Rails ja é comum a utilização do ActiveRecord o que pode não ser tão comum é a utilização do framework AR fora de uma aplicação Rails.

Exemplo no sistema que estou trabalhando preciso fazer alguns testes, e portanto sempre preciso apagar o banco de dados e carrega-lo com dados novamente, não queria fazer isso com os sql inserts, é ae que entra o ActiveRecord.


require 'rubygems'
require 'active_record'

ActiveRecord::Base.establish_connection({
:adapter => 'mysql', :database => 'database', :username => 'root', :password => '', :host => 'localhost'})

class Pessoa < ActiveRecord::Base
set_table_name "pessoa"
end

agora você já pode fazer algumas mágicas, exemplo :


irb -r ActiveRecordTest.rb

p = Pessoa.new

p.save

o que acontece é que você já é capaz de salvar dados no seu banco de dados, sem utilizar SQL.

Definitivamente ActiveRecord é muito prático!

Ruby On Rails – Counter cache

Saturday, May 10th, 2008

Uma feature muito interessante no Ruby On Rails é a “counter_cache” , mais o que seria counter cache ? vou explicar através de um exemplo , supomos que você esteja desenvolvendo um site de contatos, suponhamos que você queira mostrar a quantidade de contatos por tipos algo no estilo da listagem abaixo:

 

Categoria Quantidade
Familia 10
Profissional 15

na maneira “tradicional” , essa listagem sempre acarretaria em varios “selects”, ou seja, um select seleciona todos os tipos de contatos e um select para totalizar cada tipo, imagine, seu sistema tem 1.000,000 tipos de contato você teria 1.000,000 selects + 1.

O ruby counter cache minimiza este problema, pois ele cria uma nova coluna na tabela categoria com a quantidade correta de contatos.

Então vamos ao código.

 

  1. Criar o projeto rails

     rails contato 	--database=mysql
    
  2. Configuração

     edite seu 	config/database.yml e altere os dados do seu  banco de dados mysql
    
  3. Criar a base de dados

     rake  db:create
    
  4. Deixar o ruby criar algum código

    
    ruby 	script/generate scaffold Categoria nome:string
    
    
    ruby 	script/generate scafffold Contato nome:string email:string 	fone:string categoria_id:integer
    
  5. Vamos criar as tabelas

     rake db:migrate
    
  6. agora vamos setar nosso relacionamentos no model
    edite o app/models/categoria.rb que deve ficar como :

    
    class Categoria < ActiveRecord::Base
    has_many :contato
    end
    

    edite o app/models/contato.rb qude deve ficar como:

    
    class Contato < ActiveRecord::Base
    belongs_to :categoria
    end
    

    agora você já pode iniciar o servidor ruby script/server e acessar http://localhost:3000/categorias.

  7. vamos editar a view index da categoria e adicionar a quantidade de contatos:

    ...<table>
    <tr>
    <th>Nome</th>
    <th>Quantidade</th>
    </tr>
    
    <% for categoria in @categorias %>
    <tr>
    <td><%=h categoria.nome %></td>
    <td><%=h categoria.contato.length %></td>...
    
  8. agora vamos fazer a magica acontecer, vamos primeiro adicionar a coluna magica no seu modelo categoria

     ruby script/server migration 	add_categoria_count_cache
    

    edite esse novo arquivo:

    
    class AddCategoriaCountCache < ActiveRecord::Migration
    def self.up
    add_column :categorias,:contatos_count,:integer,:default => 0
    end
    
    def self.down
    end
    end
    

    logo após isso rode rake novamente,da pasta raiz do seu projeto:

    
    rake db:migrate
    
  9. Agora vamos atualizar o Contato para sempre atualizar o count_cache, para isso basta editar o app/models/contato.rb

    
    class Contato < ActiveRecord::Base
    belongs_to :categoria, :counter_cache => true
    end
    

Pronto se tudo correu bem é para o counter cache estar habilitado, para testar basta acessar ruby script/console cadastrar algumas categorias e popular alguns contatos para essas categorias e verificar o resultado no browser.

aqui um outro ótimo exemplo.

divirta-se!

 

Aplicação simples com Ruby On Rails - Usando Scaffold

Thursday, February 21st, 2008

No Mundo Ruby On Rails, existe uma ferramenta Chamada Scaffold que tem como objetivo basicamente geração de um esqueleto para a nossa aplicação. Com esta ferramenta podemos começar o nosso projeto com bastante código gerado automaticamente.vamos a um passo-a-passo.

1. Baixe e instale o Ruby

2. Instale o MySQL acessando o link

3. Instalar o framework rails

gem install rails –include-dependencies

4. Crie uma nova aplicação rails blog -d mysql

5. Configure usuario e senha de acesso ao banco de dados para isso edite o arquivo config/database.yml e atualize o username e password

6. Cria o database

rake db:create

7. Gerar um scaffold

ruby script/generate scaffold blog titulo:string autor:string conteudo:text

8. Gera as tabelas rake db:migrate

9. Inicie o Servidor ruby script/server
acesse http://localhost:3000/blogs

Se tudo ocorreu bem é para ver um site com um cadastro totalmente funcional rodando.

Viva ao Ruby.