Artigos da categoria ‘Edge Rails’

Edge Rails: Introduzindo Memoizable para cache de atributos

Por Carlos Brando em 18 de Julho de 2008

Performance é coisa séria, e um dos métodos mais usados para aumentar a velocidade de execução em códigos é o uso de cache. Quem nunca fez algo assim?
class Person < ActiveRecord::Base
def age
@age ||= um_calculo_muito_complexo
end
end

Na próxima versão do Rails teremos uma forma mais elegante de fazer isto usando [...]

Agora que todos já sabem o que é uma rota singular, posso comentar uma novidade no Edge Rails.
Atualmente o helper polymorphic_url não está tratando singleton resources corretamente.
Um novo patch foi incluído no Rails para permitir que especifiquemos um singular resource usando símbolos, assim como fazemos com namespaces. Exemplo:
# este código
polymorphic_url([:admin, @user, :blog, @post])

# é a [...]

Edge Rails: Suporte ao Thin melhorado no Rails

Por Carlos Brando em 15 de Julho de 2008

Traduzido do post “Living on the Edge (or what’s new in Edge Rails) #3“, porque não percebi esta alteração e não quero deixar de documentar.
O script/server agora verifica a disponibilidade do Thin e o usa. Muito conveniente se vocês estiver usando Thin no seu ambiente de produção (e quiser rodar o mesmo em desenvolvimento). Você [...]

Edge Rails: Uma nova forma de especificar conditions usando Hash

Por Carlos Brando em 15 de Julho de 2008

Ao realizar buscas no banco de dados, por vezes temos de fazer uso da opção :joins afim de melhorar a performance de nosso aplicativo, em outros casos precisamos simplesmente recuperar algum tipo de informação que depende do resultado de duas tabelas.
Por exemplo, se desejássemos recuperar todos os usuários do sistema que compraram itens da cor [...]

No código abaixo estamos usando uma partial com uma coleção de dados:
render :partial => “admin_person”, :collection => @winners
Dentro da partial podemos usar então a variável admin_person para acessar os itens da coleção. Mas temos de concordar que este nome de variável é meio ruim.
Na próxima versão do Rails teremos a opção de personalizar o nome [...]

O método validates_length_of faz parte dos muitos métodos de validação contidos no ActiveRecord. Este método em particular serve para garantir que o valor gravado em uma determinada coluna no banco de dados terá um tamanho máximo, mínimo, exato, ou até mesmo se está em um intervalo de valores.
Mas o termo “tamanho” é relativo. Hoje quando [...]

Edge Rails: Correção nas tarefas db:migrate:down e :up

Por Carlos Brando em 07 de Julho de 2008

Quando se usa o comando rake db:migrate:down VERSION=alguma_versão, os registros na tabela schema_migrations não estão sendo atualizados.
Isto significa que após usar o comando rake db:migrate:down ou up se você rodar o comando rake db:migrate algumas migrations podem não ser executadas. Vamos simular isto para ficar fácil de entender o problema:
$ ./script/generate migration test_migration
[...]

Edge Rails: Solução de bug no método rename_column

Por Carlos Brando em 04 de Julho de 2008

Esta alteração trata-se na verdade de uma correção de um bug no método rename_column. Para entender qual era o problema precisamos de um cenário como exemplo. Primeiro criamos um migration:
create_table “users”, :force => true do |t|
t.column :name, :string, :default => ”
end

Ok, agora criamos um segundo migration onde vamos renomear a coluna name da [...]

Edge Rails: Crie regras para o String#humanize

Por Carlos Brando em 03 de Julho de 2008

Já faz um certo tempo que Pratik Naik está tentando colocar este patch no Rails e parece que finalmente conseguiu.
No arquivo config/initializers/inflections.rb você tem a opção de acrescentar novas inflexões para pluralização, singularização e outros:
Inflector.inflections do |inflect|
inflect.plural /^(ox)$/i, ‘\1en’
inflect.singular /^(ox)en/i, ‘\1′
inflect.irregular ‘person’, ‘people’
inflect.uncountable %w( fish sheep )
end
Na [...]

Edge Rails: Array#second até Array#tenth

Por Carlos Brando em 02 de Julho de 2008

Que David Heinemeier Hansson (DHH) gosta de inventar coisas no Rails não é segredo para ninguém, mas algumas vezes ele meio que exagera um pouco. Veja por exemplo esta última adição que ele fez.
No objeto Array hoje já temos o método first e last, então porque não ter também os métodos second, third, fourth e [...]

Edge Rails: Melhorando a performace do Rails

Por Carlos Brando em 01 de Julho de 2008

Jeremy Kemper está tentando deixar o Rails mais rápido, tanto que a novidade do último post surgiu depois que ele começou esta empreitada. Quem estiver interessado em acompanhar o que ele anda fazendo, pode acompanhar o fork do Rails que ele criou no GitHub para este trabalho.
Uma das coisas que ele andou melhorando foi o [...]

Edge Rails: Criando testes de performace

Por Carlos Brando em 30 de Junho de 2008

Eu ainda não consegui testar direito esta nova funcionalidade, mas para a próxima versão do Rails teremos um novo generator para testes de performace.
Ao executar no terminal o seguinte comando:
[carlosbrando:edge]$ ./script/generate performance_test Login
exists test/performance/
create test/performance/login_test.rb
Será criado um arquivo chamado test/performance/login_test.rb. Veja [...]

Uma nova opção foi incluída aos métodos de cálculos do ActiveRecord (count, sum, average, minimum e maximum).
Ao fazer uso da opção :from, podemos sobrecarregar o nome da tabela na query gerada pelo ActiveRecord, o que não parece muito útil em um primeiro momento. Mas algo interessante que esta opção nos permite fazer é forçar o [...]

Edge Rails: Nova sintax para testes

Por Carlos Brando em 26 de Junho de 2008

No último podcast falamos que o DHH agora só quer saber de novidades, e realmente, toda vez que vejo um commit dele no Rails já vou correndo saber do que se trata, porque na maioria das vezes é algo novo.
Desta vez ele adicionou uma nova forma de se declarar testes, usando declarações test/do. Veja:
test “verify [...]

O método merge_conditions do ActiveRecord agora é um método público. O que significa que ele estará presente em todas os seus Models.
Este método faz exatamente o que o nome diz, você pode informar várias conditions separadas em seus parâmetros e ele junta tudo em uma condition só. Por exemplo:
class Post < ActiveRecord::Base
end

a = { :author [...]

Edge Rails: link_to com blocos

Por Carlos Brando em 23 de Junho de 2008

O método link_to recebeu uma atualização que permite seu uso com blocos. Isto é interessante para os casos onde temos textos muito longos no hyperlink. Por exemplo, se hoje fazemos assim:
<%= link_to “<strong>#{@profile.name}</strong> — <span>Check it out!!</span>”, @profile %>
Agora podemos fazer assim, que teremos o mesmo resultado:
<% link_to(@profile) do %>
<strong><%= @profile.name %></strong> — [...]

Lembra-se de quando falei da nova opção :validate para associações belongs_to?
A principio o padrão seria true, então só usaríamos esta novidade quando desejássemos desligar as validações. Mas isto foi alterado.
Agora o padrão é false, ou seja, todas as validações em associações belongs_to estarão desligadas como padrão e para ligarmos devemos usar a expressão :validate => [...]

Edge Rails: Enumerable#many? agora aceita blocos

Por Carlos Brando em 20 de Junho de 2008

Eu já falei sobre este método many? há alguns dias atrás. Este método recebeu uma nova implementação permitindo que ele aceite blocos também, que funciona exatamente como o método any?.
Vamos aos exemplos:
>> x = %w{ a b c b c }
# => ["a", "b", "c", "b", "c"]

>> x.many?
# => true

>> x.many? { |y| y == [...]

Edge Rails: Nova opção para associações, :validate

Por Carlos Brando em 20 de Junho de 2008

Foi adicionado ao Edge Rails uma nova opção para associações. Se incluirmos a opção :validate => false na associação o ActiveRecord salvará os dados do objeto pai, sem validar os objetos associados. Exemplo:
class AuditLog < ActiveRecord::Base
belongs_to :developer, :validate => false
end

log = AuditLog.create(:developer_id => 0 , :message => “”)
log.developer = Developer.new

puts log.developer.valid?
# => false

puts [...]

Edge Rails: Alteração no método concat

Por Carlos Brando em 16 de Junho de 2008

Se você tem o costume de evitar repetições em suas views criando helpers, com certeza já usou o método concat. Se você nunca usou este método, saiba que ele é como o puts para uma view.
A implementação atual do método recebe dois parâmetros, uma string com o texto que será exibido na view e um [...]

Edge Rails: Novo método Enumerable#many?

Por Carlos Brando em 14 de Junho de 2008

Um novo método foi adicionado ao módulo Enumerable: many?. E como o nome mesmo diz, ele verifica se a coleção possui mais de um objeto, ou em outras palavras se tem muitos objetos associados.
Este método é um alias para collection.size > 1. Vamos ver alguns exemplos:
>> [].many?
# => false

>> [ 1 ].many?
# => false

>> [ [...]

Edge Rails: Novo método Object#present?

Por Carlos Brando em 13 de Junho de 2008

Um novo método foi acrescentado à classe Object. O método present? é o equivalente a !Object#blank?.
Em outras palavras um objeto está presente se ele não for vazio. Mas o que é um objeto vazio?
class EmptyTrue
def empty?() true; end
end

a = EmptyTrue.new
b = nil
c = false
d = ”
e = ‘ ‘
g = ” [...]

Edge Rails: Está chegando o fim dos plugins?

Por Carlos Brando em 12 de Junho de 2008

No Rails 2.1, gems passaram a poder ser usadas como plugins em nossos projetos. Para isto bastava criar uma pasta chamada rails dentro do projeto do gem e incluir um arquivo init.rb.
Isto acrescentou um leque de novidades como config.gem e rake:gems. Mas isto nos faz pensar, já que agora eu posso carregar gems dentro da [...]

Edge Rails: StringQuestioneer renomeado para StringInquirer

Por Carlos Brando em 06 de Junho de 2008

Hoje de manhõ eu falei desta nova classe no Rails, e comentei que estavam querendo mudar o seu nome. Pois bem, isto aconteceu mesmo!
Agora a classe se chama StringInquirer. Além disso ela também foi incluída no namespace ActiveSupport.
Vejam o mesmo exemplo usado no artigo anterior, mas adaptado para funcionar com estas alterações:
class Cliente
def [...]

Edge Rails: StringQuestioneer

Por Carlos Brando em 06 de Junho de 2008

David acabou de incluir uma novidade interessante no Rails, a classe StringQuestioneer (alguns estão tentando mudar este nome para StringInquirer, mas por enquanto é StringQuestioneer mesmo).
Para entender como funciona, vou ter de explicar usando alguns exemplos. Vamos criar uma classe chamada Cliente que contém um método que retorna o status do cliente:
class Cliente
def [...]

Propaganda:

Últimos Artigos

SQLite3-Ruby 1.2.4 28/08/2008
Carlos Brando

SQLite3-Ruby 1.2.4

Jamis Buck acabou de anunciar o lançamento da versão 1.2.3 do gem SQLite3-Ruby. Entre as novidades está uma correção nas permissões dos arquivos[...] Leia Mais »