
O core team do Rails tem trabalhando bastante ultimamente, está ficando até meio difícil de acompanhar o que está sendo feito. Desta vez vou fazer um resumão das principais alterações no código até agora, lembrando que tudo que isto ainda não está disponível para o público em geral. Mas quem quiser testar basta baixar a versão edge do Rails com o seguinte comando de dentro da sua aplicação:
rake rails:freeze:edge
Agora vamos ao que interessa.
Testes funcionais
Foram feitos ajustes nos testes funcionais gerados pelo scaffold para usar dados criados pelas fixtures e não usar nada hard-coded.
O que antes era assim:
<%= file_name %>
get :show, :id => 1
assert_response :success
end
get :edit, :id => 1
assert_response :success
end
<%= file_name %>
put :update, :id => 1, :<%= file_name %> => {}
assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
end
<%= file_name %>
assert_difference('<%= class_name %>.count', -1) do
delete :destroy, :id => 1
end
Ficou assim:
<%= file_name %>
get :show, :id => <%= table_name %>(:one).id
assert_response :success
end
def test_should_get_edit
get :edit, :id => <%= table_name %>(:one).id
assert_response :success
end
def test_should_update_<%= file_name %>
put :update, :id => <%= table_name %>(:one).id, :<%= file_name %> => {}
assert_redirected_to <%= file_name %>_path(assigns(:<%= file_name %>))
end
<%= file_name %>
assert_difference('<%= class_name %>.count', -1) do
delete :destroy, :id => <%= table_name %>(:one).id
end
Databases.rake
Foi feita uma alteração no arquivo databases.rake que antes só considerava um banco de dados local como estando em localhost para considerar também o IP 127.0.0.1.
Novas exceções
Foram criadas exceções especificas para os erros 400, 401 e 403, como BadRequest, UnauthorizedAccess e ForbiddenAccess respectivamente. Onde o erro 400 (BadRequest) corresponde a uma url mal formatada ou algum parâmetro com formatação incorreta. Os outros dois erros são exatamente o que o nome já diz.
Excesso de zelo?
É interessante notar o excesso de zelo de David com o código, onde ele se preocupa até mesmo com uma linha em branco a mais ou a menos. Ele também criou um novo branch chamado 2-1 caching. David trabalhou bastante realizando merge para este novo branch e também se dedicou em corrigir problemas e realizar melhorias em tudo que diz respeito a cache.
Ruby 1.9
As melhorias no código prevendo o Ruby 1.9 também continuam. Algo interessante aqui foi esta simples alteração nestes dois métodos do arquivo even_odd.rb que ficaram assim:
multiple_of? 2
end if RUBY_VERSION < '1.9'
!even?
end if RUBY_VERSION < '1.9'
Note que os métodos só serão definidos se a versão do ruby utilizada for anterior à 1.9, porque no Ruby 1.9 os métodos even? e odd? estão incorporados diretamente na classe Integer, tornando-os desnecessários no Rails. O mesmo ocorre no arquivo string.rb e starts_ends_with.rb onde o seguinte código foi acrescentado, já que os métodos start_with? e end_with? também foram implementados diretamente na classe String para a nova versão:
# arquivo string.rb
if RUBY_VERSION < '1.9'
include ActiveSupport::CoreExtensions::String::StartsEndsWith
else
alias starts_with? start_with?
alias ends_with? end_with?
end
# arquivo starts_ends_with.rb
base.class_eval do
alias_method :start_with?, :starts_with?
alias_method :end_with?, :ends_with?
end
end
Também foram feitos outros ajuste concernente as mudanças nas classe DateTime e ao suporte do UTF8.
Segurança
Uma outro novidade interessante foi a criação de uma chave secreta (criptografada) para usar com cookies de sessão. Isto basicamente aumenta a segurança. Para usar basta executar:
rake generate:secret
E incluir a chave no arquivo config/environment.rb.
Muitas outras alterações foram realizadas, na grande maioria para melhorar a compatibilidade do Rails com o Ruby 1.9. O foco agora é este.
Nenhum comentário
Trackbacks
- Nome do Jogo » Blog Archive » Edge Rails - Cache, SQLITE3, Rails 2.0.2 e mais
- Nome do Jogo » Blog Archive » Rails 2.0.2
- Nome do Jogo » Blog Archive » Edge Rails: Titleize, increment e DRY