Rails 1.2 / Theme support plugin issue: Fix

This is to answer one of my old issues, that I was having using Theme
support plugin using with Rails 1.2.

When you get an latest edge Rails update and run your application which
has Theme support plugin you will get following error

/script/…/config/…/vendor/plugins/theme_support/lib/patches/routeset_ex.rb:26:in
create_theme_routes': undefined methodnamed_route’ for
#ActionController::Routing::RouteSet:0x1313b78 (NoMethodError)
from
./script/…/config/…/vendor/plugins/theme_support/lib/patches/routeset_ex.rb:13:in
`draw’
from ./script/…/config/…/config/routes.rb:1

Fix that I found for this is

Go to vendor/plugins/theme_support/lib/patches/routeset_ex.rb

Replace “draw” method with following

def draw
clear!
create_theme_routes
yield Mapper.new(self)
named_routes.install
end

In create_theme_routes method

  • replace named_route with add_named_route
  • replace connect with add_route

So your create_theme_routes should look like this

def create_theme_routes
add_named_route ‘theme_images’, “/themes/:theme/images/:filename”,
:controller=>‘theme’, :action=>‘images’
add_named_route ‘theme_stylesheets’,
“/themes/:theme/stylesheets/:filename”, :controller=>‘theme’,
:action=>‘stylesheets’
add_named_route ‘theme_javascript’,
“/themes/:theme/javascript/:filename”, :controller=>‘theme’,
:action=>‘javascript’

add_route "/themes/*whatever", :controller=>'theme',

:action=>‘error’
end

This should do the trick. I have tested this on Rails 1.2.1 and 1.2.2

Thank you!

Rajesh Shetty wrote:

This is to answer one of my old issues, that I was having using Theme
support plugin using with Rails 1.2.

When you get an latest edge Rails update and run your application which
has Theme support plugin you will get following error

/script/…/config/…/vendor/plugins/theme_support/lib/patches/routeset_ex.rb:26:in
create_theme_routes': undefined methodnamed_route’ for
#ActionController::Routing::RouteSet:0x1313b78 (NoMethodError)
from
./script/…/config/…/vendor/plugins/theme_support/lib/patches/routeset_ex.rb:13:in
`draw’
from ./script/…/config/…/config/routes.rb:1

Fix that I found for this is

Go to vendor/plugins/theme_support/lib/patches/routeset_ex.rb

Replace “draw” method with following

def draw

Thanks for Rajesh’s answer. But how about rails1.2.3, i got such error:
=> Booting WEBrick…
d:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:246:in activate': can't activate rai ls (= 1.1.6), already activated rails-1.2.3] (Gem::Exception) from d:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:264:inactivate’
from d:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:263:in each' from d:/ruby/lib/ruby/site_ruby/1.8/rubygems.rb:263:inactivate’
from
d:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in re quire' from d:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_suppo rt/dependencies.rb:495:inrequire’
from
d:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_suppo
rt/dependencies.rb:342:in new_constants_in' from d:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_suppo rt/dependencies.rb:495:inrequire’
from
d:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/servers/web
rick.rb:52
from
d:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in ge m_original_require' from d:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:inre
quire’
from
d:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_suppo
rt/dependencies.rb:495:in require' from d:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_suppo rt/dependencies.rb:342:innew_constants_in’
from
d:/ruby/lib/ruby/gems/1.8/gems/activesupport-1.4.2/lib/active_suppo
rt/dependencies.rb:495:in require' from d:/ruby/lib/ruby/gems/1.8/gems/rails-1.2.3/lib/commands/server.rb:3 9 from d:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:inge
m_original_require’
from
d:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:27:in `re
quire’
from script/server:3

Can you do me a favour?
Regards.
captain

    clear!
    create_theme_routes
    yield Mapper.new(self)
    named_routes.install

end

In create_theme_routes method

  • replace named_route with add_named_route
  • replace connect with add_route

So your create_theme_routes should look like this

def create_theme_routes
add_named_route ‘theme_images’, “/themes/:theme/images/:filename”,
:controller=>‘theme’, :action=>‘images’
add_named_route ‘theme_stylesheets’,
“/themes/:theme/stylesheets/:filename”, :controller=>‘theme’,
:action=>‘stylesheets’
add_named_route ‘theme_javascript’,
“/themes/:theme/javascript/:filename”, :controller=>‘theme’,
:action=>‘javascript’

add_route "/themes/*whatever", :controller=>'theme',

:action=>‘error’
end

This should do the trick. I have tested this on Rails 1.2.1 and 1.2.2

Sorry for real delayed answer. I have not played with Rails 1.2.3
release yet. If I have any update for that I will post it here

But I have another question…

How do you get the layout part working?

For example, if a theme has a particular layout that I want to use…
what do I need to fix in order to be able to use a theme’s layout?

Andy

Rajesh,

Thank you for posting this fix!
I’ve been hitting problem after problem while learning how to use Ruby
on Rails (and themes,) and this fixed my problem!

I’m using Rails 1.2.3 and the fix you described WORKS for Rails 1.2.3
on Mac OS X (at least).
Thanks again!

Andy

Rajesh Shetty wrote:

Sorry for real delayed answer. I have not played with Rails 1.2.3
release yet. If I have any update for that I will post it here