No forum do RubyOnbr gerou-se a dúvida de criar um mini app para ser "embutido" em outros projetos Rails2.
Para entendermos... o rails 3 possui um conceito de mini app onde você reutiliza esse aplicativo em muitos projetos.
Precisei contruir um engine para o RAILS 2, como não tem para esta versão do Rails, precisei carregar minha estrutura MVC no projeto principal da seguinte forma...
As gems possuem um padrão de executar o arquivo init.rb do diretorio rails ao ser chamada pelo projeto princinpal.
Abaixo a estrutura da minha gem:
. |-app |---controllers `minha_controller.rb |---helpers `minha_helper.rb |---models `minha_model.rb |---views |-----minha `new.rb |-config `minhas_rotas.rb |-lib |-rails `init.rb
# rails/init.rb begin require File.dirname(__FILE__)+'/../config/minhas_rotas.rb' ActionView::Helpers.send :include, ::MinhaHelper %w{ models controllers }.each do |dir| path = File.expand_path(File.join(File.dirname(__FILE__), '..', 'app', dir)) ActiveSupport::Dependencies.autoload_paths << path ActiveSupport::Dependencies.autoload_once_paths.delete(path) end rescue => e raise e.message.inspect endMinhas rotas são apenas um module...
#config/minhas_rotas.rb module RelatorioDinamicoRoutes def add(map) map.resources :minha_gem end end... para serem adicionas no arquivo routes.rb do projeto principal
#MyProject/config/routes.rb ActionController::Routing::Routes.draw do |map| MinhasRotas.add( map ) end
Comentários
Postar um comentário