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: [email protected]
>> Search: http://radiantcms.org/mailing-list/search/
>> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
>>
>>
>
> _______________________________________________
> Radiant mailing list
> Post: [email protected]
> Search: http://radiantcms.org/mailing-list/search/
> Site: http://lists.radiantcms.org/mailman/listinfo/radiant
_______________________________________________
Radiant mailing list
Post: [email protected]
Search: http://radiantcms.org/mailing-list/search/
Site: http://lists.radiantcms.org/mailman/listinfo/radiant