hello,
I installed a rails app on dreamhost, which I''m building based on the
Comatose plugin, and it went smoothly for the first version.
Now I uploaded a second version where I broke down the Comatose code
into a regular rails app, which works alright locally, but can''t get
routing to work the same as before on the server. I believe I
double-checked all gotchas mentioned about rails deployment on the DH
wiki - such as permissions, checking that dispatch.fcgi runs on the
command-line, checking .htaccess, killing all dispatch processes before
reloading, checking logs (nothing), running webbrick... and no luck yet.
I get a simple file not found.
here''s the routing config I have
in /config/routes.rb I have:
map.content_root ''''
and then there are two route_mappers, required from environment.rb,
which are loaded depending on the version of rails
in environment.rb:
if defined? ActionController::Routing::RouteSet::Mapper
require ''support/route_mapper''
else
require ''support/routes''
end
in /lib/support/routes.rb:
# Adds the content_root mapping support to the Rails Routset
class ActionController::Routing::RouteSet
def content_root( path, options={} )
opts = {
:index => '''',
:layout => ''content'',
:use_cache => ''true'',
:cache_path => nil,
:force_utf8 => Comatose::Options.force_utf8.to_s,
:named_route=> nil
}.merge(options)
# Ensure the controller is aware of the mount point...
ContentController.add_root(path, opts[:index])
# Add the route...
opts[:controller] = ''content''
opts[:action] =''show''
route_name = opts.delete(:named_route)
unless route_name.nil?
named_route( route_name, "#{path}/*page", opts )
else
if opts[:index] == '''' # if it maps to the root site URI,
name it
content_root
named_route( ''content_root'',
"#{path}/*page", opts )
else
connect( "#{path}/*page", opts )
end
end
end
def method_missing( name, *args )
if name.to_s.starts_with?( '''' )
opts = (args.last.is_a?(Hash)) ? args.pop : {}
opts[:named_route] = name.to_s #[9..-1]
content_root( *(args << opts) )
else
(1..2).include?(args.length) ? named_route(name, *args) :
super(name, *args)
end
end
end
and
in /lib/support/route_mapper.rb
# For use with ''Edge Rails''
class ActionController::Routing::RouteSet::Mapper
def content_root( path, options={} )
opts = {
:index => '''',
:layout => ''content'',
:use_cache => ''true'',
:cache_path => nil,
:force_utf8 => Comatose::Options.force_utf8.to_s,
:named_route=> nil
}.merge(options)
# Ensure the controller is aware of the mount point...
ContentController.add_root(path, opts[:index])
# Add the route...
opts[:controller] = ''content''
opts[:action] =''show''
route_name = opts.delete(:named_route)
unless route_name.nil?
named_route( route_name, "#{path}/*page", opts )
else
if opts[:index] == '''' # if it maps to the root site URI,
name it
content_root
named_route( ''content_root'',
"#{path}/*page", opts )
else
connect( "#{path}/*page", opts )
end
end
end
def method_missing( name, *args, &proc )
if name.to_s.starts_with?( '''' )
opts = (args.last.is_a?(Hash)) ? args.pop : {}
opts[:named_route] = name.to_s #[9..-1]
content_root( *(args << opts) )
else
super unless args.length >= 1 && proc.nil?
@set.add_named_route(name, *args)
end
end
end
I''m at a loss over how to debug this... while I read up on routes, any
pointers or ideas would be greatly appreciated! :)
thanks
Oliver
--
Posted via http://www.ruby-forum.com/.