Engines já eram! Vida longa aos engines!
Posted on January 03, 2007
Do Rails Engines : Com a chegada próxima do Rails 1.2, achei que seria uma grande oportunidade de revisitar a maneira que os plugins engines operam internamente. No último ano ou um pouco mais, o plugin de engines causaram certo distúrbio (e ganharam alguns admiradores, mas a despeito de alguns mal entendidos e opiniões, as pessoas ainda acham eles úteis.
Entretanto, Rails está sempre mudando, assim como o plugin de engines que precisa mudar também …
Engines 1.2: Engines já eram
Quando o Rails 1.2 for lançado, a noção de ‘instalar uma engine’ se tornará sem sentido. Deixe-me tornar isso mais claro – não haverá mais distinção significante entre uma engine e um plugin. Para entender as implicações disso, vamos olhar o que distinguia um engine de um plugin em primeiro lugar.
Init_engine.rb se foi – o controle da ordem de carga do plugin vai no núcleo do Rails
A única funcionalidade que distinguia um engine de um plugin era a substituição do init.rb do plugin por um init_engine.rb. Só isso. Todo o resto era apenas coisas extras que um plugin poderia conter. A razão porque isso foi necessário era porque o plugin de engine precisava ser carregado antes de qualquer outro plugin que usasse suas funcionalidades, mas o Rails por si só não podia garantir isso. Então, Engines.start tomava essa responsabilidade, e a noção de ‘uma engine’ em vez de ‘um plugin’ nascia.
Felizmente, agora podemos fazer isso nativamente no Rails. Com o lançamento do engines 1.2, init_engine.rb se vai em favor de usar o array suportado config.plugins:
Rails::Initializer.run do |config|
# other stuff
config.plugins = [“engines”, “your_plugin”, “another_plugin”, “and_so_on”]
# etc …
end
Eles são todos apenas plugins agora
Uma vez com o plugin de engines carregado, qualquer plugin com diretórios app, db ou public_asset podem automaticamente tirar vantagem das funcionalidades que o plugin de engines fornece, sem qualquer trabalho extra de você. Controller em seu seu_plugin/app/controllers simplemente funcionam. Stylesheets, javascripts e imagens no subdiretório seu_plugin/public_assets estão disponíveis automaticamente usando helpers normais do Rails que você já deve ter se acostumado.
Plugins até contém migrations e routes, todos compartilhados com sua aplicação principal de uma maneira que promove desenvolvimento mais eficiente sem ficar no seu caminho ou colocando peso em sua aplicação.
E agora … ?
Nenhuma dessas funcionalidades foi oficialmente lançada ainda (precisamos do Rails 1.2 antes de podermos fazer isso), mas você pode brincar agora puxando o branch 1.2 de lançamento. Tenha em mente que nunca é uma boa idéia rodar código candidato para lançamento em ambientes de produção, naturalmente.
Publicarei mais informações sobre as mudanças e novas funcionalidades sobre Engines 1.2 aqui nos próximos dias; se ainda não fez, cadastre o feed RSS. Feliz codificação!
blog comments powered by Disqus
Archives
- February 12(2)
- December 11(1)
- November 11(4)
- October 11(6)
- September 11(5)
- August 11(1)
- July 11(5)
- May 11(4)
- April 11(11)
- March 11(4)
- February 11(3)
- January 11(4)
- December 10(9)
- November 10(2)
- October 10(10)
- September 10(4)
- August 10(6)
- July 10(14)
- June 10(16)
- May 10(8)
- April 10(14)
- March 10(9)
- February 10(6)
- January 10(14)
- December 09(10)
- November 09(10)
- October 09(7)
- September 09(19)
- August 09(4)
- July 09(12)
- June 09(7)
- May 09(12)
- April 09(11)
- March 09(9)
- February 09(9)
- January 09(12)
- December 08(14)
- November 08(20)
- October 08(15)
- September 08(18)
- August 08(25)
- July 08(13)
- June 08(21)
- May 08(29)
- April 08(27)
- March 08(12)
- February 08(32)
- January 08(31)
- December 07(27)
- November 07(30)
- October 07(25)
- September 07(28)
- August 07(16)
- July 07(15)
- June 07(16)
- May 07(7)
- April 07(13)
- March 07(8)
- February 07(9)
- January 07(24)
- December 06(17)
- November 06(17)
- October 06(15)
- September 06(38)




