set 11 2010

Rails 3 – Substituindo o Prototype pelo JQuery

O Rails traz consigo o Prototype como framework para javascript. A integração entre os dois é tal que há inclusive alguns form helpers do Rails (tags para a camada de view que são renderizadas para HTML) que se apoiam em funcionalidades providas pelo Prototype. Mas, como não se pode sempre agradar a todos, alguns desenvolvedores preferem usar o JQuery – eu, inclusive. É possível manter ambos os frameworks no mesmo projeto Rails, mas isso pode ser um desperdício se o uso do Prototype for abolido totalmente do seu projeto. E obrigar o usuário a fazer download do framework a cada página visitada no seu site também não é lá muito educado, mesmo com o cache dos browsers. O que fazer então?

Bem, no Rails 3 beta a solução era criar um initializer na pasta config/initializers dentro da sua aplicação e implementá-lo assim:
(Estou assumindo que você fez o download do JQuery e o colocou na pasta public/javascripts e substituiu o arquivo rails.js antigo pelo correspondente para o JQuery)

#config/initializers/jquery.rb
module ActionView::Helpers::AssetTagHelper
  remove_const :JAVASCRIPT_DEFAULT_SOURCES
  JAVASCRIPT_DEFAULT_SOURCES = %w(jquery.js jquery-ui.js rails.js)
  reset_javascript_include_default
end

Mas agora, depois de lançada oficialmente a versão final do Rails 3.0, ficou um pouco mais fácil fazer a substituição do Prototype pelo JQuery. Basta adicionar a seguinte linha ao seu arquivo config/application.rb:

#config/application.rb
config.action_view.javascript_expansions[:defaults] = ['jquery-1.4.2', 'jquery-ui', 'rails']

Pronto, agora é só aproveitar as facilidades do JQuery com as novas características de javascript discreto do Rails 3.0 (sim, a tradução para “unobtrusive” é discreto, e não o “não obstrutivo” que tem aparecido por aí).

Comments are closed.

Alibi3col theme by Themocracy