ArthurGeek.net

Rails, Mac... e Rock'n Roll!

Pôr do sol em São Paulo

Edge migrations mais sexy

04 de Outubro de 2007 às 10:51 · 1 comentário

Um plugin que eu costumava usar muito era o Sexy Migrations. Era, pois uma sintaxe inspirada nele foi adicionado ao Rails Edge.

Agora que estou usando o Edge em alguns projetos meus, sinto falta do foreign_key (ou simplesmente fkey) que usava no Sexy Migrations e não está presente no Edge. Por isso, criei um patch que adiciona o suporte à foreign_key na sintaxe das migrations.

Então, onde você escrevia (com o Edge):

create_table :user do |t|
    t.integer :country_id
    [....]
end

Poderá escrever assim:

create_table :user do |t|
    t.foreign_key :country
    [....]
end

É uma mudança sutil, porém, útil.

Para ele fazer parte do Rails 2.0 é preciso que pelo menos 3 pessoas testem-no e comentem com um simples +1, de acordo com as novas regras para que um patch seja aceito no Rails.

Se você gostou da idéia, dê uma passadinha lá no ticket, aplique o patch e vote. :)

Update: O Patch agora faz parte do Rails 2.0. Com algumas modificações e novas funcionalidades.

Para começar, “t.foreign_key” virou “t.references” com alias para “t.belongs_to. E foi adicionado também uma opção => true” que cria a coluna com _type no final.

Finalizando, se antes você escrevia assim (com o Rails Edge):

create_table :taggings do |t|
  t.integer :tag_id, :tagger_id, :taggable_id 
  t.string  :tagger_type 
  t.string  :taggable_type, :default => 'Photo' 
end

Agora passa a escrever assim:

create_table :taggings do |t| 
  t.references :tag 
  t.references :tagger, :polymorphic => true 
  t.references :taggable, :polymorphic => { :default => 'Photo' } 
end

1 comentário Tags:

Edge Rails

26 de Setembro de 2007 às 11:26 · 0 comentários

Você tem acompanhado as mudanças do Edge Rails, e quer testá-las naquele projeto que está começando?

Fácil, é só digitar no terminal:

rails myapp
cd myapp
rake rails:freeze:edge
# e se você for sortudo e tiver o textmate :)
mate myapp

Certo? Não, errado! Infelizmente, estes comandos não atualizam sua app para o Edge (é engraçado, mas estes comandos funcionam em algumas máquinas e na grande maioria não). Como saber se você está rodando o Edge? Verifique a pasta config, tem uma pasta initializers dentro dela? Se estiver rodando o edge tem que ter. Então, o que fazer para rodar o edge rails de verdade?

No Edge de verdade

Você precisa usar o comando rails de dentro do edge para gerar seu novo projeto.

cd ..
ruby myapp/vendor/rails/railties/bin/rails myapp_edgier
# e se você for sortudo e tiver o textmate :)
mate myapp_edgier

Agora verifique a pasta config. Hmm, legal! Aproveite e dê uma olhada na nova estrutura do environment.rb. Observe também que a pasta components não é mais criada.

Ok, agora você já está rodando um projeto no Edge, e resolveu criar mais um projeto. Vamos melhorar um pouco o processo. De volta ao terminal:

cd ~
svn co http://svn.rubyonrails.org/rails/trunk rails_edge
ruby ~/rails_edge/railties/bin/rails my_second_edgier_app
cd my_second_edgier_app/
# Você ainda precisa ter o edge rails dentro de sua aplicação
ln -s ~/rails_edge/ vendor/rails
# e se você for sortudo e tiver o textmate :)
mate .

Dessa maneira, você pode manter várias aplicações rodando o Edge, e atualizar o código em um local apenas. Quando você notar alguma mudança no Edge, rode:

cd ~/rails_edge
svn up

Um pouco de shell script

Vamos criar uma função em shell script para gerar novas aplicações já usando o Edge

mate ~/.bash_profile

Coloque a seguinte função no seu profile:

function edgie() { 
  ruby ~/rails_edge/railties/bin/rails $1 && cd $1 && ln -s ~/rails/trunk vendor/rails && mate . 
}

Atualizando nosso profile:

source ~/.bash_profile

Pronto! Agora você pode rodar:

edgie my_edge_app

Boa diversão com o Edge Rails! :)

Fonte: RailsTips: Even Edgier Than Edge Rails

Nenhum comentário Tags: