Por Carlos Brando em 19 de Novembro de 2008
Já faz um tempo que existe uma dicussão sobre o nome do arquivo application.rb. O motivo é que como ele corresponde à classe ApplicationController, deveria chamar-se application_controller.rb.
Bom, depois de muita discussão isto foi alterado. Particularmente eu gostei, mas muitos não gostaram do fato de isto sair já para o Rails 2.2 sem um aviso prévio. [...]
Por Carlos Brando em 19 de Novembro de 2008
Foi adicionado ao método field_set_tag um parâmetro opcional para facilitar a formatação do HTML. Este parâmetro aceita todas as opções que o método tag já aceita. Exemplo:
<% field_set_tag nil, :class => ‘format’ do %>
<p>Some text</p>
<% end %>
O código acima retornará o seguinte:
<fieldset class=”format”>
<p>Some text</p>
</fieldset>
Todos os exemplos dados aqui funcionarão somente no [...]
Por Carlos Brando em 05 de Novembro de 2008
Quando uma exceção é dispara recebemos em nossa view uma mensagem semelhante a esta:
NoMethodError in Administration/groups#show
Showing app/views//_list.erb where line …
Quando na verdade deveríamos receber uma mensagem com o caminho completo do arquivo que disparou o erro, assim:
NoMethodError in Administration/groups#show
Showing app/views/administration/reports/_list.erb where line …
Este problema já está corrigido no Rails 2.2, facilitando nosso trabalho.
Todos os exemplos [...]
Por Carlos Brando em 04 de Novembro de 2008
Ao se criar um cookie existe uma opção esquecida por muita gente. A opção http_only faz com que o cookie somente seja acessível via HTTP, impedindo que um trecho de código em javascript consiga acessá-lo. O valor padrão para esta opção é false.
No Rails 2.2 o cookie que armazena a sessão do usuário terá a [...]
Por Carlos Brando em 23 de Outubro de 2008
Além da correção do bug no método count do ActiveRecord, conforme mencionei no post anterior. Outra correção de segurança vem com com a nova versão 2.1.2 do Rails.
Até agora no Rails as URLs passadas para o método redirect_to não passavam por um processo de santization. Isto era perigoso, pois abria brechas para que pessoas mal [...]
Por Carlos Brando em 23 de Outubro de 2008
A opção :confirm, muito utilizada em helpers como o link_to, agora também está disponível para o método image_submit_tag.
Esta opção faz com que uma caixa de confirmação, com uma pergunta personalizada, seja exibida ao se clicar na imagem. Se o usuário aceitar, o formulário é enviado normalmente, caso contrário nada acontece.
image_submit_tag(”delete.gif”, :confirm => “Are you sure?”)
# [...]
Por Carlos Brando em 20 de Outubro de 2008
Quando usávamos o método submit_tag com a opção :disable_with ligada, ele suprimia o parâmetro :commit quando o formulário era enviado para o servidor. Isto acontecia porque após submeter o formulário, o javascript do evento onclick primeiro desabilita o botão e só depois envia o formulário ao servidor, e como sabemos campos desabilitados não são enviados [...]
Por Carlos Brando em 06 de Outubro de 2008
Todas as mensagens de log que continham uma indicação do tempo que determinado processo levou para ser executado, foram alteradas para exibir o tempo em milisegundos.
Por exemplo, a mensagem:
Completed in 0.10000 (4 reqs/sec) | Rendering: 0.04000 (40%) | DB: 0.00400 (4%) | 200 OK [http://example.com]
Agora será exibida da seguinte forma:
Completed in 100ms (View: 40, DB: [...]
Por Carlos Brando em 29 de Setembro de 2008
No exemplo abaixo estou renderizando uma partial, e não estou informando qual variável ela deve usar para preencher o conteúdo. Hoje o Rails encara que como tenho uma variável de instância com o mesmo nome, implicitamente é esta que deve ser usada.
@customer = Customer.new(”Carlos Brando”)
render :partial => “customer”
Isto funciona mas é um pouco arriscado. A [...]
Por Carlos Brando em 24 de Setembro de 2008
Ontem eu mencionei aqui no blog que o helper country_select foi removido do Rails e virou um plugin. Eu não tinha entendido muito bem, mas o Rafael Mueller me ajudou a esclarecer o assunto.
O problema todo é que Taiwan segundo a norma ISO 3166, se chama na verdade “Taiwan, Province of China”. E foi exatamente [...]
Por Carlos Brando em 23 de Setembro de 2008
Lembra-se destes dois artigos?
Edge Rails: Usando a opção :accessible para fazer atribuições em massa no ActiveRecord
Edge Rails: Fazendo uso da opção accessible em formulários
Pois bem, esqueça. Esta funcionalidade foi removida do Rails, pois não estava totalmente completa e não daria tempo de terminar tudo até o lançamento do Rails 2.2.
Provavelmente ela deve voltar no futuro, [...]
Por Carlos Brando em 23 de Setembro de 2008
O helper country_select foi removido do Rails. Para quem não se lembra, este método retorna uma lista com todos os países do mundo.
O motivo deste método ter sido removido do Rails é que aparentemente ele será atualizado para utilizar a norma ISO 3166 para os nomes dos países. Em outras palavras, ao invés de gravar [...]
Por Carlos Brando em 15 de Setembro de 2008
Os métodos *_polymorphic_url e *_polymorphic_path, muito usados para gerar URLs a partir de registros do banco de dados, receberam um novo parâmetro opcional. Agora, além dos parâmetros normais eles também aceitam um hash de opções, tornando possível gerar rotas com parâmetros adicionais na url.
Vamos aos famosos exemplos, com o método equivalente nos comentários:
edit_polymorphic_url(@article, :param1 => [...]
Por Carlos Brando em 14 de Setembro de 2008
Muito provavelmente você já conhece o método cycle. Ele é muito usado para alternar as cores de linhas em um tabela, alterando a propriedade class de cada row.
@items = [1,2,3,4]
<table>
<% @items.each do |item| %>
<tr class=”<%= cycle(”even”, “odd”) -%>”>
<td>item</td>
</tr>
<% end %>
</table>
Um novo método foi [...]
Por Carlos Brando em 12 de Setembro de 2008
Rotas aninhadas já não é mais novidade. Ao configurar nossas rotas é comum codificarmos algo mais ou menos assim:
map.resources :users do |user|
user.resources :posts do |post|
post.resources :comments
end
end
No código acima estou deixando claro que meus usuários tem posts, que por sua vez tem comentários. Da forma como minhas rotas [...]
Por Carlos Brando em 11 de Setembro de 2008
Algumas vezes você assina o feed de um blog e de repente se depara com uma série de posts que já foram lidos aparecendo como se fossem novos no seu Google Reader. Já aconteceu com você?
Isto pode acontecer por vários motivos, mas não seria legal deixar isto acontecer com os assinantes do seu feed, correto?
Para [...]
Por Carlos Brando em 07 de Setembro de 2008
Vamos pegar o seguinte exemplo:
<!– Arquivo _layout.html.erb –>
inicio
<%= yield %>
fim
<!– uma view qualquer –>
<%= render :layout => ‘layout’ do %>
meio
<% end %>
O resultado deste código seria:
inicio
meio
fim
No exemplo acima estou incluindo uma partial dentro da minha view e usando o método yield para personalizar o conteúdo, que é passado dentro de um bloco através do método [...]
Por Carlos Brando em 28 de Agosto de 2008
Eu avisei no último artigo desta série que muitos métodos do Rails seriam alterados para deixarem de receber seus parâmetros da forma convencional e passariam a recebe-los via um Hash de opções.
Pois bem, agora chegou a vez dos métodos truncate, highlight, excerpt, word_wrap e auto_link serem atualizados. Veja como eles devem ser usados a partir [...]
Por Carlos Brando em 25 de Agosto de 2008
O método error_message_on é extremamente útil. Com ele podemos exibir mensagens de erro retornadas por determinados métodos em um objeto de uma forma bem simples.
<%= error_message_on “post”, “title” %>
<!– ou –>
<%= error_message_on @post, “title” %>
Isto fará com que uma mensagem de erro seja exibida na sua página dentro de uma tag DIV, caso um erro [...]
Por Carlos Brando em 22 de Agosto de 2008
Às vezes você tem de rodar múltiplas cópias do mesmo projeto. Talvez você tenha um produto que será usado por vários clientes, ou talvez você apenas deseje rodar uma versão de teste e produção do seu software ao mesmo tempo.
A forma mais simples de se fazer isto é ter múltiplos (sub)domínios com uma instância do [...]
Por Carlos Brando em 20 de Agosto de 2008
O método number_with_delimiter recebeu uma nova implementação. Além de uma melhora no código para que fique mais limpo a assinatura do método também mudou. Veja a antiga:
def number_with_delimiter(number, delimiter=”,”, separator=”.”)
# Exemplos de uso
number_with_delimiter(12345678) # => 12,345,678
number_with_delimiter(12345678.05) # => 12,345,678.05
number_with_delimiter(12345678, “.”) # => 12.345.678
number_with_delimiter(98765432.98, ” “, “,”)
E a nova:
def number_with_delimiter(number, *args)
# Exemplos de uso
number_with_delimiter(12345678) # => [...]
Por Carlos Brando em 17 de Agosto de 2008
Se você ainda não sabe o que são ETags, leia o último post desta série.
Este recurso já foi efetivamente incluido no branch oficial do Rails, mas junto com ele também ganhamos mais dois novos métodos que devem facilitar a forma como vamos implementar isto em nosso código. Os métodos etag! e last_modified!.
Veja a implementação destes [...]
Por Carlos Brando em 15 de Agosto de 2008
O Carlos Júnior já escreveu sobre isto no blog da milk-it. Provavelmente teremos suporte a ETags no Rails 2.2. Eu disse provavelmente porque isto ainda não foi incluído no branch oficial do Rails, mas como é algo importante e está sendo feito pelo core team, é quase certo de que será.
Antes de começar a falar [...]
Por Carlos Brando em 12 de Agosto de 2008
Muitas vezes a opção :index do método select pode ser útil, como por exemplo quando se precisa criar diversos dropdowns dinamicamente em uma página.
Até hoje o método fields_for não repassava esta opção para métodos como select, collection_select, country_select e time_zone_select, o que limitava o seu uso em determinados casos.
Isto já foi corrigido para a próxima [...]
Por Carlos Brando em 11 de Agosto de 2008
O Rails recebeu mais um parâmetro de configuração que faz com que ele emita um alerta caso esteja renderizando um template fora do diretório especificado para views. Isto é muito bom já que arquivos fora dos diretórios especificados para views não são armazenados em cache o que resulta em mais operações no disco.
Para começar a [...]