Yeah, that might work, but eeewwww! :) Wouldn't it be better to modify Radiant a bit to have it be clean? It's really a fairly non-invasive change to Radiant.
On Jun 2, 2007, at 11:38 AM, Sean Cribbs wrote: > Yeah, that's why I was saying perhaps a parse-and-eval method might > work: > > 1) Load the "#{RAILS_ROOT}/config/routes.rb" file as text. > 2) Find and strip out the lines that contain the beginning and end of > the block. > 3) eval the file in the local context of the define_routes block. > > Not elegant, I know, but effective. > > Sean > > Matt Parrish wrote: >> Yes, that's basically what my extension is doing. But it does >> require a slight change to config/routes.rb, because vendor/radiant/ >> config/routes.rb is where the ActionController::Routing::Routes.draw >> { |map| } block is. And I don't think we can have that there and in >> config/routes.rb >> >> Matt Parrish >> http://www.pearware.org >> >> >> On Jun 2, 2007, at 11:00 AM, Sean Cribbs wrote: >> >> >>> Here's another option, one you may have considered already. >>> >>> Extension routes are loaded before the Radiant routes and all of >>> this is >>> taken care of by Radiant::Initializer. You could either extend >>> Radiant::Initializer or use the define_routes block in the >>> extension to >>> load the primary routes.rb. I'm not sure whether you should parse, >>> process, and eval it or some other method, but it is conceivably >>> possible. I think it has to do with generators or rake tasks, but >>> Radiant does something similar to redefine some stock Rails stuff. >>> >>> Sean >>> >>> Matt Parrish wrote: >>> >>>> Okay, cool. As for the routes, my extension currently has the user >>>> modify config/routes.rb a bit since /vendor/radiant/config/ >>>> routes.rb >>>> calls the Rails route initialization. If we could change it so >>>> that >>>> Radiant hooks into that process differently, then the developer can >>>> write config/routes.rb as is done traditionally. It doesn't look >>>> like the Rails guys have given an easy way to hook into that >>>> process, >>>> although it could easily be a one line call to Radiant to load its >>>> routes at the end of the ActionController::Routing::Routes.draw { | >>>> map| } block. However Radiant's /vendor/radiant/config/routes.rb >>>> would need to change slightly to be like how extensions define >>>> routes. >>>> >>>> Here's the change I see. Instead of how Radiant currently does >>>> config/routes.rb and vendor/radiant/config/routes.rb as >>>> >>>> load File.join(RADIANT_ROOT, "config", "routes.rb") >>>> >>>> and >>>> >>>> ActionController::Routing::Routes.draw do |map| >>>> >>>> # Admin Routes >>>> map.with_options(:controller => 'admin/welcome') do |welcome| >>>> >>>> ... >>>> >>>> end >>>> >>>> >>>> respectively. It could look like this: >>>> >>>> ActionController::Routing::Routes.draw do |map| >>>> >>>> # Place for Rails Routes >>>> map.with_options(:controller => 'admin/welcome') do |welcome| >>>> ... >>>> >>>> RadiantRoutes.define_routes(map) >>>> end >>>> >>>> and >>>> >>>> class RadiantRoutes >>>> def self.define_routes(map) >>>> >>>> # Admin Routes >>>> map.with_options(:controller => 'admin/welcome') do |welcome| >>>> >>>> ... >>>> >>>> end >>>> end >>>> >>>> What do you think about making a change like that? We would just >>>> need to make sure that config/routes.rb can see the RadiantRoutes >>>> class. It wouldn't affect the current Radiant usage, but would >>>> allow >>>> for developers to work with config/routes.rb like normal. The >>>> RadiantOnRails extension is like the first solution, except that I >>>> have the user create a class RailsRoutes with a define_routes >>>> method >>>> that my extension calls. I think the second solution here would be >>>> preferred. >>>> >>>> Matt Parrish >>>> http://www.pearware.org >>>> >> >> _______________________________________________ >> Radiant mailing list >> Post: Radiant@lists.radiantcms.org >> Search: http://radiantcms.org/mailing-list/search/ >> Site: http://lists.radiantcms.org/mailman/listinfo/radiant >> >> > > _______________________________________________ > Radiant mailing list > Post: Radiant@lists.radiantcms.org > Search: http://radiantcms.org/mailing-list/search/ > Site: http://lists.radiantcms.org/mailman/listinfo/radiant _______________________________________________ Radiant mailing list Post: Radiant@lists.radiantcms.org Search: http://radiantcms.org/mailing-list/search/ Site: http://lists.radiantcms.org/mailman/listinfo/radiant